Exercício - Promova para o estágio de Desenvolvimento
A equipe tem um plano e está pronta para começar a implementar seu pipeline de lançamento. Seu projeto do Azure DevOps está configurado e suas instâncias do Serviço de Aplicativo do Azure estão prontas para receber artefatos de compilação.
Neste ponto, lembre-se que o pipeline da equipe tem apenas duas etapas. A primeira etapa produz o artefato de construção. A segunda etapa implanta o aplicativo Web Space Game no Serviço de Aplicativo. Aqui, você acompanha Andy e Mara enquanto eles modificam o pipeline. Eles serão implantados no ambiente do Serviço de Aplicativo que corresponde ao estágio de Desenvolvimento .
O estágio de desenvolvimento é semelhante ao estágio de implantação que você fez no módulo Criar um pipeline de liberação no Azure Pipelines . Lá, você usou um gatilho de CI para iniciar o processo de compilação. Aqui você faz o mesmo.
Obter o ramo do GitHub
Aqui, você busca a release
ramificação no GitHub. Você também faz check-out, ou muda para, a filial.
Esta ramificação serve como sua ramificação de lançamento . Ele contém o projeto Space Game usado nos módulos anteriores. Ele também contém uma configuração do Azure Pipelines para começar.
Para buscar e alternar para a ramificação:
No Visual Studio Code, abra o terminal integrado.
Para buscar uma ramificação nomeada
release
no repositório da Microsoft e alternar para essa ramificação, execute os seguintesgit
comandos.git fetch upstream release git checkout -B release upstream/release
O formato desses comandos permite que você obtenha o código inicial do repositório Microsoft GitHub, conhecido como
upstream
. Em breve, você enviará essa ramificação para o repositório GitHub, conhecido comoorigin
.Como etapa opcional, no Visual Studio Code, abra azure-pipelines.yml. Familiarize-se com a configuração inicial.
A configuração é semelhante à básica que você criou no módulo Criar um pipeline de liberação com o Azure Pipelines . Ele cria apenas a configuração de lançamento do aplicativo. Para fins de aprendizagem, essa configuração não executa as verificações de qualidade ou segurança que você configurou nos módulos anteriores.
Nota
Uma configuração mais robusta pode especificar as ramificações que participam do processo de compilação. Por exemplo, para ajudar a verificar a qualidade do código, você pode executar testes de unidade sempre que enviar uma alteração em qualquer ramificação. Você também pode implantar o aplicativo em um ambiente que executa testes mais exaustivos. Mas você faz essa implantação somente quando tem uma solicitação pull, quando tem um release candidate ou quando mescla o código para main.
Para obter mais informações, consulte Implementar um fluxo de trabalho de código em seu pipeline de compilação usando gatilhos de pipeline Git e GitHub e Build.
Promover alterações no estágio de desenvolvimento
Aqui, você modifica sua configuração de pipeline para promover a compilação para o estágio de desenvolvimento .
No Visual Studio Code, modifique azure-pipelines.yml.
trigger: - '*' variables: buildConfiguration: 'Release' releaseBranchName: 'release' 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'
Essa configuração é semelhante à que você criou no módulo anterior. Lá, você e a equipe construíram uma prova de conceito para implantação contínua. Mas observe essas diferenças, que são destacadas no exemplo de código anterior:
- Essa configuração define variáveis no início do arquivo. As variáveis são usadas em todo o pipeline. Eles definem qual configuração construir (
Release
). Eles também definem o nome da sua ramificação de liberação (release
). - O estágio Deploy da prova de conceito agora é chamado de Dev.
- O estágio de desenvolvimento usa uma condição que direciona o sistema para executar o estágio somente quando o estágio anterior for bem-sucedido e a ramificação atual for
release
. Essa configuração garante que os recursos de versão sejam implantados somente no ambiente de desenvolvimento . - A etapa de implantação usa a
WebAppNameDev
variável para implantar na instância do Serviço de Aplicativo associada ao ambiente de Desenvolvimento .
Nota
Na prática, você pode implantar a partir de alguma outra ramificação, como
main
. Você pode incluir uma lógica que permita que as alterações sejam promovidas para o estágio de desenvolvimento a partir de várias ramificações, comorelease
emain
.- Essa configuração define variáveis no início do arquivo. As variáveis são usadas em todo o pipeline. Eles definem qual configuração construir (
No terminal integrado, adicione azure-pipelines.yml ao índice. Confirme a alteração e envie-a para o GitHub.
Gorjeta
Antes de executar esses comandos do Git, salve azure-pipelines.yml.
git add azure-pipelines.yml git commit -m "Deploy to the Dev stage" git push origin release
No Azure Pipelines, vá para a compilação. À medida que ele é executado, rastreie a compilação.
Após a conclusão da compilação, para retornar à página de resumo, selecione o botão Voltar.
Você vê que a implantação foi concluída com êxito.
Em um navegador da Web, vá para a URL associada à instância do Serviço de Aplicativo para seu ambiente de desenvolvimento .
Se você ainda tiver a guia do navegador aberta, atualize a página. Se não se lembrar do URL, encontre-o no portal do Azure, na página de detalhes do Serviço de Aplicativo.
Você vê que o site do Jogo Espacial está implantado no Serviço de Aplicativo e em execução.
Como etapa opcional, no Azure Pipelines, selecione Ambientes. Em seguida, selecione o ambiente de desenvolvimento .
O Azure Pipelines registra seu histórico de implantação. No histórico, você pode rastrear as alterações do ambiente até confirmações de código e itens de trabalho.