Я создал chisel.cloud в свободное время, чтобы автоматизировать то, что я делал, чтобы получить представление о времени моего конвейера Gitlab.

В этом посте я собираюсь показать вам, как я это сделал, в надежде, что это может быть полезно и вам.

Как вы можете видеть на картинке выше, Chisel все еще находится на довольно ранней стадии. Я все равно решил опубликовать его, потому что мне любопытно узнать, может ли что-то подобное быть полезным для вас или нет.

Понимание времени развертывания

Цель этого упражнения заключалась в том, чтобы я лучше понял время развертывания (от сборки до запуска в производство) моего проекта и выработал подход, основанный на данных, к тому, что делать дальше.

Поскольку рассматриваемый проект использует Gitlab CI/CD, я подумал о том, чтобы воспользоваться его API для извлечения такого рода информации.

API конвейеров Gitlab

API конвейеров Gitlab довольно прост, но некоторые различия между API /pipelines и /pipelines/:id означают, что вам нужно немного поработать над композицией, чтобы получить интересные данные.

Вот как я это сделал.

1. Сверните свои успешные пайплайны

Первое, что я сделал, это получил успешные пайплайны для моего проекта.

Как видите, этот API возвращает минимальную информацию о каждом конвейере. Что мне нужно было сделать дальше, чтобы понять время конвейера, так это получить дополнительную информацию для каждого конвейера.

Долото — Трансформация

Chisel предоставляет удобный инструмент преобразования, который использует JMESPath, чтобы помочь вам манипулировать JSON, возвращаемым API, с которым вы работаете. Я использовал его для извлечения идентификаторов конвейера из возвращенного ответа.

Chisel показывает вам предварительный просмотр вашего преобразования в реальном времени. На данный момент достаточно чего-то простого, например [*].id. Результатом является массив идентификаторов конвейера.

Сразу после получения всех необходимых мне идентификаторов я могу применить другое преобразование, чтобы превратить эти идентификаторы в объекты конвейера со всей соответствующей информацией, необходимой для моей статистики.

В Chisel есть еще один тип преобразования, называемый Выборка, который помогает преобразовать выбранные значения в результат извлечения из URL-адреса.

В частности, вы можете использовать заполнитель ${1} для передачи сопоставленного значения. В моем случае каждый идентификатор сопоставляется с /pipelines/${1} API.

Результат довольно прост.

2. Отфильтруйте то, что вам не нужно

Как видите, некоторые из возвращаемых пайплайнов имеют значение before_shaof 0000000000000000000000000000000000000000. Это конвейеры, запускаемые вне слияний с master, поэтому они меня не интересуют.

Отфильтровать их так же просто, как [?before_sha != '0000000000000000000000000000000000000000]

История трансформации

Как видите, в правой части экрана есть небольшой виджет, показывающий примененные вами преобразования. Вы можете использовать его для перехода вперед и назад по истории преобразования и отката/повторного применения изменений к вашим данным.

3. Последнее преобразование

Последнее преобразование, которое мне нужно, чтобы начать извлекать полезную информацию, должно превратить мои выходные данные в набор записей.

Я выбираю только несколько полей и превращаю результат в массив массивов. Это правильный формат для экспорта в формате CSV.

Google Таблицы

Наконец, я могу загрузить свой CSV-экспорт в Google Таблицы и отобразить нужную мне информацию.

Вывод

Chisel все еще находится на самой ранней стадии разработки и в значительной степени адаптирован к моему конкретному варианту использования, но если вы видите, что этот инструмент может быть полезен и вам, перейдите в репозиторий Github и предложите улучшения, которые вы хотели бы видеть.

Если вам понравился этот пост и вы хотите узнать больше о Chisel, подпишитесь на меня в Твиттере!

Избранное изображение от Dominik Scythe на Unsplash

Первоначально опубликовано на https://alediaferia.com 8 мая 2020 г.