Ćwiczenie — podwyższanie poziomu do przemieszczania
Potok wydania ma teraz trzy etapy: Kompilowanie, tworzenie i testowanie. Ty i zespół Tailspin mają jeszcze jeden etap do wdrożenia: Przemieszczanie.
W tej części wykonasz następujące elementy:
- Utwórz środowisko przejściowe w usłudze Azure Pipelines i przypisz się jako osoba zatwierdzająca.
- Zdefiniuj etap przejściowy , który jest uruchamiany dopiero po zweryfikowaniu wyników etapu testu przez osoby zatwierdzające.
Tworzenie środowiska przejściowego
W tym miejscu utworzysz środowisko w usłudze Azure Pipelines na potrzeby przemieszczania. W celach szkoleniowych przypiszesz sobie rolę osoby zatwierdzającej. W praktyce należy przypisać użytkowników, którzy są zobowiązani do zatwierdzenia zmian przed przejściem tych zmian do następnego etapu. W przypadku zespołu Tailspin Amita zatwierdza zmiany, aby mogły być promowane z testu na przejściowe.
Wcześniej w tym module określono environment
ustawienia zarówno dla etapów tworzenia, jak i testowania. Oto przykład etapu deweloperskiego.
- stage: 'Deploy'
displayName: 'Deploy the web application'
dependsOn: Build
jobs:
- deployment: Deploy
pool:
vmImage: 'ubuntu-20.04'
environment: dev
variables:
- group: Release
Środowisko można zdefiniować za pomocą usługi Azure Pipelines, która zawiera określone kryteria wydania. Te kryteria mogą obejmować potoki, które są autoryzowane do wdrożenia w środowisku. Można również określić zatwierdzenia człowieka, które są potrzebne do podwyższenia poziomu wydania z jednego etapu do następnego. W tym miejscu należy określić te zatwierdzenia.
Aby utworzyć środowisko przejściowe :
W obszarze Azure Pipelines wybierz pozycję Środowiska.
Wybierz pozycję Nowe środowisko.
W obszarze Nazwa wprowadź przemieszczanie.
Pozostaw wartości domyślne pozostałych pól.
Wybierz pozycję Utwórz.
Na stronie środowiska przejściowego otwórz listę rozwijaną, a następnie wybierz pozycję Zatwierdzenia i sprawdź.
Wybierz pozycję Zatwierdzenia.
W obszarze Osoby zatwierdzające wybierz pozycję Dodaj użytkowników i grupy, a następnie wybierz swoje konto.
W obszarze Instrukcje dla osób zatwierdzających wprowadź zatwierdź tę zmianę, gdy będzie gotowa do przemieszczania.
Wybierz pozycję Utwórz.
Podwyższanie poziomu zmian do przemieszczania
W tym miejscu zmodyfikujesz konfigurację potoku, aby wdrożyć kompilację na etapie przejściowym.
W programie Visual Studio Code zmodyfikuj plik azure-pipelines.yml w następujący sposób:
trigger: - '*' variables: buildConfiguration: 'Release' releaseBranchName: 'release' schedules: - cron: '0 3 * * *' displayName: 'Deploy every day at 3 A.M.' branches: include: - release always: false stages: - stage: 'Build' displayName: 'Build the web application' jobs: - job: 'Build' displayName: 'Build job' pool: vmImage: 'ubuntu-20.04' demands: - npm variables: wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '6.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - $(buildConfiguration)' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' zipAfterPublish: true - publish: '$(Build.ArtifactStagingDirectory)' artifact: drop - stage: 'Dev' displayName: 'Deploy to the dev environment' dependsOn: Build condition: | and ( succeeded(), eq(variables['Build.SourceBranchName'], variables['releaseBranchName']) ) jobs: - deployment: Deploy pool: vmImage: 'ubuntu-20.04' environment: dev variables: - group: Release strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: website' inputs: azureSubscription: 'Resource Manager - Tailspin - Space Game' appName: '$(WebAppNameDev)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip' - stage: 'Test' displayName: 'Deploy to the test environment' dependsOn: Dev #condition: eq(variables['Build.Reason'], 'Schedule') jobs: - deployment: Deploy pool: vmImage: 'ubuntu-20.04' environment: test variables: - group: 'Release' strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: website' inputs: azureSubscription: 'Resource Manager - Tailspin - Space Game' appName: '$(WebAppNameTest)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip' - stage: 'Staging' displayName: 'Deploy to the staging environment' dependsOn: Test jobs: - deployment: Deploy pool: vmImage: 'ubuntu-20.04' environment: staging variables: - group: 'Release' strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: website' inputs: azureSubscription: 'Resource Manager - Tailspin - Space Game' appName: '$(WebAppNameStaging)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'
Ten kod dodaje etap Przejściowy . Etap jest wdrażany w środowisku przejściowym , który obejmuje zatwierdzenie wydania.
Napiwek
Prawdopodobnie zauważyliśmy, że wszystkie trzy etapy wdrażania są zgodne z podobnymi krokami. Szablony służą do definiowania typowych zadań kompilacji jednorazowo i wielokrotnego ich ponownego użycia. Ta technika była już używana w module Tworzenie potoku kompilacji za pomocą usługi Azure Pipelines . W celach szkoleniowych powtarzamy kroki na każdym etapie.
W zintegrowanym terminalu dodaj plik azure-pipelines.yml do indeksu. Następnie zatwierdź zmianę i wypchnij ją do usługi GitHub.
Napiwek
Przed uruchomieniem tych poleceń usługi Git zapisz plik azure-pipelines.yml.
git add azure-pipelines.yml git commit -m "Deploy to Staging" git push origin release
W usłudze Azure Pipelines przejdź do kompilacji. Śledzenie kompilacji podczas jej uruchamiania.
Gdy kompilacja osiągnie wartość Staging, zobaczysz, że potok czeka na wszystkie testy, które mają być przekazywane. W takim przypadku istnieje jedna kontrola — ręczne zatwierdzenie wydania.
Możesz skonfigurować usługę Azure DevOps, aby wysyłać powiadomienia e-mail, gdy kompilacja wymaga zatwierdzenia. Oto przykład:
Wybierz pozycję Przejrzyj>zatwierdź.
W praktyce, aby sprawdzić, czy spełniają one twoje wymagania, należy sprawdzić zmiany.
Po zakończeniu kompilacji otwórz przeglądarkę internetową. Przejdź do adresu URL skojarzonego z wystąpieniem usługi App Service dla środowiska przejściowego .
Jeśli nadal masz otwartą kartę przeglądarki, odśwież stronę. Jeśli nie pamiętasz adresu URL, znajdź go w witrynie Azure Portal na stronie szczegółów usługi App Service.
Zobaczysz, że witryna internetowa Space Game jest wdrożona w usłudze App Service i działa.
Opcjonalnie w usłudze Azure Pipelines wybierz pozycję Środowiska. Następnie wybierz środowisko przejściowe .
Usługa Azure Pipelines rejestruje historię wdrożenia, co umożliwia śledzenie zmian w środowisku z powrotem do zatwierdzeń kodu i elementów roboczych.
Zespół Tailspin zbiera się w celu omówienia ich postępów. Amita zatwierdza zmiany na etapie testu , podczas gdy inni oglądają.
Tim: Aby powiedzieć prawdę, na początku byłem trochę zdenerwowany automatycznymi potokami wydań. Ale naprawdę podoba mi się to teraz, że widzę to działa. Każdy etap może mieć własne środowisko, skojarzone testy i osoby zatwierdzające. Potok automatyzuje wiele czynności, które musieliśmy wykonać ręcznie. Ale nadal mamy kontrolę nad tym, gdzie jej potrzebujemy.
Amita: Wyobrażam sobie, że robimy coś podobnego do promowania zmian z przemieszczania do produkcji. Mówienie o... kiedy dodajemy środowisko produkcyjne ?
Andy: Krótko. Myślę, że nadal musimy wypełnić kilka kawałków tutaj najpierw, zanim dodamy to.