geo*_*k24 9 continuous-integration continuous-deployment github-actions
我是 Github Actions 的新手,我正在尝试找到一种方法来实现以下功能:每当一个步骤失败时,它会显示它失败(将提供正确的反馈),但仍会继续执行其他步骤。
目前,失败导致步骤停止:

我见过最流行的建议是使用 continue-on-error,但这似乎使该步骤的结论为“成功”,除非您进入日志,否则不会显示它失败。

在上面的屏幕截图中,“秘密”步骤失败了,但除非输入日志,否则它似乎是成功的。
在阅读此线程时,我开始怀疑 GH 操作中可能尚不存在此功能。
我还尝试为每个步骤和/或工作使用条件。例如,我尝试过:
if: ${{ success() }} || ${{ failure() }} - 这根本没有提供所需的功能,步骤失败并且下一步没有开始。
if: succeeded() || failed()- 从上面的 Github 社区线程中获取此语法,但它生成了一个语法错误(这是有道理的,因为它与此处指定的语法不兼容)。
总而言之,我正在寻找一种方法来使失败的步骤表明它们失败了,并且仍然使工作流继续进行下一步。
谢谢!
MS *_*nds 20
这continue-on-error确实很受欢迎,部分原因可能是您可以为每个步骤或整个作业设置它。I\xe2\x80\x99m 不确定你是否意识到这一点,这个解决方案就是我正在寻找的答案。
更新与此答案的评论相反,您不会得到一个人造(含义:错误)绿色图标 - 他们改变了行为,您将看到失败图标(尽管脚本当然会继续)。
\n因此,如果其中一个步骤失败,这将继续所有步骤:
\nJob:\n MyRun:\n runs-on: ubuntu-latest\n\n continue-on-error: true\n \n steps:\n - name: Step One\n run: curl --fail -o dates.csv https://doesnotexist.com/dates.csv\n - name: Step Two\n run: date >> dates.csv\nRun Code Online (Sandbox Code Playgroud)\n仅当 \xe2\x80\x9cStep One\xe2\x80\x9d 失败时才会继续,如果 \xe2\x80\x9cStep Two\xe2\x80\x9d 失败,它将中断并停止:
\nJob:\n MyRun:\n runs-on: ubuntu-latest\n \n steps:\n - name: Step One\n run: curl --fail -o dates.csv https://doesnotexist.com/dates.csv\n continue-on-error: true\n - name: Step Two\n run: date >> dates.csv\nRun Code Online (Sandbox Code Playgroud)\n
只是补充一下这个旧对话:
行为发生了变化。我的作业标记为continue-on-error: true 确实显示“失败”图标,而不是虚假的“成功”图标。工作流程随后继续进行。
如果作业通过 转入外部工作流程uses:,则必须进入外部continue-on-error文件中的作业。它无法在主工作流程中继续工作。也就是说,以下给出了语法错误:
jobs:
my_continue_on_error_job:
uses: ./.github/workflows/other_workflow.yml
continue-on-error: true
Run Code Online (Sandbox Code Playgroud)
它失败了:
工作流程无效。.github/workflows/main_workflow.yml(行:201,列:5):意外值“错误时继续”
当我将其移至continue-on-errorother_workflow 中的作业时,它起作用了。
令我惊讶的是,感谢@smac89 的建议 - 添加if: always()似乎可以解决问题。我仍然想知道为什么if: ${{ success() }} || ${{ failure() }}失败,但该解决方案目前似乎有效。感谢您的帮助!
| 归档时间: |
|
| 查看次数: |
3498 次 |
| 最近记录: |