Упражнение. Публикация спецификации шаблона

Завершено

Ваша команда создала защищенные файлы Bicep, которые соответствуют новой модели управления вашей компании. Один из защищенных файлов Bicep развертывает приложение Службы приложений Azure на основе Linux. В этом упражнении вы будете использовать рабочий процесс развертывания для публикации файла Bicep в качестве спецификации шаблона.

В процессе вы:

  • Добавьте задание lint в рабочий процесс.
  • Добавьте задание рабочего процесса для публикации спецификации шаблона.
  • Вручную запустите рабочий процесс и убедитесь, что он успешно завершен.
  • Проверьте опубликованную спецификацию шаблона в Azure.

Добавление задания анализа в рабочий процесс

Репозиторий содержит черновик рабочего процесса, который можно использовать в качестве отправной точки.

  1. В Visual Studio Code разверните папку .github/workflows в корне репозитория.

  2. Откройте файл template-spec-linux-app-service.yml.

    Снимок экрана: Visual Studio Code с расположением файла определения рабочего процесса.

    Определение рабочего процесса включает два триггера. В этом упражнении вы не изменяете файл Bicep для спецификации шаблона, поэтому push триггер никогда не запускается. Чтобы попробовать рабочий процесс, вызовите его вручную с помощью триггера workflow_dispatch.

  3. В нижней части файла, где отображается комментарий, который говорит # To be added, добавьте следующее определение задания lint:

    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
    

    В репозитории есть файл bicepconfig.json, который настраивает анализатор кода таким образом, чтобы он выдавал ошибки вместо предупреждений Все сбои во время задания lint вызовут сбой рабочего процесса.

    Совет

    YAML-файлы чувствительны к отступу. При вводе или вставке этого кода убедитесь, что выбран правильный отступ. Далее в этом упражнении вы увидите определение полного рабочего процесса YAML и проверите, соответствует ли ваш файл ему.

Добавление задания publish в рабочий процесс

Теперь можно добавить второе задание для публикации спецификации шаблона в Azure.

  1. Добавьте следующий код в конец файла template-spec-linux-app-service.yml:

    publish:
      runs-on: ubuntu-latest
      needs: [ lint ]
      steps:
      - uses: actions/checkout@v3
      - uses: azure/login@v1
        name: Sign in to Azure
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - uses: azure/cli@v1
        name: Publish template spec
        with:
          inlineScript: |
            az ts create \
              --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \
              --name ${{ env.TEMPLATE_SPEC_NAME }} \
              --version ${{ github.run_number }} \
              --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \
              --location ${{ env.AZURE_REGION }} \
              --yes
    

    Это задание извлекает код из репозитория и входит в Azure с помощью созданных секретов GitHub. Затем запускается команда az ts create для публикации спецификации шаблона в Azure.

    Совет

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

  2. Сохраните внесенные в файл изменения.

Проверка и фиксация определения рабочего процесса

  1. Убедитесь, что файл template-spec-linux-app-service.yml выглядит следующим образом:

    name: template-spec-linux-app-service
    concurrency: template-spec-linux-app-service
    
    on:
      workflow_dispatch:
      push:
        branches:
          - main
        paths:
          - 'template-specs/linux-app-service/**'
    
    permissions:
      id-token: write
      contents: read
    
    env:
      AZURE_RESOURCEGROUP_NAME: ToyReusable
      AZURE_REGION: westus3
      TEMPLATE_SPEC_NAME: linux-app-service
      TEMPLATE_SPEC_FILE_PATH: template-specs/linux-app-service/main.bicep
    
    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
    
      publish:
        runs-on: ubuntu-latest
        needs: [ lint ]
        steps:
        - uses: actions/checkout@v3
        - uses: azure/login@v1
          name: Sign in to Azure
          with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
        - uses: azure/cli@v1
          name: Publish template spec
          with:
            inlineScript: |
              az ts create \
                --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \
                --name ${{ env.TEMPLATE_SPEC_NAME }} \
                --version ${{ github.run_number }} \
                --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \
                --location ${{ env.AZURE_REGION }} \
                --yes
    

    Если нет, обновите его в соответствии с этим примером, а затем сохраните.

  2. Зафиксируйте и отправьте изменения в репозиторий Git, выполнив следующие команды в терминале Visual Studio Code:

    git add .
    git commit -m "Add lint and publish jobs to Linux App Service template spec workflow"
    git push
    
  3. Вы будете использовать этот репозиторий впервые, поэтому вам будет предложено выполнить вход.

    В Windows введите 1 для проверки подлинности с помощью веб-браузера и нажмите клавишу ВВОД.

    В macOS нажмите Авторизовать.

  4. Откроется окно браузера. Возможно, потребуется еще раз выполнить вход в GitHub. Выберите Разрешить.

Активация рабочего процесса

  1. В браузере перейдите на вкладку Действия.

    Снимок экрана: GitHub с вкладкой

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

  2. Выберите рабочий процесс template-spec-linux-app-service, нажмите кнопку Выполнить рабочий процесс, а затем выберите Выполнить рабочий процесс.

    Снимок экрана: GitHub с выбранными элементами для выполнения рабочего процесса спецификации шаблона.

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

  3. Выберите последнее выполнение из списка.

    Снимок экрана: GitHub с выделенным последним выполнением рабочего процесса спецификации шаблона.

    Дождитесь завершения рабочего процесса. В этом случае спецификация шаблона публикуется в Azure.

  4. Обратите внимание на номер выполнения рабочего процесса, который, вероятно, является 2.

    Снимок экрана: GitHub с успешным выполнением рабочего процесса и выделенным номером запуска.

Просмотр спецификации шаблона в Azure

Вы также можете просмотреть опубликованную спецификацию шаблона на портале Azure.

  1. В браузере перейдите на портал Azure.

  2. Перейдите в группу ресурсов ToyReusable и выберите спецификацию шаблона linux-app-service.

    Снимок экрана: портал Azure, на котором показаны группа ресурсов и выделенный ресурс

  3. Изучите сведения о спецификации шаблона.

    Снимок экрана: портал Azure, на котором показаны сведения о ресурсе

    Обратите внимание, что номера последней версии и версии совпадают с номером сборки выполнения рабочего процесса. Рабочий процесс использует номер выполнения в качестве номера версии спецификации шаблона.