如果满足特定条件,我正在尝试在 ADO yaml 构建中配置管道。以下是详细信息
- 我在 CI 管道所在的单独项目中共享了模板。(让我们说项目'A')
- CI 管道存在于一个单独的项目中。(假设项目“B”)
问题:我想在 CI 管道(在项目“B”中)中定义一个条件,该条件在验证 yaml 文件中是否存在来自(项目“A”)的指定模板作为构建步骤后开始构建
如果满足特定条件,我正在尝试在 ADO yaml 构建中配置管道。以下是详细信息
问题:我想在 CI 管道(在项目“B”中)中定义一个条件,该条件在验证 yaml 文件中是否存在来自(项目“A”)的指定模板作为构建步骤后开始构建
您是否需要检查模板文件是否存在或比较yaml文件中的一些代码
在您目前的情况下,我们建议您可以尝试将您的模板制作为模板 yaml 文件,然后我们可以使用资源、阶段和管道条件
这是示例演示脚本:
resources:
repositories:
- repository: templates
type: git
name: Tech-Talk/template
trigger:
paths:
include:
- "temp.yaml"
trigger: none
# variables:
# - name: Test
# value: TestGroup
pool:
vmImage: ubuntu-latest
stages:
- stage: A
jobs:
- job: A1
steps:
- checkout: templates
- bash: ls $(System.DefaultWorkingDirectory)
- bash: |
if [ -f temp.yaml ]; then
# this is used to check if the file is exist: if [ -f your-file-here ]
echo "##vso[task.setVariable variable=FILEEXISTS;isOutput=true]true"
else
echo "##vso[task.setVariable variable=FILEEXISTS;isOutput=true]false"
fi
# or on Windows:
# - script: echo ##vso[task.setvariable variable=FILEEXISTS;isOutput=true]true
name: printvar
- stage: B
condition: eq(dependencies.A.outputs['A1.printvar.FILEEXISTS'], 'true')
dependsOn: A
jobs:
- job: B1
steps:
- script: echo hello from Stage B
# - template: temp.yaml@templates
# parameters:
# agent_pool_name: ''
# db_resource_path: $(System.DefaultWorkingDirectory)
# variable_group: ${{variables.Test}}
更新:
如果您需要使用 Windows 代理,请参考此任务:
- task: PowerShell@2
name: printvar
inputs:
targetType: 'inline'
script: |
$file = '$(System.DefaultWorkingDirectory)\temp.yaml'
if([System.IO.File]::Exists($file)){
Write-Host "##vso[task.setvariable variable=FILEEXISTS;isOutput=true]true"
}
else{
Write-Host "##vso[task.setvariable variable=FILEEXISTS;isOutput=true]false"
}
附上我的测试结果: