Övning – Skapa en GitHub-åtgärd för att skapa en containeravbildning
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:
Gå till din förgrenade lagringsplats i GitHub-väljer du fliken Actions.
På sidan Get started with GitHub Actions väljer du länken set up a workflow yourself.
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.
Ersätt standardarbetsflödet main.yml filnamn med azure-kubernetes-service.ymloch välj sedan Commit changes.
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.
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.
- Välj fliken Actions på lagringsplatsen.
- 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:
Välj fliken Actions i ditt arkiv.
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.
Välj jobbet buildImage.
Om du väntar några minuter bör stegen i sysslan slutföras framgångsrikt.
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