如何获取 GitHub CI 作业构建 id (check_run_id)?

Posted

技术标签:

【中文标题】如何获取 GitHub CI 作业构建 id (check_run_id)?【英文标题】:How to get the GitHub CI job build id (check_run_id)? 【发布时间】:2021-08-10 15:31:27 【问题描述】:

我在 Windows 机器上为 GitHub CI 使用带有 PowerShell 脚本的 build.cake 文件任务。我正在尝试通过工作流 .yml 文件中的 GitHub Actions 获取 check_run_id。这可能吗?

即https://github.com/Siddharth/my-project/pull/15/checks?check_run_id=2508655272

我需要 workflows.yml 文件中的 id(2508655272) 值。我已附上我的工作流程文件。

我试图从 GitHub 参数本身获取 check_run_id 值,检查了 GitHub 文档。没有找到直接获取check_run_id的选项。

有什么办法可以得到check_run_id?

您能否就如何在我的工作流 .yml 文件中实现这一点或任何其他替代方法提出解决方案?

【问题讨论】:

【参考方案1】:

对您来说,更新此查询可能为时已晚。

我找到了以下方法来获得确切的值。使用任何直接的环境变量或操作都不是一件容易的事。基本上使用带有 run_id 的操作 GitHub API。

下面是 GitHub-action 步骤的 sn-p。

- run: |
    URI="https://api.github.com"
    API_HEADER="Accept: application/vnd.github.v3+json"
    AUTH_HEADER="Authorization: token $ secrets.GITHUB_TOKEN "
      
    body=$(curl -sSL -H "$AUTH_HEADER" -H "$API_HEADER" "$URI/repos/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID/jobs")
    url=$(echo "$body" | jq .jobs | jq .[-1] | jq .html_url)
    id=$(echo "$body" | jq .jobs | jq .[-1] | jq .id)
    sha=$(echo "$body" | jq .jobs | jq .[-1] | jq -r .head_sha)
      
    echo ::set-output name=checkid::$id
  id: checkRunId
 ...
 ...

然后在您想在其他步骤中引用的任何地方使用 $ steps.checkRunId.outputs.checkid 输出变量..

如果这对您有帮助,请为答案投票。

【讨论】:

以上是关于如何获取 GitHub CI 作业构建 id (check_run_id)?的主要内容,如果未能解决你的问题,请参考以下文章

通过 github api 获取构建状态

Github Actions - 如何在 CI 构建时将 SCSS 编译为 CSS?

如何将值传递给 Gitlab CI 作业

Gitlab CI:作业挂起克隆回购

如何使用 GITLAB 功能标志在 CI yml 文件中按顺序运行同一阶段的作业

GitLab CI 对 Docker 构建作业的无效参数