Настраивает CI/CD для своего приложения

Начать работу с GitHub Actions

В этом руководстве описан процесс настройки и использования действий Docker GitHub для создания образов Docker и отправки образов в Docker Hub. Вы выполняет следующие шаги:

  1. Создаёт новый репозиторий на GitHub.

  2. Определяет рабочий процесс GitHub Actions.

  3. Запускает рабочий процесс.

Чтобы следовать этому руководству, вам потребуется Docker ID и учетная запись GitHub.

Шаг первый: Создаёт репозиторий

Создаёт репозиторий GitHub и настраивает секреты Docker Hub.

  1. Создаёт новый репозиторий GitHub, используя данный репозиторий шаблонов.

    Репозиторий содержит простой Dockerfile и больше ничего. Не стесняйтесь использовать другой репозиторий, содержащий рабочий Dockerfile, если хотите.

  2. Открывает репозиторий Настройки и выбрать Секреты > Действия.

  3. Создаёт новый секрет с именем DOCKER_HUB_USERNAME и своим идентификатором Docker в качестве значения.

  4. Создаёт новый Токен личного доступа (PAT) для Docker Hub. Вы можете назвать данный токен clockboxci.

  5. Добавляет PAT в качестве второго секрета в свой репозиторий GitHub с именем DOCKER_HUB_ACCESS_TOKEN.

Создав репозиторий и настроив секреты, вы готовы к действию

Шаг второй: Настраивает рабочий процесс

Настраивает рабочий процесс GitHub Actions для сборки и отправки образа в Docker Hub.

  1. Go в свой репозиторий на GitHub, а затем выбрать вкладку Действия.

  2. Выбрать настроить рабочий процесс самостоятельно.

    Вы перейдете на страницу создания нового файла рабочего процесса действий GitHub в своём репозитории, по умолчанию с номером .github/workflows/main.yml.

  3. В окне редактора копирует и вставляет следующую конфигурацию YAML.

    name: ci
    
    on:
      push:
        branches:
          - "main"
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
    • name: имя этого рабочего процесса.

    • on.push.branches: указывает, что данный рабочий процесс должен запускаться при каждом push-событии для ветвей в списке.

    • jobs: создаёт идентификатор задания (build) и объявляет тип машины, на которой должно выполняться задание.

Дополнительные сведения об используемом здесь синтаксисе YAML см. в статье Синтаксис рабочего процесса для действий GitHub.

Шаг третий: Определяет этапы рабочего процесса

Теперь самое главное: какие шаги выполнять и в каком порядке их выполнять.

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      -
        name: Checkout
        uses: actions/checkout@v3
      -
        name: Login to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
          password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
      -
        name: Build and push
        uses: docker/build-push-action@v3
        with:
          context: .
          file: ./Dockerfile
          push: true
        tags: ${{ secrets.DOCKER_HUB_USERNAME }}/clockbox:latest

Предыдущий фрагмент YAML содержит последовательность шагов, которые:

  1. Проверяет репозиторий на машине сборки.

  2. Выполняет вход в Docker Hub, используя действие Вход в docker и свои учетные данные Docker Hub.

  3. Создаёт экземпляр построителя BuildKit с помощью действия Сборка установки Docker.

  4. Создаёт образ контейнера и отправляет его в репозиторий Docker Hub, используя код Создавать и отправляет образы Docker.

    Клавиша with перечисляет ряд входных параметров, которые настраивают шаг:

    • context: построить контекст.

    • file: путь к файлу Dockerfile.

    • push: указывает действию загружает образ в реестр после его сборки.

    • tags: теги, указывающие, куда помещать образ.

Добавляет данные шаги в свой файл рабочего процесса. Полная конфигурация рабочего процесса должна выглядеть следующим образом:

yaml
name: ci

 on:
  push:
    branches:
      - "main"

 jobs:
   build:
     runs-on: ubuntu-latest
     steps:
       -
         name: Checkout
         uses: actions/checkout@v3
       -
         name: Login to Docker Hub
         uses: docker/login-action@v2
          with:
            username: ${{ secrets.DOCKER_HUB_USERNAME }}
            password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
       -
         name: Set up Docker Buildx
         uses: docker/setup-buildx-action@v2
       -
         name: Build and push
         uses: docker/build-push-action@v3
         with:
           context: .
           file: ./Dockerfile
           push: true
           tags: ${{ secrets.DOCKER_HUB_USERNAME }}/clockbox:latest

Запускает рабочий процесс

Сохраняет файл рабочего процесса и запускает задание.

  1. Выбрать Начать фиксацию и отправить изменения в основную ветку.

    После нажатия фиксации рабочий процесс запускается автоматически.

  2. Go на вкладку Действия. Он отображает рабочий процесс.

    Выбор рабочего процесса показывает разбивку всех шагов.

  3. Когда рабочий процесс будет завершён, перейдите на свой репозитории на Docker Hub.

    Если вы видите новый репозиторий в этом списке, это означает, что действия GitHub успешно отправили образ в Docker Hub!

Следующие шаги

В этом модуле вы узнали, как настроить рабочий процесс GitHub Actions для существующего проекта Docker, оптимизировать рабочий процесс, чтобы сократить время сборки и уменьшить количество запросов на вытягивание, и, наконец, мы узнали, как отправлять только определённые версии в Docker Hub. Вы также можете настроить ночные тесты для последнего тега, протестировать каждый PR или сделать что-то более элегантное с тегами, которые мы используем, и использовать тег Git для того же тега в нашем образе.

Вы также можете рассмотреть возможность развертывания своего приложения. Подробные инструкции см:

Разверните свое приложение

Обратная связь

Помогите нам улучшить эту тему, оставив свой отзыв. Дайте нам знать, что вы думаете, создав задачу в репозитории Документы Docker GitHub. Или создайте PR, чтобы предложить обновления.