Jenkins推送更改为Remote Branch

时间:2017-11-20 19:02:12

标签: git powershell jenkins

问题

我正在使用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'的一个例子,但是,我还没有找到任何缓解我问题的东西)?

1 个答案:

答案 0 :(得分:1)

看起来Jenkins会检查提交(分支HEAD),而不是分支本身。 (参见例如JENKINS-6856

在您的脚本中,在<{em> git add/commit a git checkout $CurrentBranch之前尝试,确保您的新提交在分支中完成。然后它会被推。