我目前正在尝试用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/,当然还有不同的调用结构。但是没有任何帮助。在教程中,他们总是在“部署”下面有步骤,但是因为我有不同的站点和环境,所以我想/需要模板文件来保存工作。
1条答案
按热度按时间0lvr5msh1#
我发现另一个帖子也是这个方向的。
我重新工作我的完整模板,以便我可以使用这种方法:DevOps template with conditional manual approval job这与我想要的不一样,但它可以工作。我的目标是,如果我在此站点上没有检查,我不想创建环境。只为我想要批准检查的站点创建环境。使用上述解决方案,我需要为每个站点创建环境,独立于我是否有检查。