Упражнение. Создание действия GitHub для создания образа контейнера
В этом уроке вы выполните следующие задачи:
- Создайте действие GitHub для реализации конвейера сборки.
- Измените код службы купон, чтобы активировать рабочий процесс сборки.
- Отслеживайте ход выполнения рабочего процесса сборки в режиме реального времени.
Создание действия сборки
Код YAML в этой процедуре определяет действие GitHub, которое:
- Активирует при отправке фиксации в исходный код или модульные тесты службы купон в
main
ветви. - Определяет переменные среды, относящиеся к конкретному шагу.
- Имеет одно задание или набор шагов, выполняемых в том же средстве выполнения рабочего процесса с именем
Build and push image to ACR
.
Важно!
Условия триггера и другие артефакты GitHub Actions или рабочих процессов будут разными для разных приложений и сред. Для простоты понимания подробные сведения хранятся в этом примере. Сборка и рабочие процессы развертывания область изменения службы продуктов, так как все микрослужбы хранятся в одном репозитории. В фактическом рабочем сценарии каждая микрослужба будет храниться в отдельном репозитории.
Выполните следующие действия, чтобы создать действие сборки GitHub Actions:
Перейдите в вилку репозитория в GitHub, выберите вкладку Actions .
Get started with GitHub Actions На странице выберите ссылкуset up a workflow yourself.
На следующей странице вставьте следующий код 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.
Замените имя azure-kubernetes-service.ymlфайла рабочего процесса main.yml по умолчанию и выберите Commit changes.
Commit changes На экране выберите Commit directly to the main branch и выберите Commit changes.
Итак, вы завершили создание рабочего процесса сборки для конвейера CI/CD.
В терминале выполните следующую команду, чтобы просмотреть текущие версии службы продуктов, хранящиеся в ACR:
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
Заменив AZURE_CONTAINER_REGISTRY именем ACR, вы увидите выходные данные следующим образом:
Result ---------------------------------------- v1
Активация сборки
Рабочий процесс сборки активируется автоматически после фиксации файла рабочего процесса. Вы также можете активировать сборку вручную.
- В репозитории выберите вкладку Actions .
- Слева в разделе All workflowsвыберите рабочий Build and deploy an app to AKS процесс, а затем выберите Run workflow.
Отслеживание сборки
Чтобы просмотреть ход выполнения сборки в режиме реального времени, выполните следующие действия.
В репозитории выберите вкладку Actions .
Выберите последний запуск рабочего процесса, указанный для рабочего процесса Build and deploy an app to AKS. Имя выполнения — это сообщение фиксации, используемое на предыдущем шаге.
buildImage Выберите задание.
Если подождите несколько минут, шаги в задании должны завершиться успешно.
В терминале выполните эту команду еще раз, чтобы просмотреть версии службы продуктов, хранящиеся в ACR.
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
Вы увидите выходные данные, аналогичные приведенному ниже, где показана новая версия образа, добавленная в ACR из рабочего процесса GitHub:
Result ---------------------------------------- 8c75edb7a349ec570bd4eac397015bc3c547186e v1