Рубрики
Uncategorized

Действия GitHub: Шаги в контейнерах

Создание трубопроводов и строительные агенты с использованием продуктов CI / CD не являются новыми. Последнее поколение этих есть … Помечено с GitHub, DevOps, Docker.

Создание трубопроводов и строительные агенты с использованием продуктов 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»