【发布时间】:2021-02-15 15:01:18
【问题描述】:
问题
我在 Azure Dev Ops 管道中通过 SSH 在远程计算机上运行内联 shell 脚本。根据某些情况,运行管道应引发自定义警告。
该功能有效,尽管方式非常扭曲:运行管道时,会出现警告always。更准确地说:
- 如果条件不满足,则出现一次警告。
- 如果满足条件,则会出现两次警告。
下面的例子应该能清楚地说明问题。
示例
假设我们有以下.yaml 管道模板。请根据您的设置调整pool 和sshEndpoint 设置。
pool: 'Default'
steps:
- checkout: none
displayName: Suppress regular checkout
- task: SSH@0
displayName: 'Run shell inline on remote machine'
inputs:
sshEndpoint: 'user@machine'
runOptions: inline
inline: |
if [[ 3 -ne 0 ]]
then
echo "ALL GOOD!"
else
echo "##vso[task.logissue type=warning]Something is fishy..."
fi
failOnStdErr: false
预期行为
所以,上面的 bash 脚本应该回显ALL GOOD!,因为 3 不是 0。因此,不应触发警告消息。
当前行为
但是,当我在 Azure Dev Ops 中运行上述管道时,步骤日志概述显示存在警告:
日志本身看起来像这样(连接细节涂黑了):
因此,即使代码采用ALL GOOD! 代码路径,也会出现警告消息。我认为这是因为整个 bash 脚本都回显到了日志中——但这只是一个假设。
问题
如何确保警告仅在满足条件时才出现在执行的管道中?
【问题讨论】:
标签: azure-devops azure-pipelines azure-pipelines-yaml