Esercizio - Pubblicare una specifica di modello
Il team ha creato alcuni file Bicep con protezione avanzata conformi al nuovo modello di governance dell'azienda. Uno dei file Bicep con protezione avanzata distribuisce un'app servizio app di Azure basata su Linux. In questo esercizio si userà un flusso di lavoro di distribuzione per pubblicare il file Bicep come specifica di modello.
Durante il processo, si eseguiranno queste operazioni:
- Aggiungere un processo lint al flusso di lavoro.
- Aggiungere un processo del flusso di lavoro per pubblicare la specifica del modello.
- Eseguire manualmente il flusso di lavoro e verificare che venga completato correttamente.
- Controllare la specifica del modello pubblicata in Azure.
Aggiungere un processo lint al flusso di lavoro
Il repository contiene una bozza di un flusso di lavoro che è possibile usare come punto di partenza.
In Visual Studio Code espandere la cartella .github/workflows nella radice del repository.
Aprire il file template-spec-linux-app-service.yml.
La definizione del flusso di lavoro include due trigger. In questo esercizio non viene modificato il file Bicep per la specifica del modello, quindi il trigger
push
non viene mai attivato. Per provare il flusso di lavoro, richiamarlo manualmente usando il triggerworkflow_dispatch
.In fondo al file, dove viene visualizzato un commento che indica
# To be added
, aggiungere la definizione del processo lint seguente: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 }}
Il repository contiene un file bicepconfig.json che configura il linter per generare errori anziché avvisi. Eventuali errori durante il processo lint causeranno l'esito negativo del flusso di lavoro.
Suggerimento
I file YAML sono sensibili al rientro. Se si digita o si incolla questo codice, assicurarsi che il rientro sia corretto. Più avanti in questo esercizio verrà visualizzata la definizione completa del flusso di lavoro YAML in modo da verificare la corrispondenza del file.
Aggiungere un processo di pubblicazione al flusso di lavoro
È ora possibile aggiungere un secondo processo per pubblicare la specifica del modello in Azure.
Aggiungere il codice seguente al termine del file 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
Questo processo estrae il codice dal repository e accede ad Azure usando i segreti GitHub creati. Esegue quindi il comando
az ts create
per pubblicare la specifica del modello in Azure.Suggerimento
Per semplificare le operazioni, il flusso di lavoro usa il numero di esecuzione del flusso di lavoro come numero di versione della specifica di modello. Nell'unità successiva si apprenderà uno schema di controllo delle versioni più complesso.
Salvare le modifiche apportate al file .
Verificare ed eseguire il commit della definizione del flusso di lavoro
Verificare che il file template-spec-linux-app-service.yml sia simile all'esempio seguente:
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
In caso contrario, aggiornarlo in modo che corrisponda a questo esempio e salvarlo.
Eseguire il commit e il push delle modifiche nel repository Git eseguendo i comandi seguenti nel terminale di Visual Studio Code:
git add . git commit -m "Add lint and publish jobs to Linux App Service template spec workflow" git push
Questa è la prima volta che si esegue il push in questo repository, quindi è possibile che venga richiesto di accedere.
In Windows digitare 1 per eseguire l'autenticazione usando un Web browser e quindi premere INVIO.
In macOS selezionare Autorizza.
Verrà visualizzata una finestra del browser. Potrebbe essere necessario accedere di nuovo a GitHub. Seleziona Autorizza.
Attivare il flusso di lavoro
Nel browser selezionare la scheda Azioni.
Le esecuzioni del flusso di lavoro non riuscite sono già elencate, ma non è necessario preoccuparsi di esse. Le esecuzioni non sono riuscite perché le definizioni del flusso di lavoro non erano state ancora completate al momento della creazione del repository.
Selezionare il flusso di lavoro template-spec-linux-app-service, selezionare il pulsante Esegui flusso di lavoro e quindi selezionare Esegui flusso di lavoro.
GitHub avvia una nuova esecuzione del flusso di lavoro. Potrebbe essere necessario aggiornare la finestra del browser per visualizzare l'esecuzione.
Selezionare l'esecuzione più recente nell'elenco.
Attendere il completamento dell'esecuzione del flusso di lavoro. Al termine, la specifica del modello viene pubblicata in Azure.
Si noti il numero di esecuzione del flusso di lavoro, probabilmente 2.
Esaminare la specifica di modello in Azure
È anche possibile visualizzare la specifica di modello pubblicata nel portale di Azure.
Nel browser passare al portale di Azure.
Passare al gruppo di risorse ToyReusable e selezionare la specifica di modello linux-app-service.
Esaminare i dettagli della specifica di modello.
Si noti che il numero di Versione più recente e Versione corrisponde al numero di esecuzione del flusso di lavoro. Il flusso di lavoro usa il numero di esecuzione per il numero di versione della specifica di modello.