Каковы различия между GitHub Actions и другими инструментами CI, такими как Jenkins?

GitHub анонсировал новую функцию GitHub Actions.

Я положительно оцениваю преимущества инструментов CI, таких как Jenkins, для автоматического построения или тестирования, для которых GitHub Actions предназначена для использования в будущем.

Наличие репозитория на GitHub и использование внешнего инструмента CI дает огромное преимущество, позволяя перемещать репозиторий на другую платформу Git (или даже локальную) без переписывания всего процесса CI. С GitHub Actions вы более или менее привязаны к экосистеме GitHub.

Я предполагаю, что интеграция Действия GitHub будет более беглой в родной среде, но есть ли другие преимущества или недостатки, кроме этого?

0 ответов

Я работаю с экшенами GitHub на постоянной основе уже пару месяцев.

Еще рано (июнь 2019), но вот мой список:

Преимущества:

  1. Действия GitHub - это просто последовательные запуски докеров. Очень легко рассуждать и отлаживать. Воспроизведение среды сборки для контейнерного Travis возможно, но сложнее. В действиях GitHub это простоdocker build docker run далеко.
  2. По умолчанию отдельные действия в рабочем процессе изолированы. Вы можете использовать совершенно другую вычислительную среду, например, для компиляции и тестирования. Travis CI (и я думаю, что другие "традиционные" CI) будут запускать все "этапы" (~ действия) в одной и той же вычислительной среде. Опять же, действия GitHub намного проще рассуждать и отлаживать.
  3. В main.workflowspec (подмножество HCL и на самом деле просто ориентированный ациклический граф) с открытым исходным кодом. В любом случае, это довольно тонкая оболочка вокруг Docker, поэтому привязка к платформе, возможно, минимальна.
  4. Есть уже с открытым исходным кодом на GitHub повторной реализации действий, такие как акт для локального тестирования.
  5. У вас есть готовый доступ к GitHub API с (несколько ограниченной) аутентификацией из коробки.
  6. Там может быть Энергичное сообщество (рынок?), Где люди могут разделить действия. Например, я повторно использую действия развертывания, созданные разными людьми в разных экосистемах.
  7. Направленный ациклический граф (DAG) и визуальный редактор для main.workflows - возможно, хороший способ смоделировать CI/CD в частности и рабочие процессы в целом. К этому нужно привыкнуть, но обобщает хорошо.
  8. Действия GitHub могут намного больше, чем просто CI! У вас под рукой практически весь API в качестве входных и выходных данных.

Недостатки:

Действия GitHub (все еще?) Иногда имеют неожиданно фундаментальные ограничения на данный момент (июнь 2019 г.).

  1. Нет нативного кеширования. Вы получаете кеширование изображений и слоев (это сложно), но ничего больше. Для артефактов сборки вам нужно развернуть собственный кеш (через AWS, Azure и т. Д.), Что может потребовать много работы. (Здесь вы можете увидеть хакерскую настройку.
  2. Удивительно, но нет поддержки pull-реквестов от форков. Это снова немного сложно и понятно с точки зрения безопасности, но в настоящее время невозможно выполнить действия а) против секретов принимающего репо форка PR (базового) и / или б) против предполагаемого результата слияния. PR форка (это то, что делает Трэвис). Для рабочего процесса, включающего форки, действия GitHub в значительной степени непригодны для использования в качестве инструмента CI/CD.
  3. Единая платформа, это все, что вы можете запустить внутри докера, например, какой-нибудь дистрибутив Linux. Это вряд ли изменится, но может быть приемлемым ограничением. Вы всегда можете добавить действие для вызова других межплатформенных сервисов CI/CD.
  4. Документация по-прежнему довольно скудная. Не так много лучших практик или строительных лесов.
  5. Качество и широта опубликованных действий GitHub (по крайней мере, на торговой площадке) все еще довольно низки / ограничены. Посмотрим, взлетит ли это.
  6. Не лучший способ юнит-тестирования действий. (Я что-то вместе взломал, но не совсем уверен).

Наличие репозитория на 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

См. Документацию в разделе " Размещение собственных бегунов".

Другие вопросы по тегам