Упражнение. Публикация спецификации шаблона
Ваша команда создала защищенные файлы Bicep, которые соответствуют новой модели управления вашей компании. Один из защищенных файлов Bicep развертывает приложение Службы приложений Azure на основе Linux. В этом упражнении вы будете использовать рабочий процесс развертывания для публикации файла Bicep в качестве спецификации шаблона.
В процессе вы:
- Добавьте задание lint в рабочий процесс.
- Добавьте задание рабочего процесса для публикации спецификации шаблона.
- Вручную запустите рабочий процесс и убедитесь, что он успешно завершен.
- Проверьте опубликованную спецификацию шаблона в Azure.
Добавление задания анализа в рабочий процесс
Репозиторий содержит черновик рабочего процесса, который можно использовать в качестве отправной точки.
В Visual Studio Code разверните папку .github/workflows в корне репозитория.
Откройте файл template-spec-linux-app-service.yml.
Определение рабочего процесса включает два триггера. В этом упражнении вы не изменяете файл Bicep для спецификации шаблона, поэтому
push
триггер никогда не запускается. Чтобы попробовать рабочий процесс, вызовите его вручную с помощью триггераworkflow_dispatch
.В нижней части файла, где отображается комментарий, который говорит
# To be added
, добавьте следующее определение задания lint:jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
В репозитории есть файл bicepconfig.json, который настраивает анализатор кода таким образом, чтобы он выдавал ошибки вместо предупреждений Все сбои во время задания lint вызовут сбой рабочего процесса.
Совет
YAML-файлы чувствительны к отступу. При вводе или вставке этого кода убедитесь, что выбран правильный отступ. Далее в этом упражнении вы увидите определение полного рабочего процесса YAML и проверите, соответствует ли ваш файл ему.
Добавление задания publish в рабочий процесс
Теперь можно добавить второе задание для публикации спецификации шаблона в Azure.
Добавьте следующий код в конец файла template-spec-linux-app-service.yml:
publish: runs-on: ubuntu-latest needs: [ lint ] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/cli@v1 name: Publish template spec with: inlineScript: | az ts create \ --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \ --name ${{ env.TEMPLATE_SPEC_NAME }} \ --version ${{ github.run_number }} \ --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \ --location ${{ env.AZURE_REGION }} \ --yes
Это задание извлекает код из репозитория и входит в Azure с помощью созданных секретов GitHub. Затем запускается команда
az ts create
для публикации спецификации шаблона в Azure.Совет
Для простоты рабочий процесс использует номер выполнения рабочего процесса в качестве номера версии спецификации шаблона. В следующем уроке вы узнаете о более сложной схеме управления версиями.
Сохраните внесенные в файл изменения.
Проверка и фиксация определения рабочего процесса
Убедитесь, что файл template-spec-linux-app-service.yml выглядит следующим образом:
name: template-spec-linux-app-service concurrency: template-spec-linux-app-service on: workflow_dispatch: push: branches: - main paths: - 'template-specs/linux-app-service/**' permissions: id-token: write contents: read env: AZURE_RESOURCEGROUP_NAME: ToyReusable AZURE_REGION: westus3 TEMPLATE_SPEC_NAME: linux-app-service TEMPLATE_SPEC_FILE_PATH: template-specs/linux-app-service/main.bicep jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }} publish: runs-on: ubuntu-latest needs: [ lint ] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/cli@v1 name: Publish template spec with: inlineScript: | az ts create \ --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \ --name ${{ env.TEMPLATE_SPEC_NAME }} \ --version ${{ github.run_number }} \ --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \ --location ${{ env.AZURE_REGION }} \ --yes
Если нет, обновите его в соответствии с этим примером, а затем сохраните.
Зафиксируйте и отправьте изменения в репозиторий Git, выполнив следующие команды в терминале Visual Studio Code:
git add . git commit -m "Add lint and publish jobs to Linux App Service template spec workflow" git push
Вы будете использовать этот репозиторий впервые, поэтому вам будет предложено выполнить вход.
В Windows введите 1 для проверки подлинности с помощью веб-браузера и нажмите клавишу ВВОД.
В macOS нажмите Авторизовать.
Откроется окно браузера. Возможно, потребуется еще раз выполнить вход в GitHub. Выберите Разрешить.
Активация рабочего процесса
В браузере перейдите на вкладку Действия.
Выполнения рабочего процесса, которые завершились сбоем, уже перечислены, но вам не нужно беспокоиться о них. Сбой выполнения, так как определения рабочих процессов еще не завершены при создании репозитория.
Выберите рабочий процесс template-spec-linux-app-service, нажмите кнопку Выполнить рабочий процесс, а затем выберите Выполнить рабочий процесс.
GitHub запустит новое выполнение рабочего процесса. Возможно, потребуется обновить окно браузера, чтобы увидеть, как идет выполнение.
Выберите последнее выполнение из списка.
Дождитесь завершения рабочего процесса. В этом случае спецификация шаблона публикуется в Azure.
Обратите внимание на номер выполнения рабочего процесса, который, вероятно, является 2.
Просмотр спецификации шаблона в Azure
Вы также можете просмотреть опубликованную спецификацию шаблона на портале Azure.
В браузере перейдите на портал Azure.
Перейдите в группу ресурсов ToyReusable и выберите спецификацию шаблона linux-app-service.
Изучите сведения о спецификации шаблона.
Обратите внимание, что номера последней версии и версии совпадают с номером сборки выполнения рабочего процесса. Рабочий процесс использует номер выполнения в качестве номера версии спецификации шаблона.