Я создал 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_sha
of 0000000000000000000000000000000000000000
. Это конвейеры, запускаемые вне слияний с master
, поэтому они меня не интересуют.
Отфильтровать их так же просто, как [?before_sha != '0000000000000000000000000000000000000000
]
История трансформации
Как видите, в правой части экрана есть небольшой виджет, показывающий примененные вами преобразования. Вы можете использовать его для перехода вперед и назад по истории преобразования и отката/повторного применения изменений к вашим данным.
3. Последнее преобразование
Последнее преобразование, которое мне нужно, чтобы начать извлекать полезную информацию, должно превратить мои выходные данные в набор записей.
Я выбираю только несколько полей и превращаю результат в массив массивов. Это правильный формат для экспорта в формате CSV.
Google Таблицы
Наконец, я могу загрузить свой CSV-экспорт в Google Таблицы и отобразить нужную мне информацию.
Вывод
Chisel все еще находится на самой ранней стадии разработки и в значительной степени адаптирован к моему конкретному варианту использования, но если вы видите, что этот инструмент может быть полезен и вам, перейдите в репозиторий Github и предложите улучшения, которые вы хотели бы видеть.
Если вам понравился этот пост и вы хотите узнать больше о Chisel, подпишитесь на меня в Твиттере!
Избранное изображение от Dominik Scythe на Unsplash
Первоначально опубликовано на https://alediaferia.com 8 мая 2020 г.