Поделиться через


Краткое руководство. Развертывание файлов 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

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

Чтобы использовать действие входа Azure с OIDC, необходимо настроить федеративные учетные данные удостоверения в приложении Microsoft Entra или управляемом удостоверении, назначаемом пользователем.

Вариант 1. Приложение Microsoft Entra

Вариант 2. Управляемое удостоверение, назначаемое пользователем

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

Необходимо указать идентификатор клиента приложения, идентификатор каталога (клиента) и идентификатор подписки для действия входа. Эти значения могут быть указаны непосредственно в рабочем процессе или храниться в секретах GitHub с указанием ссылок на них в рабочем процессе. Сохранение значений в виде секретов GitHub является более безопасным вариантом.

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

  2. Выберите "Секреты безопасности>" и "Действия переменных>".

    Снимок экрана: добавление секрета

  3. Нажмите Создать секрет репозитория.

    Примечание.

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

  4. Создайте секреты для AZURE_CLIENT_ID, AZURE_TENANT_ID и AZURE_SUBSCRIPTION_ID. Скопируйте эти значения из приложения Microsoft Entra или управляемого удостоверения, назначаемого пользователем, для секретов GitHub:

    Секрет GitHub Приложение Microsoft Entra или управляемое удостоверение, назначаемое пользователем
    AZURE_CLIENT_ID Client ID
    AZURE_SUBSCRIPTION_ID ИД подписки
    AZURE_TENANT_ID Идентификатор каталога (клиента)

    Примечание.

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

Добавление 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@2023-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-файла следующим кодом:

    on: [push]
    name: Azure ARM
    permissions:
      id-token: write
      contents: read
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
    
          # Checkout code
        - uses: actions/checkout@main
    
          # Log into Azure
        - uses: azure/login@v2
          with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
          # Deploy Bicep file
        - name: deploy
          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
    
  6. Выберите " Зафиксировать изменения".

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

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

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

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

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

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

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

az group delete --name exampleRG

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