如何在GitHub Actions push事件中获取PR编号解决镜像报错问题
解决方案
方案1:调整工作流触发事件
github.event.number 仅在 pull_request 系列事件中可用,你可以直接将需要获取PR编号的工作流触发规则改为监听PR合并事件,PR合并时触发的逻辑和原push到目标分支的逻辑完全一致,配置示例如下:
# 工作流触发配置 on: pull_request: types: [closed] branches: - main # 替换为你需要监听的目标分支名 jobs: push-to-jfrog: # 仅当PR被合并时执行任务 if: github.event.pull_request.merged == true runs-on: ubuntu-latest steps: # 后续步骤直接使用 ${{ github.event.number }} 即可获取PR编号 ...
方案2:push事件中通过GitHub API查询关联PR编号
如果必须保留push触发的逻辑,可以在工作流中调用GitHub官方CLI查询当前提交关联的PR编号,步骤如下:
- 首先为工作流默认的
GITHUB_TOKEN配置PR读权限:
permissions: pull-requests: read
- 新增步骤查询PR编号并存为环境变量:
- name: Get associated PR number env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | PR_NUMBER=$(gh pr list --head ${{ github.ref_name }} --state merged --json number --jq '.[0].number') echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV
后续步骤直接使用 ${{ env.PR_NUMBER }} 即可获取到正确的PR编号。
方案3:调整镜像标签规则
如果镜像标签不强制要求绑定PR编号,可直接改用push事件原生支持的字段作为标签,从根源上消除PR编号的获取需求。常用的可选字段包括:
- 提交SHA:
${{ github.sha }}(可取前7位缩短使用) - 发布标签:
${{ github.ref_name }}(如果是tag push事件可直接用标签名)
你遇到的manifest不存在报错,本质是
github.event.number获取为空后拼接出了非法的镜像标签,导致拉取镜像时找不到对应资源,修正标签的取值逻辑后报错会自然解决。
内容的提问来源于stack exchange,提问作者ProjectLuo
相关产品推荐
相关产品推荐

