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

Завершено

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

Во время процесса вы выполните следующие действия.

  • Добавьте этап линтинга в конвейер.
  • Добавьте этап конвейера для публикации спецификации шаблона.
  • Убедитесь, что конвейер запускается и завершается успешно.
  • Проверьте опубликованную спецификацию шаблона в 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, который настраивает линтер на вывод ошибок вместо предупреждений. Все сбои во время этапа линтинга приведут к сбою конвейера.

    Совет

    Файлы YAML чувствительны к отступу. Введите или вставьте этот код и убедитесь, что отступы выполнены правильно. Далее в этом упражнении вы увидите полное определение конвейера YAML, чтобы убедиться, что файл соответствует.

Добавьте этап публикации в ваш конвейер

Теперь можно добавить второй этап для публикации спецификации шаблона в 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. В браузере выберите Pipelines>Pipelines.

    снимок экрана Azure Pipelines, на котором показан пункт меню

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

  3. Отображается запуск конвейера.

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

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

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

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

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

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

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

    снимок экрана портала Azure, на котором показана группа ресурсов и выделена спецификация шаблона.

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

    снимок экрана портала Azure, на котором показаны сведения о спецификации шаблона.

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