Каковы различия между GitHub Actions и другими инструментами CI, такими как Jenkins?
GitHub анонсировал новую функцию GitHub Actions.
Я положительно оцениваю преимущества инструментов CI, таких как Jenkins, для автоматического построения или тестирования, для которых GitHub Actions предназначена для использования в будущем.
Наличие репозитория на GitHub и использование внешнего инструмента CI дает огромное преимущество, позволяя перемещать репозиторий на другую платформу Git (или даже локальную) без переписывания всего процесса CI. С GitHub Actions вы более или менее привязаны к экосистеме GitHub.
Я предполагаю, что интеграция Действия GitHub будет более беглой в родной среде, но есть ли другие преимущества или недостатки, кроме этого?
0 ответов
Я работаю с экшенами GitHub на постоянной основе уже пару месяцев.
Еще рано (июнь 2019), но вот мой список:
Преимущества:
- Действия GitHub - это просто последовательные запуски докеров. Очень легко рассуждать и отлаживать. Воспроизведение среды сборки для контейнерного Travis возможно, но сложнее. В действиях GitHub это просто
docker build
docker run
далеко. - По умолчанию отдельные действия в рабочем процессе изолированы. Вы можете использовать совершенно другую вычислительную среду, например, для компиляции и тестирования. Travis CI (и я думаю, что другие "традиционные" CI) будут запускать все "этапы" (~ действия) в одной и той же вычислительной среде. Опять же, действия GitHub намного проще рассуждать и отлаживать.
- В
main.workflow
spec (подмножество HCL и на самом деле просто ориентированный ациклический граф) с открытым исходным кодом. В любом случае, это довольно тонкая оболочка вокруг Docker, поэтому привязка к платформе, возможно, минимальна. - Есть уже с открытым исходным кодом на GitHub повторной реализации действий, такие как акт для локального тестирования.
- У вас есть готовый доступ к GitHub API с (несколько ограниченной) аутентификацией из коробки.
- Там может быть Энергичное сообщество (рынок?), Где люди могут разделить действия. Например, я повторно использую действия развертывания, созданные разными людьми в разных экосистемах.
- Направленный ациклический граф (DAG) и визуальный редактор для
main.workflow
s - возможно, хороший способ смоделировать CI/CD в частности и рабочие процессы в целом. К этому нужно привыкнуть, но обобщает хорошо. - Действия GitHub могут намного больше, чем просто CI! У вас под рукой практически весь API в качестве входных и выходных данных.
Недостатки:
Действия GitHub (все еще?) Иногда имеют неожиданно фундаментальные ограничения на данный момент (июнь 2019 г.).
- Нет нативного кеширования. Вы получаете кеширование изображений и слоев (это сложно), но ничего больше. Для артефактов сборки вам нужно развернуть собственный кеш (через AWS, Azure и т. Д.), Что может потребовать много работы. (Здесь вы можете увидеть хакерскую настройку.
- Удивительно, но нет поддержки pull-реквестов от форков. Это снова немного сложно и понятно с точки зрения безопасности, но в настоящее время невозможно выполнить действия а) против секретов принимающего репо форка PR (базового) и / или б) против предполагаемого результата слияния. PR форка (это то, что делает Трэвис). Для рабочего процесса, включающего форки, действия GitHub в значительной степени непригодны для использования в качестве инструмента CI/CD.
- Единая платформа, это все, что вы можете запустить внутри докера, например, какой-нибудь дистрибутив Linux. Это вряд ли изменится, но может быть приемлемым ограничением. Вы всегда можете добавить действие для вызова других межплатформенных сервисов CI/CD.
- Документация по-прежнему довольно скудная. Не так много лучших практик или строительных лесов.
- Качество и широта опубликованных действий GitHub (по крайней мере, на торговой площадке) все еще довольно низки / ограничены. Посмотрим, взлетит ли это.
- Не лучший способ юнит-тестирования действий. (Я что-то вместе взломал, но не совсем уверен).
Наличие репозитория на GitHub и использование внешнего инструмента CI имеет огромное преимущество, позволяя переместить репозиторий на другую платформу репозитория Git (или даже локальную) без перезаписи всего процесса CI.
С GitHub Actions вы более или менее привязаны к экосистеме GitHub.
Да, а с ноября 2019 года - чуть меньше:
См. Объявление Джо Борна" Самостоятельные раннеры для GitHub Actions сейчас на стадии бета-тестирования".
У вас могут быть самостоятельные бегуны, что означает:
- Ваша среда, ваши инструменты,
- Машина любого размера или конфигурации,
- Безопасный доступ и сеть,
- Поддержка больших нагрузок.
Для поддержки использования автономных бегунов в ваших рабочих процессах мы расширили возможности использования
runs-on
ключ.
При регистрации ваших самостоятельных бегунов каждому из них дается метка только для чтения, размещенная на собственном хостинге, которую вы можете использовать сruns-on
.
Вот пример:# Use Any available Self-hosted runners connected to repo runs-on: self-hosted
См. Документацию в разделе " Размещение собственных бегунов".