Osc*_*r P 17 github-api github-actions
我有一个问题,当我想使用 yaml 文件中的 GitHub 上下文获取作业 id 时,它会返回一个字符串:
- name: Test
run: |
sendEmail ${{github.job]}
Run Code Online (Sandbox Code Playgroud)
我得到这样的回应:
sendEmail Job_Test
Run Code Online (Sandbox Code Playgroud)
在 API 的 GitHub 文档中,它说了以下内容,这是一个整数字段:

我的问题是,它是什么或者如何获取上下文来获取作业 id、整数值?
Grz*_*ski 14
没有直接的方法可以做到这一点 - 这些不是相同的值。
我知道的唯一解决方案是:
github.job获取钥匙/repos/{owner}/{repo}/actions/runs/{run_id}/jobs有一个 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 }}
Run Code Online (Sandbox Code Playgroud)
此信息在 github 上下文级别中不可用,但是您可以使用唯一的作业信息(例如 runner.name)过滤掉它。通过这种方式,您可以获得任何情况下的作业 ID,包括矩阵。
- name: Get Job ID from GH API
id: get-job-id
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
jobs=$(gh api repos/${{ github.repository }}/actions/runs/${{ github.run_id}}/attempts/${{ github.run_attempt }}/jobs)
job_id=$(echo $jobs | jq -r '.jobs[] | select(.runner_name=="${{ runner.name }}") | .id')
echo "job_id=$job_id" >> $GITHUB_OUTPUT
- name: Display Job ID
run: |
echo Job ID: ${{ steps.get-job-id.outputs.job_id }}
echo My full job URL is ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/job/${{ steps.get-job-id.outputs.job_id }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10601 次 |
| 最近记录: |