Oefening: de toepassingsinstallatiekopie voor de productie compileren
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.
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
Als u de pijplijn wilt bouwen, gaat u naar de fork van de voorbeeldopslagplaats op de GitHub-website en selecteert u het tabblad Acties .
Selecteer nieuwe werkstroom in het linkerdeelvenster.
Selecteer op de pagina Een werkstroom kiezen zelf een werkstroom instellen.
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.
Wijzig boven het bewerkingsvenster de naam van het bestand in
main.yml
build-production.yml
.Wijzig de
name
sleutel vanCI
inBuild and push the tagged build to production
.
De tagtrigger 'aan' maken
Wijzig de standaardtriggers in de sleutel on
.
Verwijder de tweede trigger en laat alleen de
push
-tags staan.Vervang de
branches
sleutel door de volgendetags
sleutel. Deze sleutel betekent dat de werkstroom alleen op specifieke tags wordt uitgevoerd. In dit geval wordt de werkstroom alleen uitgevoerd als de tag hetv*
patroon volgt, waaronderv1.0.0
.name: Build and push the tagged build to production on: push: tags: - 'v*'
De stap voor uitchecken configureren
Zoals in de vorige oefening:
- Wijzig de
jobs
sleutel vanubuntu-latest
inubuntu-20.04
. - Wijzig de naam van de
build
-sleutel inbuild_push_image
. - Verwijder in de
steps
sleutel de laatste twee voorbeeldstappen uit de sjabloon en behoud decheckout
optie.
- Wijzig de
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.
Zoek in het rechterdeelvenster naar Docker-aanmelding. Selecteer het eerste resultaat dat door Docker wordt gepubliceerd.
Selecteer onder Installatie het kopieerpictogram om de YAML voor gebruik te kopiëren.
Plak de gekopieerde YAML onder de
Fetch latest version
actie.Voeg de volgende waarden toe aan de
registry
,username
enpassword
sleutels:registry
:${{ secrets.ACR_NAME }}
username
:${{ secrets.ACR_LOGIN }}
password
:${{ secrets.ACR_PASSWORD }}
Verwijder de andere sleutels, omdat deze niet worden gebruikt in deze oefening.
Zoek in het rechterdeelvenster onder Marketplace naar docker-installatiekopieën voor bouwen en pushen en selecteer het eerste resultaat dat is gepubliceerd door Docker.
Selecteer onder Installatie het kopieerpictogram om de YAML voor gebruik te kopiëren.
Plak de gekopieerde YAML onder de laatste sleutel uit de eerder gekopieerde
docker-login
actie.Wijzig de naam van de
name
sleutel inBuild and push Docker images
Build and push production images
.Voeg de volgende waarden toe aan de
context
,push
entags
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 gebruiksteps.
van YAML is een veelgebruikte procedure om te verwijzen naar eerdere stappen in de pijplijn. Wanneer u in defetch_version
stap hebt gebruiktset-output
, stelt u de uitvoer van de stap in op de waarde van deGITHUB_REF
variabele. Deze uitvoer is nu beschikbaar in de pijplijn in hetsteps
object.Verwijder de andere sleutels, omdat deze niet worden gebruikt in deze oefening.
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 decheckout
enlogin
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.
Ga naar de fork van de voorbeeldopslagplaats op de GitHub-website. Selecteer in de rechterbovenhoek uw profielfoto en selecteer vervolgens Instellingen.
Selecteer Instellingen voor ontwikkelaars onderaan het linkermenu.
Selecteer Tokens voor persoonlijke toegang>(klassiek) in de vervolgkeuzelijst.
Selecteer Een persoonlijk toegangstoken genereren.
Geef onder Opmerking een naam op voor uw PAT, zoals myPersonalAccessTokenLM.
Schakel onder Bereiken selecteren het selectievakje naast de werkstroom in.
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.
Selecteer Token genereren onder aan de pagina.
Selecteer het kopieerpictogram om uw PAT te kopiëren. Sla de PAT op die u in latere stappen wilt gebruiken.
De tag-gebeurtenis activeren
Ga in Azure Cloud Shell naar uw gekloonde opslagplaats en voer deze uit
git pull
.Voer de volgende opdracht uit:
git tag -a v2.0.0 -m 'My first tag'
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.
Selecteer het tabblad Acties en controleer het actieve proces.
Wanneer het proces is voltooid, voert u de volgende opdracht uit in Cloud Shell, waarbij u deze
<ACR_NAME>
vervangt door uwACR_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.