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

Завершено

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

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

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

Добавление этапа lint в конвейер

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

  1. В Visual Studio Code разверните папку template-specs/linux-app-service в корне репозитория.

  2. Откройте файл pipeline.yml.

    Снимок экрана Visual Studio Code, показывающий расположение файла определения конвейера.

  3. В нижней части файла замените # To be added следующее определение этапа lint:

    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file $(TemplateSpecFilePath)
            name: LintBicepCode
            displayName: Run Bicep linter
    

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

    Совет

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

Добавление этапа publish в конвейер

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

  1. Добавьте следующий код в конец файла pipeline.yml:

    - stage: Publish
      jobs:
      - job: Publish
        steps:
          - task: AzureCLI@2
            name: Publish
            displayName: Publish template spec
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az ts create \
                  --resource-group $(AzureResourceGroupName) \
                  --name $(TemplateSpecName) \
                  --version $(Build.BuildNumber) \
                  --template-file $(TemplateSpecFilePath) \
                  --location $(AzureRegion) \
                  --yes
    

    На этом этапе проверка код из репозитория и войдите в Azure с помощью созданного подключения к службе. Затем запускается команда az ts create для публикации спецификации шаблона в Azure.

    Совет

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

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

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

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

    trigger:
      batch: true
      branches:
        include:
        - main
      paths:
        include:
        - 'template-specs/linux-app-service/**'
    
    variables:
    - name: ServiceConnectionName
      value: ToyReusable
    - name: AzureResourceGroupName
      value: ToyReusable
    - name: AzureRegion
      value: westus3
    - name: TemplateSpecName
      value: linux-app-service
    - name: TemplateSpecFilePath
      value: template-specs/linux-app-service/main.bicep
    
    pool:
      vmImage: ubuntu-latest
    
    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file $(TemplateSpecFilePath)
            name: LintBicepCode
            displayName: Run Bicep linter
    
    - stage: Publish
      jobs:
      - job: Publish
        steps:
          - task: AzureCLI@2
            name: Publish
            displayName: Publish template spec
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az ts create \
                  --resource-group $(AzureResourceGroupName) \
                  --name $(TemplateSpecName) \
                  --version $(Build.BuildNumber) \
                  --template-file $(TemplateSpecFilePath) \
                  --location $(AzureRegion) \
                  --yes
    

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

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

    git add .
    git commit -m "Add lint and publish stages to Linux App Service template spec pipeline"
    git push
    

    Сразу после отправки Azure Pipelines запускает новое выполнение конвейера.

Мониторинг конвейера

  1. В браузере выберите Конвейеры>Конвейеры.

    Снимок экрана Azure Pipelines, показывающий пункт меню

  2. Выберите активное выполнение конвейера.

  3. Отобразится выполнение конвейера.

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

    Снимок экрана Azure Pipelines, показывающий успешный запуск конвейера и выделение номера сборки.

  4. Обратите внимание на номер сборки конвейера, который включает текущую дату и уникальный номер редакции. На снимке экрана показан номер сборки 20230407.1.

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

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

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

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

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

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

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

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