首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用YAML文件部署到Azure Devops中的不同环境

如何使用YAML文件部署到Azure Devops中的不同环境
EN

Stack Overflow用户
提问于 2021-03-17 06:33:57
回答 1查看 1.5K关注 0票数 2

你能帮我做下面的事吗。

我正在构建Azure函数应用程序V3,并使用Azure管道构建和部署Azure函数应用程序和ARM下到Dev环境。现在,我想将同样的部署部署到UAT。我不知道如何使用YAML拥有不同的环境。请找到我正在使用的azure-pipeline.yml文件

代码语言:javascript
复制
name: $(Build.DefinitionName)-$(Date:yyyyMMdd)$(Rev:.r)

trigger:
  - dev
resources:
  repositories:
    - repository: pipeline
      name: Pipeline
      type: git

pool:
  vmImage: 'windows-latest'

variables:
- name: Folder.BaseRepo # Location in repo where the templates are stored
  value: $(Build.SourcesDirectory)/Finance
- name: Folder.Templates # Location in repo where the templates are stored
  value: infrastructure

stages:
- stage: Build
  displayName: 'Build'
  jobs:
    - job: PublishTemplatesAndScripts
      displayName: 'Publish Templates and Scripts'
      steps:
        - template: 'publish-templates.yml@pipeline'
          parameters:
            templateFolder: '$(Folder.Templates)'
            artifactName: 'templates'
            pipelineRepository: pipeline
            pipelineRepositoryPath: pipeline
            
          
        - task: DotNetCoreCLI@2
          displayName: 'Restore dependencies'
          inputs:
            command: 'restore'
            projects: '$(Folder.BaseRepo)/Finance.sln'
            feedsToUse: 'select'
            vstsFeed: 'ac1301c4-6618-4824-a09e-0042d9871fb5/58ed1ece-4d06-46f7-b947-XXXX36281c4'
          enabled: true
        - task: DotNetCoreCLI@2
          displayName: 'Build function app'
          inputs:
            projects: '$(Folder.BaseRepo)/Finance.sln'
            command: 'build'
            arguments: '--configuration Release'
          enabled: true
        - task: DotNetCoreCLI@2
          displayName: 'Test function app'
          inputs:
            projects: '$(Folder.BaseRepo)/Finance.sln'
            command: 'test'
            arguments: '--configuration Release'
          enabled: false
        - task: DotNetCoreCLI@2
          displayName: 'Publish function app'
          inputs:
            command: 'publish'
            publishWebProjects: false
            projects: '$(Folder.BaseRepo)/src/Finance/Finance.csproj'
            arguments: '--output $(Build.ArtifactStagingDirectory)/publish --configuration Release'
          enabled: true
        - task: PublishPipelineArtifact@1
          displayName: 'Publish function app output'
          inputs:
            targetPath: '$(Build.ArtifactStagingDirectory)/publish'
            artifact: 'drop'
            publishLocation: 'pipeline'
          enabled: true

- stage: Development
  displayName: 'Development'
  jobs:
    - deployment: DevelopmentAzure
      displayName: 'Development Azure'
      environment: 'Development'
      #uses runtime expression
        strategy:
         runOnce:
           deploy:
             steps:
               - template: 'deploy-template.yml@pipeline'
                 parameters:
                   entryTemplateName: MyArm.json
                   templateParametersName: MyArm.dev.parameters.json
                   deploymentResourceManagerConnection: '$(Azure.NonProd.ResourceManagerConnection)'
                   deploymentSubscriptionIdentifier: '$(Azure.NonProd.SubscriptionId)'
                   resourceManagerConnection: '$(Azure.Dev.ResourceManagerConnection)'
                   subscriptionIdentifier: '$(Azure.Dev.SubscriptionId)'
                   resourceGroupName: '$(Resource_Group)'
                   outputVariablePrefix: AzureDeployment

    - deployment: DevelopmentFunctions
      displayName: 'DevelopmentFunctions'
      environment: 'Development'
      dependsOn: DevelopmentAzure
      strategy:
        runOnce:
          deploy:
            steps:
  
              - task: AzureFunctionApp@1
                inputs:
                  azureSubscription: 'ServiceConnection-XXXXX-DevTest'
                  appType: 'functionApp'
                  appName: 'XXX-xxx-dev-funcapp'
                  package: '$(Pipeline.Workspace)/drop/*.zip'
                  deploymentMethod: 'zipDeploy'
                enabled: true 

那么将它部署到测试环境的方法是什么呢?是否需要在同一个回购中创建另一个具有不同触发器的yaml文件?或者在相同的yaml文件中使用不同的阶段,当UAT分支发生更改时,在阶段上应用一些条件,然后部署到仅UAT阶段(而不是开发阶段)。

任何帮助都将不胜感激!提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-17 13:43:00

您只需要添加另一个阶段,为部署到Test环境提供一些条件。

通常,您可以设置一个多级管道,其中包含应用程序的主要进程,例如“构建”、“测试”和“部署”。和发布管道一样,您也可以为同一管道中的每个部署环境设置一个阶段。

在您的示例中,如果您希望在UAT分支上发生新的更改时,可以触发对Test环境的部署,则可以在Test环境的stage上设置如下条件。

代码语言:javascript
复制
stages:
. . .
- stage: Test 
  displayName: 'Deploy to Test environment'
  dependsOn: Build
  condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/UAT'))
. . .

有关更多细节,您可以看到:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66668056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档