Упражнение. Повышение до промежуточной подготовки
Конвейер выпуска теперь состоит из трех этапов: сборка, разработка и тестирование. У вас и команды Tailspin есть еще один этап для реализации: промежуточное выполнение.
В этой части вы получите следующее:
- Создайте промежуточную среду в Azure Pipelines и назначьте себя утверждающим.
- Определите промежуточный этап, который выполняется только после того, как утверждающий проверяет результаты этапа тестирования.
Создание промежуточной среды
Здесь вы создадите среду в Azure Pipelines для промежуточного хранения. В целях обучения вы назначаете себя утверждающего. На практике вы назначите пользователям, которым требуется утвердить изменения перед переходом на следующий этап. Для команды Tailspin Амита утверждает изменения, чтобы они могли быть повышены от test до промежуточного.
Ранее в этом модуле вы указали параметры environment
для этапов Разработки и Тестирования. Ниже приведен пример этапа разработки.
- stage: 'Deploy'
displayName: 'Deploy the web application'
dependsOn: Build
jobs:
- deployment: Deploy
pool:
vmImage: 'ubuntu-20.04'
environment: dev
variables:
- group: Release
Можно также определить среду, которая включает в себя определенные критерии для выпуска, посредством Azure Pipelines. Эти критерии могут включать конвейеры, авторизованные для развертывания в среде. Вы также можете указать утверждения человека, необходимые для продвижения выпуска с одного этапа до следующего. Здесь вы указываете эти утверждения.
Чтобы создать промежуточную среду, выполните следующие действия.
В Azure Pipelines выберите "Среды".
Выберите новую среду.
В разделе "Имя" введите промежуточное значение.
В остальных полях оставьте значения по умолчанию.
Нажмите кнопку создания.
На странице промежуточной среды откройте раскрывающийся список и выберите Утверждения и проверка.
Выберите Утверждения.
В разделе "Утверждающие" выберите " Добавить пользователей и группы", а затем выберите свою учетную запись.
В разделе "Инструкции для утверждающих" введите "Утвердить это изменение", когда оно будет готово к промежуточному выполнению.
Нажмите кнопку создания.
Повышение уровня изменений в промежуточном режиме
Здесь вы изменяете конфигурацию конвейера, чтобы развернуть сборку на промежуточном этапе.
В Visual Studio Code измените azure-pipelines.yml следующим образом:
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'
Этот код добавляет промежуточный этап. Этап развертывается в промежуточной среде, которая включает утверждение выпуска.
Совет
Вероятно, вы заметили, что все три этапа развертывания выполните аналогичные действия. Вы можете использовать шаблоны для определения распространенных задач сборки один раз и повторного использования их несколько раз. Этот метод уже использовался в модуле Создания конвейера сборки с помощью модуля Azure Pipelines . В целях обучения мы повторяем шаги на каждом этапе.
В интегрированном терминале добавьте azure-pipelines.yml в индекс. Затем зафиксируйте изменение и отправьте его в GitHub.
Совет
Перед выполнением этих команд Git сохраните azure-pipelines.yml.
git add azure-pipelines.yml git commit -m "Deploy to Staging" git push origin release
В Azure Pipelines перейдите к сборке. Трассировка сборки при выполнении.
Когда сборка достигает промежуточной, вы увидите, что конвейер ожидает передачи всех проверка. В этом случае есть один проверка - утверждение выпуска вручную.
Вы можете настроить Azure DevOps для отправки уведомления по электронной почте, когда сборка требует утверждения. Приведем пример:
Выберите Проверка>Утвердить.
На практике, чтобы убедиться, что они соответствуют вашим требованиям, необходимо проверить изменения.
После завершения сборки откройте веб-браузер. Перейдите по URL-адресу, связанному с экземпляром Служба приложений для промежуточной среды.
Если у вас по-прежнему открыта вкладка браузера, обновите страницу. Если вы не помните URL-адрес, найдите его в портал Azure, на странице сведений о Служба приложений.
Вы видите, что веб-сайт Space Game развернут в Служба приложений и запущен.
В качестве дополнительного шага в Azure Pipelines выберите "Среды". Затем выберите промежуточную среду.
Azure Pipelines записывает журнал развертывания, который позволяет отслеживать изменения в среде обратно в фиксации кода и рабочие элементы.
Команда Tailspin собирается обсудить их прогресс. Амита утверждает изменения на этапе тестирования , а другие смотрят.
Тим: Чтобы сказать вам правду, сначала я был немного нервничает по поводу автоматизированных конвейеров выпуска. Но я очень люблю это сейчас, что я вижу, что он работает. Каждый этап может иметь собственную среду, связанные тесты и утверждающие. Конвейер автоматизирует много вещей, которые мы должны были сделать вручную. Но у нас все еще есть контроль над тем, где нам нужно.
Амита: Я мог представить, что мы делаем что-то подобное, чтобы повысить изменения от промежуточного до производства. Говоря о... когда мы добавим рабочую среду?
Энди: Вскоре. Я думаю, что мы все еще должны заполнить несколько частей здесь сначала, прежде чем мы добавим это.