如果前一个操作失败但当前操作成功,是否有任何方法可以触发 Github 操作?

jua*_*uan 6 github github-actions

我已经设置了一个 Github 操作来在失败时发送一封电子邮件(用于集成测试),并且我想发送另一封电子邮件来通知它已恢复;为此,我需要知道上一次运行是否失败但当前运行是否成功。

这是失败的代码:

(...)
- name: Send mail if failed
  if: ${{ failure() }}
  uses: juanformoso/action-send-mail@1
  with:
(...)
Run Code Online (Sandbox Code Playgroud)

有办法实现我需要的吗?就像是${{ if success_but_previous_failed() }}

编辑:我的意思是在工作流程“运行”之间,这是我想要检测的情况:

在此输入图像描述

最后一次运行应该发送“测试已恢复”邮件

sol*_*tex 3

您可以使用GitHub Actions API并向以下位置发出请求:

GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs
Run Code Online (Sandbox Code Playgroud)

为了获取特定工作流程的所有运行,然后解析输出以检索最新的运行结果。

我将使用这个公共存储库向您展示一个示例:

  - name: Get latest workflow run status
    id: latest-workflow-status
    run: echo "::set-output name=result::$(curl https://api.github.com/repos/sdras/awesome-actions/actions/workflows/32764/runs 2>/dev/null | jq -r '.workflow_runs[0].conclusion')"

  - name: Run only if previous workflow run failed and the current succeeded
    if: ${{ success() && steps.latest-workflow-status.outputs.result == 'failure' }}
    run: ...
Run Code Online (Sandbox Code Playgroud)

您可以从此请求获取工作流 ID:

https://api.github.com/repos/sdras/awesome-actions/actions/workflows