Краткое руководство. Развертывание файлов Bicep с помощью GitHub Actions
GitHub Actions — это набор функций в GitHub для автоматизации рабочих процессов разработки программного обеспечения. В этом кратком руководстве вы воспользуетесь действиями GitHub для развертывания Azure Resource Manager, чтобы автоматизировать развертывание файла Bicep в Azure.
Здесь приведено краткое описание GitHub Actions и файлов Bicep. Дополнительные инструкции по настройке действий и проектов GitHub см. в статье "Развертывание ресурсов Azure с помощью Bicep и GitHub Actions".
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Учетная запись GitHub. Если у вас ее нет, зарегистрируйтесь бесплатно.
- Репозиторий GitHub для хранения BICEP-файлов и файлов рабочих процессов. Чтобы создать его, см. раздел Создание нового репозитория.
Создать группу ресурсов
Создать группу ресурсов. Далее в этом кратком руководстве вы развернете файл 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. Дважды проверьте правильность типа проверки подлинности".
Настройка секретов GitHub
Создайте секреты для учетных данных Azure, группы ресурсов и подписок. Эти секреты используются в разделе "Создание рабочего процесса ".
В GitHub перейдите в свой репозиторий.
Выберите "Параметры секретов > " и переменных > "Действия > нового репозитория".
Вставьте все выходные данные JSON, полученные из команды Azure CLI, в поле значения секрета. Присвойте этому секрету имя
AZURE_CREDENTIALS
.Создайте еще один секрет с именем
AZURE_RG
. Добавьте имя группы ресурсов в поле значения секрета (exampleRG
).Создайте еще один секрет с именем
AZURE_SUBSCRIPTION
. Добавьте идентификатор подписки в поле значения секрета (пример:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
).
Добавление 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.
Чтобы создать рабочий процесс, сделайте следующее:
В репозитории GitHub выберите Действия в верхнем меню.
Выберите Новый рабочий процесс.
Выберите настроить рабочий процесс вручную.
Переименуйте файл рабочего процесса, если вы предпочитаете другое имя, отличное от main.yml. Например: deployBicepFile.yml.
Замените содержимое 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-события в главной ветви.
Выберите " Зафиксировать изменения".
Выберите Зафиксировать непосредственно в главной ветви.
Выберите Зафиксировать новый файл (или Зафиксировать изменения).
Обновление файла рабочего процесса или BICEP-файла приводит к активации рабочего процесса. Рабочий процесс запускается сразу после того, как вы зафиксируете изменения.
Проверка состояния рабочего процесса
- Перейдите на вкладку "Действия ". Отображается рабочий процесс создания deployBicepFile.yml . Выполнение рабочего процесса занимает 1–2 минуты.
- Выберите рабочий процесс, чтобы открыть его, и проверьте
Status
егоSuccess
.
Очистка ресурсов
Когда вы закончите работу с группой ресурсов и репозиторием, очистите развернутые ресурсы, удалив группу ресурсов и репозиторий GitHub.
az group delete --name exampleRG