Краткое руководство. Интеграция Bicep с Azure Pipelines

В этом кратком руководстве описывается, как интегрировать файлы Bicep с Azure Pipelines, чтобы обеспечить непрерывную интеграцию и непрерывное развертывание (CI/CD).

Оно содержит краткое описание задачи конвейера для развертывания файла Bicep. Если вам нужны дополнительные инструкции по настройке конвейера и проекта, см. статью Развертывание ресурсов Azure с помощью Bicep и Azure Pipelines.

Необходимые компоненты

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

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

Необходимо настроить подключение службы к подписке Azure. Задачи в конвейере выполняются с удостоверением субъекта-службы. Инструкции по созданию подключения см. в разделе Создание проекта DevOps.

У вас должен быть файл Bicep, определяющий инфраструктуру для проекта. Этот файл находится в репозитории.

Вам нужен файл bicepparam, определяющий параметры, используемые файлом bicep. Этот файл находится в репозитории.

Создание конвейера

  1. В организации Azure DevOps выберите "Конвейеры " и "Создать конвейер".

    Снимок экрана: создание конвейера.

  2. Укажите место хранения кода. В этом кратком руководстве используется Azure Repos Git.

    Снимок экрана: выбор источника кода.

  3. Выберите репозиторий с кодом для проекта.

    Снимок экрана: выбор репозитория.

  4. Выберите Начальный конвейер в качестве типа создаваемого конвейера.

    Снимок экрана: выбор конвейера.

Развертывание файлов Bicep

Задачу "Развертывание группы ресурсов Azure" или задачу Azure CLI можно использовать для развертывания Bicep-файла.

Использование задачи развертывания шаблонов Azure Resource Manager

Примечание.

Начиная с версии 3.235.0 задачи развертывания шаблонов Azure Resource Manager поддерживается использование файлов bicepparam .

Примечание.

Задача AzureResourceManagerTemplateDeployment@3 требует предоставления файлов Bicep и bicepparam при использовании bicepparam. Файл Bicep может ссылаться на все поддерживаемые расположения для ссылок на модули. Файл bicepparam должен ссылаться на локальный файл Bicep в инструкции using .

  1. Замените начальный конвейер на следующий YAML. Он создает группу ресурсов и развертывает файл Bicep и bicepparam с помощью задачи развертывания шаблона Azure Resource Manager.

    trigger:
    - main
    
    name: Deploy Bicep files
    
    parameters:
    - name: azureServiceConnection
      type: string
      default: '<your-connection-name>'
    
    variables:
      vmImageName: 'ubuntu-latest'
      resourceGroupName: 'exampleRG'
      location: '<your-resource-group-location>'
      templateFile: './main.bicep'
      csmParametersFile: './main.bicepparam'
    
    pool:
      vmImage: $(vmImageName)
    
    steps:
    - task: AzureResourceManagerTemplateDeployment@3
      inputs:
        deploymentScope: 'Resource Group'
        azureSubscription: '${{ parameters.azureServiceConnection }}'
        action: 'Create Or Update Resource Group'
        resourceGroupName: '$(resourceGroupName)'
        location: '$(location)'
        templateLocation: 'Linked artifact'
        csmFile: '$(templateFile)'
        csmParametersFile: '$(csmParametersFile)'
        overrideParameters: '-storageAccountType Standard_LRS'
        deploymentMode: 'Incremental'
        deploymentName: 'DeployPipelineTemplate'
    
  2. Обновите значения azureServiceConnection и location.

  3. Убедитесь, что у вас есть допустимый main.bicep файл в репозитории.

  4. Убедитесь, что в репозитории есть допустимый main.bicepparam файл, содержащий инструкцию using .

  5. Выберите Сохранить. Конвейер сборки запускается автоматически. Вернитесь к сводке по конвейеру сборки и просмотрите его состояние.

Использование задачи Azure CLI

Примечание.

Команда az deployment create требует только файла bicepparam. Инструкция using в файле bicepparam может нацелиться на любое поддерживаемую папку, чтобы ссылаться на Bicep-файл. Файл Bicep требуется только в репозитории, если using из локального пути к диску с помощью Azure CLI.

Примечание.

При использовании файла bicepparam с командой az deployment group create невозможно переопределить параметры.

  1. Замените начальный конвейер на следующий YAML. Он создает группу ресурсов и развертывает файл bicepparam с помощью задачи Azure CLI:

    trigger:
    - main
    
    name: Deploy Bicep files
    
    parameters:
      azureServiceConnection: '<your-connection-name>'
    
    variables:
      vmImageName: 'ubuntu-latest'
      resourceGroupName: 'exampleRG'
      location: '<your-resource-group-location>'
      bicepParamFile: './main.bicepparam'
    
    pool:
      vmImage: $(vmImageName)
    
    steps:
    - task: AzureCLI@2
      inputs:
        azureSubscription: '${{ parameters.azureServiceConnection }}'
        scriptType: bash
        scriptLocation: inlineScript
        useGlobalConfig: false
        inlineScript: |
          az --version
          az group create --name $(resourceGroupName) --location $(location)
          az deployment group create `
            --resource-group $(resourceGroupName) `
            --parameters $(bicepParamFile) `
            --name DeployPipelineTemplate
    

    Описание входных данных задачи см. в статье Задача Azure CLI. При использовании задачи в облаке с воздушным подключением необходимо задать useGlobalConfig для свойства задачи trueзначение . Значение по умолчанию — false.

  2. Обновите значения azureServiceConnection и location.

  3. Убедитесь, что в репозитории есть допустимый main.bicepparam файл, содержащий инструкцию using .

  4. Выберите Сохранить. Конвейер сборки запускается автоматически. Вернитесь к сводке по конвейеру сборки и просмотрите его состояние.

Очистка ресурсов

Если ресурсы Azure больше не нужны, используйте Azure CLI или Azure PowerShell, чтобы удалить группу ресурсов, созданную для краткого руководства.

az group delete --name exampleRG

Следующие шаги