如何在Jenkins Pipeline中从Git SCM检出指定commit提交?
问题解决方法
你之前使用的branches(master: ${COMMIT_SHA})属于语法错误,branches配置项仅支持传入字符串/字符串数组格式的Git引用值(支持分支名、标签名、完整/短Commit SHA),不接收键值对格式输入。
以下是可正常运行的修改后配置:
parameters { stringParam("COMMIT_SHA", "", "[Required] Short SHA of the commit used to build the image") } definition { cpsScm { scm { git { remote { url("https://github.mywork") credentials("mytoken") } // 直接使用传入的COMMIT_SHA参数作为检出目标 branches(params.COMMIT_SHA) extensions { // 可选配置:将本地工作区关联到master分支,符合你原本的分支使用习惯 localBranch("master") // 可选配置:关闭浅克隆,避免仓库设置了浅克隆策略时找不到对应Commit SHA cloneOptions { shallow(false) } } } } scriptPath("azure/pipelines/build_service.jenkins") } }
补充说明
- Git Commit SHA全局唯一,只要传入的SHA属于该仓库的提交,就会精准检出对应版本,不会拉取到其他分支的代码
- 如果你需要保留默认拉取master最新代码的能力,可以将
COMMIT_SHA参数的默认值设置为master,不传参数时会默认拉取master分支最新提交
内容的提问来源于stack exchange,提问作者prabhakar Reddy G
相关产品推荐
相关产品推荐

