You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions脚本中传递fork仓库pull_request的检出信息

解决方案

步骤1:提取Fork PR对应的关键信息

GitHub针对pull_request事件内置了上下文变量,可以直接获取你需要的Fork仓库地址和对应提交SHA:

  • Fork仓库克隆地址:${{ github.event.pull_request.head.repo.clone_url }}
  • PR对应的提交SHA:${{ github.event.pull_request.head.sha }}
  • 目标分支(你要合并到的本仓库分支,默认是main):${{ github.event.pull_request.base.ref }}
    注意:pull_request事件触发时默认的GITHUB_SHA是GitHub自动模拟合并后的临时提交SHA,不存在于任何分支,不能直接用来拉取代码

步骤2:修改Workflow配置传递参数

把上面的变量作为环境变量传入执行步骤,同时追加到你的Python启动参数里,修改后的配置如下:

on: pull_request
jobs:
   pw:
    runs-on: [self-hosted, pwp]
    strategy:
      fail-fast: false
      max-parallel: 2
      matrix:
        include:
                - runname: FMS with intel 18
                  runscript: python3 /home/pw/storage/pw_api_python/FMStestStartClusters.py cluster
                - runname: FMS with intel 2021 container
                  runscript: python3 /home/pw/storage/pw_api_python/FMSintel21StartClusters.py cluster_two
    steps:
                - name: FMS make check
                  env:
                          RUNNAME: ${{ matrix.runname }}
                          RUNSCRIPT: ${{ matrix.runscript }}
                          FORK_REPO_URL: ${{ github.event.pull_request.head.repo.clone_url }}
                          PR_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
                          TARGET_BRANCH: ${{ github.event.pull_request.base.ref }}
                  run: $RUNSCRIPT $FORK_REPO_URL $PR_COMMIT_SHA $TARGET_BRANCH

步骤3:调整脚本逻辑实现合并

  • 首先在Python脚本里新增三个入参接收传入的Fork仓库地址、PR提交SHA、目标分支,再把这三个参数传给下游的Bash脚本
  • 在Bash脚本里替换你的代码拉取逻辑为以下内容:
# 克隆本仓库指定目标分支
git clone <你的本仓库FMS.git地址> --branch $TARGET_BRANCH --single-branch FMS && cd FMS
# 拉取Fork仓库的对应提交
git pull $FORK_REPO_URL $PR_COMMIT_SHA --no-rebase

注意事项

  • 如果涉及私有仓库,你可以把GITHUB_TOKEN拼到克隆地址里,地址格式为https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/用户名/仓库名.git,需要确保Workflow有读取PR的权限
  • 若要避免合并冲突导致流程异常,可以在pull命令前加git config user.email "action@github.com"和git config user.name "GitHub Action"配置默认提交身份
  • 如果不需要保留合并记录,也可以用git fetch $FORK_REPO_URL $PR_COMMIT_SHA && git cherry-pick FETCH_HEAD的逻辑替代pull

内容的提问来源于stack exchange,提问作者byrdman1982

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:06:04