使用set-output作为工作流命令失败,退出代码为3



我不知道这里是否有一个问题在我的一个步骤关于github- workflowjob。

步骤如下:

- name: check_tf_code
id: tf_check 
run: |
terraform fmt -check
echo '::set-output name=bash_return_Value::$?'

,此步骤在日志中的错误输出为:Error: Process completed with exit code 3

这里可能有什么问题?GitHub是否无法为$?进行bash评估以获得提示上次(terraform)命令是否成功?

运行步骤使用set -eo pipefail运行(参见文档);这意味着如果任何命令具有非零退出状态,则该作业将终止,包括当该命令是管道的一部分时。

在您的示例中,这意味着如果terraform fmt -check具有非零退出状态,则永远不会运行下一行。

那么,您的输出将是字面上的$?,因为Bash不会在单引号中展开任何内容。你必须使用

echo "::set-output name=bash_return_Value::$?"

但是你已经知道,当这行被击中时,$?的值是0

如果您想在命令失败时做一些事情,您可以执行

if ! terraform fmt -check; then
# Do something
fi

因为if条件不会触发set -e行为。

相关内容

  • 没有找到相关文章

最新更新