azure YAML -在部署作业中执行模板

8yoxcaq7  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(105)

我目前正在尝试用yaml文件来设置我的完整构建/发布管道。首先我尝试了不同的阶段(dev/staging/prod),它起作用了。现在我想添加一个批准,即部署不会在每个系统上自动发生。
因此我在TFS中添加了一个带有审批检查的环境。但是当我尝试设置yaml文件时,我总是得到一个错误。我不知道如何正确地设置它。
这是我的主yaml文件,名为release-pipeline.yaml

trigger:
- master

pool:
  name: POOL

stages:
- stage: BuildSolution
  jobs:
    - job: BuildSolutionJob
      displayName: Build
      workspace:
        clean: all
      steps:
        - template: yaml/BuildSolution.yml
        - template: yaml/CopyFiles.yml
        - template: yaml/PublishArtifact.yml
 
- stage: DeployOn_STAGING_System
  dependsOn: BuildSolution
  jobs:
    - job: Deploy_STAGING
    - template: yaml/Deploy.yml
      parameters:
        Environment: 'SITE'
        Staging: 1
- stage: Deploy_DEV_System
  dependsOn: BuildSolution
  jobs:
    - deployment: Deploy_DEV
      environment: ENVCHECK_DEV
      strategy:
        runOnce:
          deploy:
            steps:
            - template: yaml/Deploy.yml
            parameters:
              Environment: 'SITE'
              ViewDeploy: 1

这是我想要执行的Deploy.yml文件(只有一些代码片段):

parameters:
    - name: Environment
      type: string
    - name: ProdSystem
      type: number
      default: 0
    - name: Staging
      type: number
      default: 0
    - name: ViewDeploy
      type: number
      default: 0
    
jobs:
  - job:
    variables:
      artifactName: $[stageDependencies.BuildSolution.BuildSolutionJob.outputs['SetVariables.artifactName']]
      version: $[stageDependencies.BuildSolution.BuildSolutionJob.outputs['SetVariables.version']]
    steps:   
      - task: PowerShell@2
        displayName: Display given parameters
        inputs:
          targetType: inline
          script: >
          
            Write-Host "ArtifaceName: " $(artifactName)
            
            Write-Host "Environment for Deploy: " ${{ parameters.Environment }}
       
            Write-Host "##vso[task.setvariable variable=isStaging]${{ parameters.Staging }}"
          failOnStderr: true

当我尝试执行时,我得到以下错误:/释放管道.yml:意外的值“parameters”。
我需要如何更改此设置,使其在两种情况下都能与模板一起使用(无论是否进行环境审批检查)?
我尝试了https://samlearnsazure.blog/2020/02/05/approvals-in-environments/,当然还有不同的调用结构。但是没有任何帮助。在教程中,他们总是在“部署”下面有步骤,但是因为我有不同的站点和环境,所以我想/需要模板文件来保存工作。

0lvr5msh

0lvr5msh1#

我发现另一个帖子也是这个方向的。
我重新工作我的完整模板,以便我可以使用这种方法:DevOps template with conditional manual approval job这与我想要的不一样,但它可以工作。我的目标是,如果我在此站点上没有检查,我不想创建环境。只为我想要批准检查的站点创建环境。使用上述解决方案,我需要为每个站点创建环境,独立于我是否有检查。

相关问题