Esercizio - Creare un'azione GitHub per compilare un'immagine del contenitore

Completato

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:

  1. Passare al repository copiato tramite fork in GitHub e selezionare la Actions scheda .

  2. Nella pagina Get started with GitHub Actions, selezionare il collegamento set up a workflow yourself.

    Screenshot that shows the Actions tab in the GitHub repository, highlighting the workflow creation link.

  3. 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.

  4. Sostituire il nome del file predefinito del flusso di lavoro main.yml con azure-kubernetes-service.yml, quindi selezionare Commit changes.

  5. 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.

  6. 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.

  1. Nel repository, selezionare la scheda Actions.
  2. 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:

  1. Nel repository, selezionare la scheda Actions.

  2. 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.

  3. Selezionare il buildImage processo.

    Screenshot showing a GitHub workflow in progress.

  4. Se si attende qualche minuto, i passaggi del processo dovrebbero essere completati correttamente.

  5. 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