我正在使用Jenkins,PowerShell和Batch来创建工件并维护版本控制,但我遇到的问题是Git没有像我期望的那样做。一项工作进入Upstream Job的工作区以获取git分支和AssemblyInfo.cs文件。然后,它对AssemblyInfo.cs文件中的AssemblyVersion进行必要的更改;但是,当我去提交时,我没有得到预期的结果......
我的代码如下:
CD "env:CurrentWorkspace" # variable containing ${WORKSPACE} value of upstream job
& git add .
& git status .
& git commit -m "some relavent update message"
& git push origin $env:CurrentBranch # This variable contains the branch name retrieved from the previous job
我的输出结果如下:
HEAD detached at 6737417
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: Project/Properties/AssemblyInfo.cs
[detached HEAD 02f2957] some relavent update message
Committer: jenkins <jenkins.full.name>
1 file changed, 1 insertion(+), 1 deletion(-)
Everything up-to-date
有时候“一切都是最新的”是一条似乎已推向预期分支的线。
变量$env:CurrentBranch
基本上是origin/branch-name
。我也尝试将其更改为与develop/branch-name
略有不同的内容,但最终由于无效的分支名称或类似内容而导致失败。
此时,我感到很茫然,因为我已经尝试了很多方法来实现这一点,而且我的大多数尝试只会产生一条看似成功的消息,但不会发生对分支的更改
我尝试改变命令,例如:
git push origin ($env:CurrentBranch+":"+$env:CurrentBranch)
git push HEAD:$env:CurrentBranch
我主要是在这里寻找方向,或者有人指出我做错了什么。
当在另一个Job中检出所述分支时,如何将更改推送到目标分支(我相信这是'分离的HEAD'的一个例子,但是,我还没有找到任何缓解我问题的东西)?
答案 0 :(得分:1)
看起来Jenkins会检查提交(分支HEAD),而不是分支本身。 (参见例如JENKINS-6856)
在您的脚本中,在<{em> git add/commit
a git checkout $CurrentBranch
之前尝试,确保您的新提交在分支中完成。然后它会被推。