我正在尝试解决 Azure DevOps Pipeline 的配置问题。我在主管道中使用模板,但在某些情况下,只有传递了上一个管道,下一个管道才能工作。上一个模板passed
结果基于日志的输出。
我的管道的简短版本:
- deployment: Development
<cutting off the rest of the code>
- checkout: APP
- script: |
ansible-playbook \
playbooks/installation.yml
- template: templates/app_log.yml@Pipelines
parameters:
ssh: $(Endpoint)
port: $(Port)
- template: templates/app_symlink.yml@Pipelines
condition: and(succeeded(), eq(variables['appLog.status'], 'Succeeded'))
parameters:
ssh: $(Endpoint)
port: $(Port)
模板/app_app.yml
parameters:
- name: ssh
type: string
displayName: 'SSH'
- name: port
type: string
displayName: 'Port'
- name: name
type: string
default: 'appLog'
<cutting off the rest of the code>
当 app_log.yml 通过检查所有测试的状态完成其工作时,它会显示All tests passed
哪些测试应被视为触发器,以通过路径创建指向新版本应用程序的符号链接,但是,在我尝试创建一些符号链接if
之前-template
,或者如我在上面的代码中所示,每次都会导致错误(现在它会像标题中那样显示错误)。另一方面,即使一个测试失败,它也不应该创建任何符号链接。
使用模板时不能设置条件,因此以下内容无效:
解决方法是
condition
向模板添加一个参数templates/app_symlink.yml
-例如:您必须对模板中所有依赖条件的步骤执行相同的操作。
使用模板:
考虑向您的作业/步骤模板添加其他参数,以使它们可配置和可扩展,例如
timeoutInMinutes
,retryCountOnTaskFailure
等。