Oefening: de toepassingsinstallatiekopie voor de productie compileren

Voltooid

In de vorige oefening hebt u de faseringswerkstroom gebouwd voor het bouwen en publiceren van de toepassingsinstallatiekopie. In deze les bouwt u een productiewerkstroom die gebruikmaakt van de getagde versietrigger.

Diagram that shows the procession from triggers, through three build steps, to the deploy steps in a pipeline.

In deze oefening gaat u het volgende doen:

  • Bouw de werkstroom Acties.
  • Maak de on tag trigger.
  • Bouw en push de productie-installatiekopieën.
  • Genereer een persoonlijk toegangstoken (PAT).
  • Activeer de tag-gebeurtenis.

De GitHub Actions-werkstroom maken

  1. Als u de pijplijn wilt bouwen, gaat u naar de fork van de voorbeeldopslagplaats op de GitHub-website en selecteert u het tabblad Acties .

  2. Selecteer nieuwe werkstroom in het linkerdeelvenster.

    Screenshot that shows the New workflow button on the GitHub Actions page.

  3. Selecteer op de pagina Een werkstroom kiezen zelf een werkstroom instellen.

  4. Kopieer en plak de basiswerkstroom in het bewerkingsvenster:

    # This is a basic workflow to help you get started with Actions
    
    name: CI
    
    # Controls when the action will run. Triggers the workflow on push or pull request
    # events but only for the main branch
    on:
      push:
        branches: [ main ]
      pull_request:
        branches: [ main ]
    
    # A workflow run is made up of one or more jobs that can run sequentially or in parallel
    jobs:
      # This workflow contains a single job called "build"
      build:
        # The type of runner that the job will run on
        runs-on: ubuntu-latest
    
        # Steps represent a sequence of tasks that will be executed as part of the job
        steps:
          # Checks out your repository under $GITHUB_WORKSPACE, so your job can access it
          - uses: actions/checkout@v2
    
          # Runs a single command using the runners shell
          - name: Run a one-line script
            run: echo Hello, world!
    
          # Runs a set of commands using the runners shell
          - name: Run a multi-line script
            run: |
              echo Add other actions to build,
              echo test, and deploy your project.
    
  5. Wijzig boven het bewerkingsvenster de naam van het bestand in main.yml build-production.yml.

  6. Wijzig de name sleutel van CI in Build and push the tagged build to production.

De tagtrigger 'aan' maken

Wijzig de standaardtriggers in de sleutel on.

  1. Verwijder de tweede trigger en laat alleen de push-tags staan.

  2. Vervang de branches sleutel door de volgende tags sleutel. Deze sleutel betekent dat de werkstroom alleen op specifieke tags wordt uitgevoerd. In dit geval wordt de werkstroom alleen uitgevoerd als de tag het v* patroon volgt, waaronder v1.0.0.

    name: Build and push the tagged build to production
    
    on:
      push:
        tags:
          - 'v*'
    

De stap voor uitchecken configureren

  1. Zoals in de vorige oefening:

    • Wijzig de jobs sleutel van ubuntu-latest in ubuntu-20.04.
    • Wijzig de naam van de build-sleutel in build_push_image.
    • Verwijder in de steps sleutel de laatste twee voorbeeldstappen uit de sjabloon en behoud de checkout optie.
  2. Maak een nieuwe stap waarmee de benodigde versiegegevens worden verzameld. U gebruikt de ::set-output interne opdracht om deze stap te maken. Voeg de volgende regels toe onder de afrekenactie:

    - name: Fetch latest version
      id: fetch_version
      run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
    

    Uw YAML-bestand, zonder de opmerkingen, moet eruitzien als in het volgende voorbeeld:

    name: Build and push the tagged build to production
    
    on:
      push:
        tags:
          - 'v*'
    
    jobs:
      build_push_image:
        runs-on: ubuntu-20.04
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Fetch latest version
            id: fetch_version
            run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
    

Docker-stappen toevoegen

Hetzelfde als voor de faseringswerkstroom voegt u de Docker Login en Build and push Docker images stappen toe.

  1. Zoek in het rechterdeelvenster naar Docker-aanmelding. Selecteer het eerste resultaat dat door Docker wordt gepubliceerd.

  2. Selecteer onder Installatie het kopieerpictogram om de YAML voor gebruik te kopiëren.

  3. Plak de gekopieerde YAML onder de Fetch latest version actie.

  4. Voeg de volgende waarden toe aan de registry, usernameen password sleutels:

    • registry: ${{ secrets.ACR_NAME }}
    • username: ${{ secrets.ACR_LOGIN }}
    • password: ${{ secrets.ACR_PASSWORD }}
  5. Verwijder de andere sleutels, omdat deze niet worden gebruikt in deze oefening.

  6. Zoek in het rechterdeelvenster onder Marketplace naar docker-installatiekopieën voor bouwen en pushen en selecteer het eerste resultaat dat is gepubliceerd door Docker.

  7. Selecteer onder Installatie het kopieerpictogram om de YAML voor gebruik te kopiëren.

  8. Plak de gekopieerde YAML onder de laatste sleutel uit de eerder gekopieerde docker-login actie.

  9. Wijzig de naam van de name sleutel in Build and push Docker images Build and push production images.

  10. Voeg de volgende waarden toe aan de context, pushen tags sleutels:

    • context: .
    • push: true
    • tags: ${{secrets.ACR_NAME}}/contoso-website:latest,${{secrets.ACR_NAME}}/contoso-website:${{ steps.fetch_version.outputs.TAG }}

    U ziet hoe de waarde van de tags sleutel verschilt van de faseringswerkstroom. Het gebruik steps. van YAML is een veelgebruikte procedure om te verwijzen naar eerdere stappen in de pijplijn. Wanneer u in de fetch_version stap hebt gebruiktset-output, stelt u de uitvoer van de stap in op de waarde van de GITHUB_REF variabele. Deze uitvoer is nu beschikbaar in de pijplijn in het steps object.

  11. Verwijder de andere sleutels, omdat deze niet worden gebruikt in deze oefening.

  12. Voeg nog een actie toe die wordt aangeroepen docker/setup-buildx-action tussen de uitgecheckte actie en de aanmeldingsactie om de build-engine in te stellen die Docker moet gebruiken. Kopieer het volgende codefragment en plak het tussen de checkout en login acties.

    - name: Set up Buildx
      uses: docker/setup-buildx-action@v3.0.0
    

    Uw YAML-bestand, zonder de opmerkingen, moet eruitzien als in het volgende voorbeeld:

    name: Build and push the tagged build to production
    
    on:
      push:
        tags:
          - 'v*'
    
    jobs:
      build_push_image:
        runs-on: ubuntu-20.04
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Fetch latest version
            id: fetch_version
            run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
    
          - name: Set up Buildx
            uses: docker/setup-buildx-action@v3.0.0
    
          - name: Docker Login
            uses: docker/login-action@v3.0.0
            with:
              registry: ${{ secrets.ACR_NAME }}
              username: ${{ secrets.ACR_LOGIN }}
              password: ${{ secrets.ACR_PASSWORD }}
    
          - name: Build and push production images
            uses: docker/build-push-action@v5.0.0
            with:
              context: .
              tags: ${{secrets.ACR_NAME}}/contoso-website:latest,${{secrets.ACR_NAME}}/contoso-website:${{ steps.fetch_version.outputs.TAG }}
              push: true
    

De wijzigingen doorvoeren

Als u uw wijzigingen wilt doorvoeren, selecteert u de knop Wijzigingen doorvoeren in de rechterbovenhoek. Voer een beschrijving in voor de doorvoer en selecteer Wijzigingen doorvoeren.

Deze keer wordt de productieactie niet geactiveerd, omdat u geen nieuwe tag hebt gepusht, maar de eerdere faseringsactie activeert en een nieuwe latest installatiekopieën bouwt.

Een persoonlijk toegangstoken genereren (PAT)

U hebt een PAT nodig om uw tags in de volgende stap te pushen en het implementatiescript in een latere eenheid uit te voeren.

  1. Ga naar de fork van de voorbeeldopslagplaats op de GitHub-website. Selecteer in de rechterbovenhoek uw profielfoto en selecteer vervolgens Instellingen.

  2. Selecteer Instellingen voor ontwikkelaars onderaan het linkermenu.

  3. Selecteer Tokens voor persoonlijke toegang>(klassiek) in de vervolgkeuzelijst.

  4. Selecteer Een persoonlijk toegangstoken genereren.

  5. Geef onder Opmerking een naam op voor uw PAT, zoals myPersonalAccessTokenLM.

  6. Schakel onder Bereiken selecteren het selectievakje naast de werkstroom in.

    Screenshot that shows the personal access tokens page.

    Notitie

    Het werkstroombereik verleent beheerdersopslagplaats toegang tot de GitHub-acties. U hebt deze toegang nodig om uw tags in de volgende stap te pushen en het implementatiescript in een latere eenheid uit te voeren.

  7. Selecteer Token genereren onder aan de pagina.

  8. Selecteer het kopieerpictogram om uw PAT te kopiëren. Sla de PAT op die u in latere stappen wilt gebruiken.

    Screenshot that shows the personal access token after it's created.

De tag-gebeurtenis activeren

  1. Ga in Azure Cloud Shell naar uw gekloonde opslagplaats en voer deze uit git pull.

  2. Voer de volgende opdracht uit:

    git tag -a v2.0.0 -m 'My first tag'
    
  3. Voer de volgende opdracht uit. Geef uw PAT op als het wachtwoord wanneer u hierom wordt gevraagd.

    git push --tags
    

    Belangrijk

    De oorspronkelijke opslagplaats maakt gebruik van v1.0.0, dus u moet een andere tag pushen omdat er geen duplicaten kunnen bestaan.

  4. Selecteer het tabblad Acties en controleer het actieve proces.

  5. Wanneer het proces is voltooid, voert u de volgende opdracht uit in Cloud Shell, waarbij u deze <ACR_NAME> vervangt door uw ACR_NAME, om te bevestigen dat er twee tags worden vermeld in de resultaten.

    az acr repository show-tags --repository contoso-website --name <ACR_NAME> -o table
    

Ga verder met de volgende les voor meer informatie over het gebruik van Helm, een pakketprogramma voor Kubernetes-toepassingen, om uw pijplijn te automatiseren.