Exercício – Publicar uma especificação de modelo
Sua equipe criou alguns arquivos Bicep protegidos com segurança que estão em conformidade com o novo modelo de governança da empresa. Um dos arquivos Bicep protegidos implementa um aplicativo do Serviço de Aplicativo do Azure com base em Linux. Neste exercício, você usará um fluxo de trabalho de implantação para publicar o arquivo Bicep como uma especificação de modelo.
Durante o processo, você vai:
- Adicionar um trabalho de lint ao fluxo de trabalho.
- Adicionar um trabalho de fluxo de trabalho para publicar a especificação de modelo.
- Executar manualmente o fluxo de trabalho e verificar se ele foi concluído com êxito.
- Verificar a especificação de modelo publicada no Azure.
Adicionar um trabalho de lint ao fluxo de trabalho
O repositório contém um rascunho de um fluxo de trabalho que você pode usar como ponto de partida.
No Visual Studio Code, expanda a pasta .github/workflows na raiz do repositório.
Abra o arquivo template-spec-linux-app-service.yml.
A definição de fluxo de trabalho inclui dois gatilhos. Neste exercício, você não modificará o arquivo Bicep da especificação de modelo, portanto, o gatilho
push
nunca será disparado. Para experimentar o fluxo de trabalho, invoque-o manualmente usando o gatilhoworkflow_dispatch
.Na parte inferior do arquivo, onde aparece um comentário que diz
# To be added
, adicione a seguinte definição de trabalho 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 }}
O repositório tem um arquivo bicepconfig.json que configura o linter para emitir erros em vez de avisos. Se houver alguma falha durante o trabalho de lint, o fluxo de trabalho falhará.
Dica
Os arquivos YAML são sensíveis ao recuo. Independentemente de você digitar ou colar esse código, verifique se o recuo está correto. Posteriormente neste exercício, você verá a definição completa do fluxo de trabalho YAML para verificar se o arquivo é correspondente.
Adicionar um trabalho de publicação ao fluxo de trabalho
Agora, você pode adicionar um segundo trabalho para publicar a especificação de modelo no Azure.
Adicione o seguinte código ao final do arquivo 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
Esse trabalho verifica o código do repositório e entra no Azure usando os segredos do GitHub que você criou. Depois, ela executa o comando
az ts create
para publicar a especificação de modelo no Azure.Dica
Para simplificar as coisas, o fluxo de trabalho usa o número de build do fluxo de trabalho como o número de versão da especificação de modelo. Na próxima unidade, você conhecerá um esquema de controle de versão mais complexo.
Salve as alterações no arquivo.
Verificar e fazer commit a definição do fluxo de trabalho
Verifique se o arquivo template-spec-linux-app-service.yml se parece com o seguinte exemplo:
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
Caso contrário, atualize-o para corresponder a este exemplo e salve-o.
Faça commit e efetue push das alterações no repositório Git executando os seguintes comandos no terminal do Visual Studio Code:
git add . git commit -m "Add lint and publish jobs to Linux App Service template spec workflow" git push
Essa é a primeira vez que você efetuou push desse repositório, então pode aparecer uma solicitação para entrar.
No Windows, digite 1 para fazer a autenticação usando um navegador da Web e pressione Enter.
No macOS, selecione Autorizar.
Uma janela do navegador é exibida. Talvez seja necessário entrar no GitHub novamente. Selecione Autorizar.
Disparar um fluxo de trabalho
No navegador, selecione a guia Ações.
As execuções de fluxo de trabalho com falha já estão listadas, mas você não precisa se preocupar com elas. As execuções falharam porque as definições de fluxo de trabalho ainda não estavam concluídas quando você criou o repositório.
Selecione o fluxo de trabalho template-spec-linux-app-service, clique no botão Executar fluxo de trabalho e selecione Executar fluxo de trabalho.
O GitHub inicia uma nova execução de fluxo de trabalho. Talvez seja necessário atualizar a janela do navegador que a execução apareça.
Selecione a execução mais recente na lista.
Aguarde o fim da execução do fluxo de trabalho. Quando isso acontece, a especificação de modelo é publicada no Azure.
Anote o número da execução do fluxo de trabalho, que provavelmente é 2.
Examinar a especificação de modelo no Azure
Você também pode ver a especificação de modelo publicada no portal do Azure.
No navegador, acesse o portal do Azure.
Acesse o grupo de recursos ToyReusable e selecione a especificação de modelo linux-app-service.
Examine os detalhes da especificação de modelo.
Observe que o número da Última versão e da Versão são iguais ao número da execução de fluxo de trabalho. O fluxo de trabalho usa o número de execução para o número de versão da especificação de modelo.