GitLab CI如何在后续阶段使用当前流水线推送的新提交?
GitLab CI流水线使用新版本代码的解决方案
GitLab CI 本身不支持直接更新当前流水线绑定的提交——流水线启动后就固定关联触发它的初始提交,后续阶段只会用这份代码执行,没法中途切换到新推送的提交。不过可以通过两种方案实现你的需求:
方案一:拆分流水线,利用提交触发后续流程
- 第一阶段流水线:仅执行
python-semantic-release的版本更新与提交推送(不要加[skip ci]),让这个新版本提交自动触发新流水线。 - 配置新流水线的规则:只在提交信息包含版本更新标识(比如
chore(release):)时,执行打包和文档发布阶段。 - 优势:完全贴合GitLab CI原生工作流,逻辑清晰,无需额外权限配置。
方案二:同一流水线内拉取最新代码
- 在
python-semantic-release完成版本提交推送后,后续的打包、发布阶段先执行代码拉取操作,基于最新代码继续流程。 - 注意事项:确保CI Runner拥有分支的拉取权限(可通过配置SSH密钥或使用
CI_JOB_TOKEN实现),由于是工具自动生成的提交,冲突概率极低。 - 示例步骤:
- 执行版本更新推送:
python-semantic-release publish - 拉取最新代码:
git pull origin $CI_COMMIT_BRANCH - 基于拉取后的代码执行打包、文档发布任务。
- 执行版本更新推送:
这种方式能在原流水线内完成所有操作,但需要额外处理代码拉取的权限配置。
内容的提问来源于stack exchange,提问作者iHowell
相关产品推荐
相关产品推荐

