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

Slutförd

I den här lektionen ska du göra följande:

  • 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 en incheckning skickas till kupongtjänstens källkods- eller enhetstester i grenen main .
  • Definierar stegspecifika miljövariabler.
  • Har ett jobb eller en uppsättning steg som körs på samma arbetsflödeslöpare med namnet Build and push image to ACR.

Viktigt!

Utlösarvillkor och andra artefakter i GitHub Actions eller arbetsflöden är beroende av apparna och miljöerna. 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 och välj fliken Actions .

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

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

  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'
    
    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å Azure Container Registry med det ACR-namn som du skapade i föregående enhet, till exempel acseshop186748394.

  4. Ersätt standardnamnet för arbetsflödesfilen main.yml med azure-kubernetes-service.ymloch välj Commit changessedan .

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

    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
    

Utlösa bygget

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

  1. Välj fliken på Actions lagringsplatsen.
  2. Välj arbetsflödet till vänster och All workflowsBuild and deploy an app to AKS välj Run workflowsedan .

Övervaka bygget

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

  1. Välj fliken på Actions lagringsplatsen.

  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 incheckningsmeddelande som du använde i föregående steg.

  3. Välj jobbet buildImage .

    Screenshot showing a GitHub workflow in progress.

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

  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