Øvelse – Opprett et Azure DevOps-datasamlebånd for å distribuere den skybaserte appen
Lederen din vil at du skal endre CI/CD-en for bedriftens eShop-app til å bruke Azure Pipelines. Nå oppretter du en Azure DevOps Pipeline for å bygge og distribuere produkttjenesten.
Opprett en Azure DevOps Pipeline
Important
Før du begynner, må du ha en Azure DevOps-konto. Hvis du ikke har en, kan du opprette en gratis på dev.azure.com.
- Logg på dev.azure.com.
- Velg + Nytt prosjekt.
- Som prosjektnavn angir du eShop-distribusjon.
- La Synlighet være satt til Privat, og velg Opprett.
- Velg Pipeliner til venstre, og velg deretter Opprett pipeline.
- Velg GitHub for Hvor er koden din på Koble til-siden.
- Hvis du blir bedt om det, logger du på GitHub og godkjenner Azure Pipelines for å få tilgang til GitHub-kontoen din.
- Velg det forgrenede repositoriet for Velg et repositorium.
- På Konfigurer-siden velger du alternativet Distribuer til Azure Kubernetes Service .
- Velg Azure-abonnementet i ruten Distribuer til Azure Kubernetes-tjenesten , og velg deretter Fortsett.
- Hvis du blir bedt om det, logger du på Azure-abonnementet.
- For Klyngen velger du AKS-klyngen du opprettet i den forrige enheten aks-eshop.
- La Eksisterende være merket av for navneområdet, og velg deretter standard.
- For Container Registry velger du Azure Container Registry du opprettet i den forrige enheten, for eksempel acseshop186748394.
- For bildenavnet angir du productservice.
- For serviceporten skriver du inn 8080.
- Velg Valider, og konfigurer.
Se gjennom YAML-datasamlebåndfilen
Azure Pipelines bruker YAML-filer til å definere trinnene for å bygge og distribuere appen. YAML-filen lagres i GitHub-repositoriet og ble opprettet automatisk for deg, basert på informasjonen du oppgav.
La oss se gjennom YAML-filen:
trigger:
- main
resources:
- repo: self
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: '3bcbb23c-6fca-4ff0-8719-bfbdb64a89b1'
imageRepository: 'productservice'
containerRegistry: 'acseshop186748394.azurecr.io'
dockerfilePath: '**/Dockerfile'
tag: '$(Build.BuildId)'
imagePullSecret: 'acseshop18674839414442d34-auth'
# Agent VM image name
vmImageName: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
- upload: manifests
artifact: manifests
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
jobs:
- deployment: Deploy
displayName: Deploy
pool:
vmImage: $(vmImageName)
environment: 'PhilStollerymod9cloudnativeexercisecode-1959.default'
strategy:
runOnce:
deploy:
steps:
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: createSecret
secretName: $(imagePullSecret)
dockerRegistryEndpoint: $(dockerRegistryServiceConnection)
- task: KubernetesManifest@0
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
imagePullSecrets: |
$(imagePullSecret)
containers: |
$(containerRegistry)/$(imageRepository):$(tag)
Utløser- og ressursdelene definerer når pipelinen skal kjøres. I dette tilfellet kjører datasamlebåndet når en endring er forpliktet til hovedgrenen av repositoriet.
Variabeldelen definerer variablene som brukes i pipelinen. Variablene brukes til å definere Azure Container Registry og Dockerfile som skal brukes.
YAML definerer deretter en Build-jobb som bruker ubuntu-latest-agenten. Jobben bruker Docker-oppgaven til å bygge og sende bildet til Azure Container Registry.
Den siste fasen er å distribuere den oppdaterte produkttjenesten til AKS. Jobben bruker KubernetesManifest-oppgaven til å distribuere avbildningen til AKS.
Kjør datasamlebåndet
Velg Lagre og kjør øverst til høyre på SIDEN Se gjennom datasamlebåndet yaml. I Lagre og kjør-ruten:
- Velg Opprett en ny gren for denne utførelsen.
- La alle de andre alternativene være satt til standardinnstillingene.
- Velg Lagre og kjør.
Overvåke og feilsøke datasamlebåndet
Azure Pipelines overvåkes og administreres fra Azure DevOps-portalen. La oss se på utdataene for å kjøre datasamlebåndet du opprettet.
Sammendragssiden viser deg alle fasene i det løpende datasamlebåndet. Du kan velge en fase for å vise trinnene mer detaljert. Om et øyeblikk ser du at datasamlebåndet har mislyktes. Velg Bygg-fasen .
I byggefasen kan du se at bygget mislyktes. Velg bygg og skyv et bilde til Azure Container Registry-trinnet . Feilen i loggfilen viser:
##[error]Unhandled: No Dockerfile matching /home/vsts/work/1/s/**/Dockerfile was found.
Rette feilen
Gå tilbake til sammendragssiden for datasamlebåndet i DevOps. Du skal redigere det opprettede datasamlebåndet for å løse feilen.
Velg Flere handlinger-menyen øverst til høyre, og velg deretter Rediger pipeline.
Linje 17 i YAML-filen definerer Dockerfile som skal brukes, og som standard forventer pipelinen at det er en fil med navnet Dockerfile i roten av repositoriet.
eShop bruker en annen docker-fil for produkttjenesten kalt DockerfileProducts. Rediger linje 17 som skal være:
dockerfilePath: '**/DockerfileProducts.acr'Velg Lagre.
I Lagre-ruten velger du Lagre.
Velg Kjør, og velg deretter Kjør i Kjør pipeline-ruten.
Se Build-fasen fullføres. Distribuer-fasen stanser midlertidig til du velger den og lar den kjøre.
Datasamlebåndet er fullført. Velg Distribuer-fasen for å vise trinnene.