Övning – Skapa en GitHub-åtgärd för att skapa en containeravbildning
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:
Gå till din förgrenade lagringsplats i GitHub och välj 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' 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.
Ersätt standardnamnet för arbetsflödesfilen main.yml med azure-kubernetes-service.ymloch välj Commit changessedan .
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.
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.
- Välj fliken på Actions lagringsplatsen.
- 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:
Välj fliken på Actions lagringsplatsen.
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.
Välj jobbet buildImage .
Om du väntar några minuter bör stegen i jobbet slutföras.
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