从使用上下文运行的工作流中获取作业 ID

我有一个问题,当我想在 yaml 文件中使用 GitHub 上下文获取作业 ID 时,它会以字符串响应:

  - name: Test
    run: |
      sendEmail ${{github.job]}

我得到这个回复:

sendEmail Job_Test

在 API 的 GitHub 文档中,它表示以下内容,这是一个整数字段: enter image description here

但是,在上下文的文档中它说它是 String: enter image description here

我的问题是,它是什么或如何获取上下文以获取工作 ID、整数值?

stack overflow Obtain job id from a workflow run using contexts
原文答案
author avatar

接受的答案

没有直接的方法可以做到这一点 - 这些值不同。

我知道的唯一解决方案是:

  1. 阅读 github.job 获取密钥
  2. 使用 API 获取工作流的作业列表: /repos/{owner}/{repo}/actions/runs/{run_id}/jobs
    3.通过名字找到job,获取id为int值

答案:

作者头像

有一个 GitHub 操作可以解决这个问题: https://github.com/marketplace/actions/github-actions-job_id-parser

 - name: Get Current Job Log URL
    uses: Tiryoh/gha-jobid-action@v0
    id: jobs
    with:
      github_token: ${{ secrets.GITHUB_TOKEN }}
      job_name: ${{ github.job }}

- name: Output Current Job Log URL
  run: echo ${{ steps.jobs.outputs.html_url }}
作者头像

您可以使用一个步骤使用 bash 输出 run_id,然后在另一个步骤中使用它

- name: Output run_id
  id: output_run_id
  shell: bash
  run: |
    run_id=${{ github.run_id }}
    echo "::set-output name=run_id::$run_id"

并在另一个步骤中使用它,如下所示:

- name: Use run_id from previous step
  uses: username/repo@tag
  with:
    run_id: ${{ steps.output_run_id.outputs.run_id }}
作者头像

我在 GitHub Community 上打开了以下问题以尝试将此信息添加到 GitHub Actions 元数据: https://github.com/orgs/community/discussions/40291