Oefening: een GitHub action maken om een containerimage te bouwen
In deze les voert u de volgende taken uit:
- Maak een GitHub-actie om een build-pijplijn te implementeren.
- Wijzig de couponservicecode om de buildwerkstroom te activeren.
- Controleer de voortgang van de buildwerkstroom in realtime.
De build-actie maken
De YAML-code in deze procedure definieert een GitHub-actie die:
- Wordt geactiveerd wanneer een commit wordt gepusht naar de broncode of eenheidstests van de couponservice in de
main
tak. - Definieert stapspecifieke omgevingsvariabelen.
- Heeft één taakof een set stappen die op dezelfde 'workflow runner' worden uitgevoerd, met de naam
Build and push image to ACR
.
Belangrijk
Triggervoorwaarden en andere artefacten van GitHub Actions of werkstromen zijn afhankelijk van de apps en omgevingen. Voor meer begrip worden details in dit voorbeeld eenvoudig gehouden. Zowel de build- als de implementatiewerkstromen zijn gericht op wijzigingen in de productservice, omdat alle microservices onder één opslagplaats worden bewaard. In een werkelijk productiescenario wordt elke microservice in hun eigen afzonderlijke opslagplaats bewaard.
Voer de volgende stappen uit om de GitHub Actions-buildactie te maken:
Ga naar uw geforkte opslagplaats in GitHub-en selecteer het tabblad Actions.
Selecteer op de pagina Get started with GitHub Actions de koppeling set up a workflow yourself.
Plak op de volgende pagina de volgende YAML-code in de 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 }} .
Vervang de naam van uw Azure Container Registry- door de ACR-naam die u in de vorige les hebt gemaakt; bijvoorbeeld acseshop186748394.
Vervang de standaardwerkstroom main.yml bestandsnaam door azure-kubernetes-service.ymlen selecteer Commit changes.
Selecteer Commit changes in het scherm Commit directly to the main branch en selecteer vervolgens Commit changes.
U heeft het buildproces voor uw CI/CD-pijplijn voltooid.
Voer in uw terminal deze opdracht uit om de huidige versies van de productservice weer te geven die zijn opgeslagen in de ACR:
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
Als u de AZURE_CONTAINER_REGISTRY vervangt door de naam van uw ACR, ziet u uitvoer die er ongeveer als volgt uitziet:
Result ---------------------------------------- v1
De build activeren
De buildworkflow wordt automatisch geactiveerd zodra je het workflowbestand commit. U kunt de build ook handmatig activeren.
- Selecteer in uw opslagplaats het tabblad Actions.
- Selecteer aan de linkerkant onder All workflowsde Build and deploy an app to AKS werkstroom en selecteer vervolgens Run workflow.
De build bewaken
Om de realtime voortgang van de build te bekijken:
Selecteer in uw opslagplaats het tabblad Actions.
Kies de meest recente workflowuitvoering die wordt vermeld voor de Build and deploy an app to AKS-werkstroom. De naam van de run is het commitbericht dat u in de vorige stap hebt gebruikt.
Selecteer de buildImage taak.
Als u een paar minuten wacht, zouden de stappen in de taak succesvol voltooid moeten zijn.
Voer deze opdracht opnieuw uit in uw terminal om de versies van de productservice weer te geven die zijn opgeslagen in de ACR.
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
U zou een uitvoer moeten zien die vergelijkbaar is met het volgende, waarbij een nieuwe image-versie is toegevoegd aan de ACR vanuit de GitHub-werkstroom:
Result ---------------------------------------- 8c75edb7a349ec570bd4eac397015bc3c547186e v1