Esercizio - Creare un'azione GitHub per compilare un'immagine del contenitore
In questa unità si completeranno le attività seguenti:
- Creare un'azione GitHub per implementare una pipeline di compilazione.
- Modificare il codice del servizio di gestione dei coupon per attivare il flusso di lavoro di compilazione.
- Monitorare lo stato di avanzamento del flusso di lavoro di compilazione in tempo reale.
Creare l'azione di compilazione
Il codice YAML in questa procedura definisce un'azione GitHub che:
- Si attiva quando viene eseguito il push di un commit nel codice sorgente o negli unit test del servizio di gestione dei coupon nel ramo
main
. - Definisce le variabili di ambiente specifiche dei singoli passaggi.
- Include un processo o una sequenza di passaggi eseguiti nello stesso strumento di esecuzione del flusso di lavoro, denominato
Build and push image to ACR
.
Importante
Le condizioni di trigger e altri artefatti o flussi di lavoro di GitHub Actions dipendono dalle app e dagli ambienti. Per facilitare la comprensione, in questo esempio i dettagli sono stati semplificati. Sia la compilazione che i flussi di lavoro di distribuzione hanno come ambito modifiche al servizio prodotto perché tutti i microservizi vengono mantenuti in un unico repository. In uno scenario di produzione effettivo, ogni microservizio viene mantenuto nel proprio repository separato.
Completare i passaggi seguenti per creare l'azione di compilazione di GitHub Actions:
Passare al repository copiato tramite fork in GitHub e selezionare la Actions scheda .
Nella pagina Get started with GitHub Actions, selezionare il collegamento set up a workflow yourself.
Nella pagina successiva, incollare il codice YAML seguente nell'editor.
name: Build and deploy an app to AKS on: push: branches: ["main"] workflow_dispatch: env: # Local environment variables used later in the workflow AZURE_CONTAINER_REGISTRY: 'name of your Azure Container Registry' CONTAINER_NAME: 'productservice' RESOURCE_GROUP: 'rg-eshop' CLUSTER_NAME: 'aks-eshop' DEPLOYMENT_MANIFEST_PATH: './product.yml' DOCKER_PATH: './DockerfileProducts.acr' jobs: buildImage: permissions: contents: read id-token: write runs-on: ubuntu-latest steps: # Checks out the repository this file is in - uses: actions/checkout@v3 # Logs in with your Azure credentials stored in GitHub secrets - name: Azure login uses: azure/login@v1.4.6 with: creds: '${{ secrets.AZURE_CREDENTIALS }}' # Builds and pushes an image up to your Azure Container Registry - name: Build and push image to ACR run: | az acr build --file ${{ env.DOCKER_PATH }} --image ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.RESOURCE_GROUP }} .
Sostituire il nome del Registro Azure Container con il nome del Registro Azure Container creato nell'unità precedente, ad esempio acseshop186748394.
Sostituire il nome del file predefinito del flusso di lavoro main.yml con azure-kubernetes-service.yml, quindi selezionare Commit changes.
Nella schermata Commit changes, selezionare Commit directly to the main branch e quindi Commit changes.
La creazione del flusso di lavoro di compilazione per la pipeline CI/CD è stata completata.
Nel terminale eseguire questo comando per visualizzare le versioni correnti del servizio prodotto archiviate nel Registro Azure Container:
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
Sostituendo il AZURE_CONTAINER_REGISTRY con il nome del Registro Azure Container, verrà visualizzato un output simile al seguente:
Result ---------------------------------------- v1
Attivare la build
Il flusso di lavoro di compilazione viene attivato automaticamente non appena si esegue il commit del file del flusso di lavoro. È anche possibile attivare la compilazione manualmente.
- Nel repository, selezionare la scheda Actions.
- A sinistra, in All workflowsselezionare il Build and deploy an app to AKS flusso di lavoro e quindi selezionare Run workflow.
Monitorare la compilazione
Per visualizzare lo stato di avanzamento in tempo reale della build:
Nel repository, selezionare la scheda Actions.
Selezionare l'esecuzione del flusso di lavoro più recente elencata per il flusso di lavoro Build and deploy an app to AKS. Il nome dell'esecuzione è il messaggio di commit usato nel passaggio precedente.
Selezionare il buildImage processo.
Se si attende qualche minuto, i passaggi del processo dovrebbero essere completati correttamente.
Nel terminale eseguire di nuovo questo comando per visualizzare le versioni del servizio prodotto archiviate nel Registro Azure Container.
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
Verrà visualizzato un output simile al seguente, che mostra che è stata aggiunta una nuova versione dell'immagine al Registro Azure Container dal flusso di lavoro di GitHub:
Result ---------------------------------------- 8c75edb7a349ec570bd4eac397015bc3c547186e v1