Краткое руководство. Развертывание файлов Bicep с помощью GitHub Actions

GitHub Actions — это набор функций в GitHub для автоматизации рабочих процессов разработки программного обеспечения. В этом кратком руководстве вы воспользуетесь действиями GitHub для развертывания Azure Resource Manager, чтобы автоматизировать развертывание файла Bicep в Azure.

Здесь приведено краткое описание GitHub Actions и файлов Bicep. Дополнительные инструкции по настройке действий и проектов GitHub см. в статье "Развертывание ресурсов Azure с помощью Bicep и GitHub Actions".

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

Создать группу ресурсов

Создать группу ресурсов. Далее в данном кратком руководстве вы развернете BICEP-файл в этой группе ресурсов.

az group create -n exampleRG -l westus

Создание учетных данных для развертывания.

Действия GitHub выполняются в соответствии с удостоверением. Создайте субъект-службу для такого удостоверения с помощью команды az ad sp create-for-rbac. Предоставьте субъекту-службе роль участник для группы ресурсов, созданной в предыдущем сеансе, чтобы действие GitHub с удостоверением может создавать ресурсы в этой группе ресурсов. Рекомендуется предоставить минимальный необходимый доступ.

az ad sp create-for-rbac --name {app-name} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/exampleRG --json-auth

Замените заполнитель {app-name} именем своего приложения. Замените {subscription-id} идентификатором своей подписки.

Выходные данные содержат объект JSON с учетными данными назначения роли, которые предоставляют доступ к приложению Службы приложений, как показано ниже.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    ...
  }

Скопируйте этот объект JSON для последующего использования. Вам понадобятся только разделы со значениями clientId, clientSecret, subscriptionId и tenantId. Убедитесь, tenantId что у вас нет дополнительной запятой в конце последней строки, например строка в предыдущем примере или в противном случае это приведет к недопустимому JSON-файлу. Во время развертывания появится сообщение об ошибке "Сбой входа с ошибкой: содержимое не является допустимым объектом JSON. Дважды проверка, если "auth-type" правильно".

Настройка секретов GitHub

Создайте секреты для учетных данных Azure, группы ресурсов и подписок. Эти секреты будут использоваться в разделе "Создание рабочего процесса ".

  1. В GitHub перейдите в свой репозиторий.

  2. Выберите Параметры > Секреты и переменные > Actions > New репозиторий.

  3. Вставьте все выходные данные JSON, полученные из команды Azure CLI, в поле значения секрета. Присвойте этому секрету имя AZURE_CREDENTIALS.

  4. Создайте еще один секрет с именем AZURE_RG. Добавьте имя группы ресурсов в поле значения секрета (exampleRG).

  5. Создайте еще один секрет с именем AZURE_SUBSCRIPTION. Добавьте идентификатор подписки в поле значения секрета (пример: 90fd3f9d-4c61-432d-99ba-1273f236afa2).

Добавление BICEP-файла

Добавьте BICEP-файл в репозиторий GitHub. Следующий BICEP-файл создает учетную запись хранения:

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

BICEP-файл требует один параметр storagePrefix, содержащий от 3 до 11 символов.

Файл можно разместить в любом месте репозитория. В примере рабочего процесса в следующем разделе предполагается, что BICEP-файл имеет имя main.bicep и хранится в корневом каталоге репозитория.

Создание рабочего процесса

Рабочий процесс определяет шаги, выполняемые при активации. Это файл YAML (YML), расположенный по пути .github/workflows/ в вашем репозитории. Расширение файла рабочего процесса может быть либо .yml, либо .yaml.

Чтобы создать рабочий процесс, сделайте следующее:

  1. В репозитории GitHub выберите Действия в верхнем меню.

  2. Выберите Новый рабочий процесс.

  3. Выберите настроить рабочий процесс вручную.

  4. Переименуйте файл рабочего процесса, если вы предпочитаете другое имя, отличное от main.yml. Например: deployBicepFile.yml.

  5. Замените содержимое YML-файла следующим кодом:

    name: Deploy Bicep file
    on: [push]
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
    
        - name: Checkout code
          uses: actions/checkout@main
    
        - name: Log into Azure
          uses: azure/login@v1
          with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
    
        - name: Deploy Bicep file
          uses: azure/arm-deploy@v1
          with:
            subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
            resourceGroupName: ${{ secrets.AZURE_RG }}
            template: ./main.bicep
            parameters: 'storagePrefix=mystore storageSKU=Standard_LRS'
            failOnStdErr: false
    

    Замените mystore своим префиксом имени учетной записи хранения.

    Примечание.

    Вместо этого можно указать файл параметров формата JSON в действии развертывания ARM (пример: .azuredeploy.parameters.json).

    Первый раздел файла рабочего процесса включает в себя следующие элементы.

    • name: имя рабочего процесса.
    • в: имя событий GitHub, которые инициируют рабочий процесс. Рабочий процесс активируется при наличии push-события в главной ветви.
  6. Выберите " Зафиксировать изменения".

  7. Выберите Зафиксировать непосредственно в главной ветви.

  8. Выберите Зафиксировать новый файл (или Зафиксировать изменения).

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

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

  1. Перейдите на вкладку "Действия ". Появится список рабочих процессов создания deployBicepFile.yml . Выполнение рабочего процесса занимает 1–2 минуты.
  2. Выберите рабочий процесс, чтобы открыть его, и проверьте Status его Success.

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

Когда вы закончите работу с группой ресурсов и репозиторием, очистите развернутые ресурсы, удалив группу ресурсов и репозиторий GitHub.

az group delete --name exampleRG

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