Упражнение. Создание действия GitHub для создания образа контейнера

Завершено

В этом уроке вы выполните следующие задачи:

  • Создайте действие GitHub для реализации конвейера сборки.
  • Измените код службы купон, чтобы активировать рабочий процесс сборки.
  • Отслеживайте ход выполнения рабочего процесса сборки в режиме реального времени.

Создание действия сборки

Код YAML в этой процедуре определяет действие GitHub, которое:

  • Активирует при отправке фиксации в исходный код или модульные тесты службы купон в main ветви.
  • Определяет переменные среды, относящиеся к конкретному шагу.
  • Имеет одно задание или набор шагов, выполняемых в том же средстве выполнения рабочего процесса с именем Build and push image to ACR.

Важно!

Условия триггера и другие артефакты GitHub Actions или рабочих процессов будут разными для разных приложений и сред. Для простоты понимания подробные сведения хранятся в этом примере. Сборка и рабочие процессы развертывания область изменения службы продуктов, так как все микрослужбы хранятся в одном репозитории. В фактическом рабочем сценарии каждая микрослужба будет храниться в отдельном репозитории.

Выполните следующие действия, чтобы создать действие сборки GitHub Actions:

  1. Перейдите в вилку репозитория в GitHub, выберите вкладку Actions .

  2. Get started with GitHub Actions На странице выберите ссылкуset up a workflow yourself.

    Screenshot that shows the Actions tab in the GitHub repository, highlighting the workflow creation link.

  3. На следующей странице вставьте следующий код YAML в редактор.

    name: Build and deploy an app to AKS
    
    on:
      push:
        branches: ["main"]
      workflow_dispatch:
    
    env:
      # Local environment variables used later in the workflow
      AZURE_CONTAINER_REGISTRY: 'name of your Azure Container Registry'
      CONTAINER_NAME: 'productservice'
      RESOURCE_GROUP: 'rg-eshop'
      CLUSTER_NAME: 'aks-eshop'
      DEPLOYMENT_MANIFEST_PATH: './product.yml'
      DOCKER_PATH: './DockerfileProducts'
    
    jobs:
      buildImage:
        permissions:
          contents: read
          id-token: write
        runs-on: ubuntu-latest
        steps:
          # Checks out the repository this file is in
          - uses: actions/checkout@v3
    
          # Logs in with your Azure credentials stored in GitHub secrets
          - name: Azure login
            uses: azure/login@v1.4.6
            with:
              creds: '${{ secrets.AZURE_CREDENTIALS }}'
    
          # Builds and pushes an image up to your Azure Container Registry
          - name: Build and push image to ACR
            run: |
              az acr build --file ${{ env.DOCKER_PATH }} --image ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.RESOURCE_GROUP }} .
    
    

    Замените имя Реестр контейнеров Azure именем ACR, созданным в предыдущем уроке, например acseshop186748394.

  4. Замените имя azure-kubernetes-service.ymlфайла рабочего процесса main.yml по умолчанию и выберите Commit changes.

  5. Commit changes На экране выберите Commit directly to the main branch и выберите Commit changes.

    Итак, вы завершили создание рабочего процесса сборки для конвейера CI/CD.

  6. В терминале выполните следующую команду, чтобы просмотреть текущие версии службы продуктов, хранящиеся в ACR:

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    Заменив AZURE_CONTAINER_REGISTRY именем ACR, вы увидите выходные данные следующим образом:

    Result
    ----------------------------------------
    v1
    

Активация сборки

Рабочий процесс сборки активируется автоматически после фиксации файла рабочего процесса. Вы также можете активировать сборку вручную.

  1. В репозитории выберите вкладку Actions .
  2. Слева в разделе All workflowsвыберите рабочий Build and deploy an app to AKS процесс, а затем выберите Run workflow.

Отслеживание сборки

Чтобы просмотреть ход выполнения сборки в режиме реального времени, выполните следующие действия.

  1. В репозитории выберите вкладку Actions .

  2. Выберите последний запуск рабочего процесса, указанный для рабочего процесса Build and deploy an app to AKS. Имя выполнения — это сообщение фиксации, используемое на предыдущем шаге.

  3. buildImage Выберите задание.

    Screenshot showing a GitHub workflow in progress.

  4. Если подождите несколько минут, шаги в задании должны завершиться успешно.

  5. В терминале выполните эту команду еще раз, чтобы просмотреть версии службы продуктов, хранящиеся в ACR.

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    Вы увидите выходные данные, аналогичные приведенному ниже, где показана новая версия образа, добавленная в ACR из рабочего процесса GitHub:

    Result
    ----------------------------------------
    8c75edb7a349ec570bd4eac397015bc3c547186e
    v1