使用jenkins进行git多分支项目打包时的一个小问题

本文描述了在Jenkins部署过程中遇到的一个问题:在执行jobB后切换到branchA进行部署时,Jenkins始终获取branchB的代码。通过调整fetch参数解决了此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天给公司一个git项目创建了一个分支。原来的分支为"branchA",新的分支是"branchB",相应的在jenkins中部署任务分别是"jobA"和"jobB"。

在执行jobB成功后,进行jobA不能进行分支切换,尝试在构建前使用"execute shell"执行脚本,git checkout 到branchA。开始以为问题解决了,但是在branchA提交了几个commit后进行jobA部署。出现问题,jenkins在git取代码时总是取的branchB。我明明在构建前的脚本里指定了"git checkout branchA"。

查看jenkins部署日志取代码的部分。

<pre> > git rev-parse --is-inside-work-tree Fetching changes from the remote Git repository > git config remote.origin.url ssh://gerrit/project Fetching upstream changes from ssh://gerrit/project > git --version > git fetch --tags --progress ssh://gerrit/tms-provider +refs/heads/*:refs/remotes/origin/* > git rev-parse FETCH_HEAD^{commit} Checking out Revision 4b640f***** (branchA) > git config core.sparsecheckout > git checkout -f 4b640f**** > git rev-parse FETCH_HEAD^{commit} > git rev-list 87cce3*** </pre>

我在本地的git历史中可以看到当前branchA的最新commit是dba05****,而构建服务器上执行fetch后的FETCH_HEAD指向的确实另一个分支branchB的最新commit。(不明白为什么会总指向另一个分支的commit,有熟悉git的同学可以交流指导下啊。)

当然修改还是比较容易的,在fetch的时候直接指定具体引用,这样在fetch代码时就会只fetch指定分支的了。 Refspec:+refs/heads/branchname:refs/remotes/origin/branchname

在此输入图片描述

转载于:https://my.oschina.net/bfleeee/blog/414410

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值