Создание трубопроводов и строительные агенты с использованием продуктов CI/CD не являются новыми. Последнее поколение из них все переехало в докер. Docker создает чистую и гибкую среду сборки, которая оптимизирует стадии монтажа и комбинацию инструментов.
Это создало новую проблему. Либо вы должны сделать свой собственный агент по сборке Docker Build и устанавливать то, что вам нужно, или вы должны перемещать артефакты из строить контейнеры для развертывания контейнеров. Получение узла и AWS CLI на одной машине может быть удивительно сложнее в контролируемой среде.
Действия GitHub сделали существенное улучшение этого процесса. Вы можете раскрутить контейнер Docker с помощью автоматической установки вашей кодовой базы. Результаты процесса могут быть сохранены в монтируемый каталог, а затем контейнер уходит.
Мы недавно сделали проект, который использовал действия GitHub для непрерывной интеграции/развертывания. Этот проект последовал за типичным процессом развертывания облака, используя AWS CLI. Эти шаги:
- Оформить заказ код
- Настройте доступ к среде AWS
- Это требует ключей доступа и устанавливает их в соответствующие переменные ENV-развертывающие стеки — в нашу ситуацию не было кода для создания. Это должно было бы произойти до этого развертывания. И вам понадобится AWS SAM или некоторый вариант.
Вот базовый рабочий процесс. Поместите следующий код в. Github/WorksPlows в вашем репо, и действие будет работать после нажатия этого кода. На: толчок
name: Build on every push to the infrastructure jobs: deploy_cloudformation: name: Deployment runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v1 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id:aws-secret-access-key: aws-region: - name: Deploy Base Stack run: aws cloudformation deploy \ --no-fail-on-empty-changeset \ --template-file cloudformation.yaml \ --stack-name < STACK_NAME > \ --parameter-overrides file://parameters-$(ENV).json
Последняя среда Ubuntu дает вам виртуальную машину, которая поставляется со следующим:
- AWS CLI
- Узел
- Идти
- Java/Maven
- Так много еще много, это довольно впечатляет
Этот список программного обеспечения агента по сборке впечатляюще прост в использовании и быстрый способ начать, но не все, что отличается от многих конкурентов. То, что накладывает Действия GitHub, — это способность использовать Docker на одном этапе сборки. Давайте сосредоточимся на примере.
Сейс нашего использования было пересечь репозиторий PHP. Это возможно с использованием Ubuntu и установки инструментов, но давайте инкапсулируем его и удерживайте Фрэн из-за нашего справочника поставщика для нашего доставленного артефакта.
on: push
name: Static Code Analysis
jobs:
analyze:
name: Static Analysis with PHPStan
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Analysis
uses: docker://phpstan/phpstan
with:
args: analyze --error-format=table
Давайте сломаем это:
- Мы вытягиваем публичный контейнер докера из Docker Hub
- Мы выполняем контейнер, передавая args в качестве команды.
- Действия GitHub прикрепит наше рабочее пространство к рабочему пространству контейнера и запускают команду args мы прошли
- Это означает, что мы можем сохранить вывод и использовать его как артефакт
- Это означает, что установленные инструменты DEV не станут частью артефакта трубопровода.
Это довольно похоже на предоставленные действия. Мы также сможем кодифицировать это в Callable Action и зарегистрировать его либо в нашем собственном репо, либо в отдельно зарегистрированном репо. Разница в том, что это может вызвать любой контейнер, и нам не нужно создавать репозиторий или отдельную часть кодовой базы для действий.
Контейнеры докеров Как агент бегунов одного шага построения связан с действиями, но требует меньше накладных расходов. Это эквивалент анонимной функции в вашем CI/CD при абстрагировании зависимостей инструмента из вашего выполнения трубопровода.
Внутренние инструменты и секреты абстракции
Если у вас есть внутренние контейнеры с внутренними инструментами. Вы можете разместить их в аутентифицированном реестре докеров и добавить их в свой трубопровод. Вы можете избежать помещения кода, который может раскрыть секреты в свой трубопровод и вместо этого вызывают контейнер.
Согласие
Если вам нужен код, который должен быть представлен внутренне и разрешить его обновить отдельной командой. Вы также можете установить разрешения, чтобы полностью скрыть контейнер от команды Dev. Им не нужно беспокоить много кода в трубопроводе, и вы можете управлять своим собственным процессом соответствия.
Создание трубопроводов и строительные агенты с Docker не являются новыми. Но определенный шаг работает в контейнере, а затем очищен, чтобы вы могли выполнять дискретные шаги с дискретных инструментов мощным. Это один инструмент в цивеле CI/CD, но я взволнован возможностями абстракции. А также Чистота это обеспечивает.
Оригинал: «https://dev.to/jeffisadams/github-actions-steps-in-containers-40ni»