Övning – Skapa en GitHub-åtgärd för att skapa en containeravbildning

Slutförd

I den här lektionen slutför du följande uppgifter:

  • Skapa en GitHub-åtgärd för att implementera en bygg-pipeline.
  • Ändra koden för kupongtjänsten för att utlösa byggarbetsflödet.
  • Övervaka byggarbetsflödets förlopp i realtid.

Skapa byggåtgärden

YAML-koden i den här proceduren definierar en GitHub-åtgärd som:

  • Utlöses när ett commit trycks till kupongtjänstens källkod eller enhetstester i main-grenen.
  • Definierar stegspecifika miljövariabler.
  • Har ett jobbeller en uppsättning steg som körs på samma arbetsflödesmotor med namnet Build and push image to ACR.

Viktig

Utlösarvillkor och andra artefakter i GitHub Actions eller arbetsflöden är beroende av appar och miljöer. För att underlätta förståelsen hålls informationen enkel i det här exemplet. Både bygg- och distributionsarbetsflödena begränsas till produkttjänständringar eftersom alla mikrotjänster sparas under en enda lagringsplats. I ett verkligt produktionsscenario skulle varje mikrotjänst förvaras i sin egen separata lagringsplats.

Slutför följande steg för att skapa GitHub Actions-byggåtgärden:

  1. Gå till din förgrenade lagringsplats i GitHub-väljer du fliken Actions.

  2. På sidan Get started with GitHub Actions väljer du länken set up a workflow yourself.

    Skärmbild som visar fliken Åtgärder på GitHub-lagringsplatsen och som markerar länken för att skapa arbetsflödet.

  3. På nästa sida klistrar du in följande YAML-kod i redigeraren.

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

    Ersätt namnet på ditt Azure Container Registry- med det ACR-namn som du skapade i föregående lektion, till exempel acseshop186748394.

  4. Ersätt standardarbetsflödet main.yml filnamn med azure-kubernetes-service.ymloch välj sedan Commit changes.

  5. På skärmen Commit changes väljer du Commit directly to the main branch och sedan Commit changes.

    Du har skapat byggarbetsflödet för din CI/CD-pipeline.

  6. Kör det här kommandot i terminalen för att visa de aktuella versionerna av produkttjänsten som lagras i ACR:

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    Om du ersätter AZURE_CONTAINER_REGISTRY med namnet på din ACR bör du se utdata som liknar följande:

    Result
    ----------------------------------------
    v1
    

Starta byggprocessen

Byggarbetsflödet utlöses automatiskt så fort du checkar in arbetsflödesfilen. Du kan också utlösa bygget manuellt.

  1. Välj fliken Actions på lagringsplatsen.
  2. Välj arbetsflödet Build and deploy an app to AKS till vänster under All workflowsoch välj sedan Run workflow.

Övervaka bygget

Så här visar du byggets realtidsförlopp:

  1. Välj fliken Actions i ditt arkiv.

  2. Välj den senaste arbetsflödeskörningen som visas för Build and deploy an app to AKS arbetsflödet. Namnet på körningen är det commit-meddelande som du använde i föregående steg.

  3. Välj jobbet buildImage.

    Skärmbild som visar ett GitHub-arbetsflöde som pågår.

  4. Om du väntar några minuter bör stegen i sysslan slutföras framgångsrikt.

  5. I terminalen kör du det här kommandot igen för att visa versionerna av produkttjänsten som lagras i ACR.

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    Du bör se utdata som liknar följande, som visar att en ny avbildningsversion har lagts till i ACR från GitHub-arbetsflödet:

    Result
    ----------------------------------------
    8c75edb7a349ec570bd4eac397015bc3c547186e
    v1