配置create-pull-request自动创建release分支到master回并PR的问题
问题根因
核心错误是create-pull-request Action的branch参数配置错误:
- 这个参数指定的是Action用来生成PR的专属工作分支,Action运行时会强制重置该分支状态,基于配置的
base分支重新构建提交内容。 - 你当前把这个参数设置成了触发工作流的源release分支本身,Action执行时直接把原release分支重置到了master的提交点位,原本release分支上领先master的11个提交被覆盖,最终判定分支和master无差异,自然无法创建PR。从你贴的日志里
Pushing pull request branch to 'origin/release/v1.2.3'、forced update的记录也能印证这个逻辑。
修正方案
按以下规则调整配置即可:
- 给PR工作分支设置独立命名,绝对不能复用触发工作流的原有release分支
- checkout步骤配置拉取全量提交历史,避免浅克隆导致分支提交对比异常
- 可直接使用GitHub内置环境变量获取当前分支信息,减少冗余的shell解析步骤
修正后的可直接使用的工作流配置:
on: push: branches: - release/* jobs: release-mergeback: runs-on: self-hosted steps: - uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: Parse release version id: ver run: echo "num=$(echo ${GITHUB_REF_NAME} | awk -F'/' '{print $2}')" >> $GITHUB_OUTPUT - uses: peter-evans/create-pull-request@v4 with: commit-message: Mergeback of Release ${{ steps.ver.outputs.num }} to master title: "[master] <- [${GITHUB_REF_NAME}] Mergeback Release ${{ steps.ver.outputs.num }}" branch: "automation/mergeback-release-${{ steps.ver.outputs.num }}" base: master body: | Autogenerated by Github Actions. Mergeback of Release to ensure changes are persisted in Master.
配置说明
- 上述配置运行时,Action会自动创建独立的临时分支承载PR内容,不会修改原有release分支的任何提交
- 同一release分支后续有新推送时,Action会自动更新已存在的对应PR,不会重复生成新PR
fetch-depth: 0参数保证Action能拉到全量提交记录,正确识别release分支和master之间的差异
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

