Jenkins Windows Batch命令上的Git标签无法识别SHA环境变量

时间:2018-12-20 22:01:39

标签: git jenkins git-tag

我有一个名为Git_Tag_Test的Jenkins作业,具有以下作业配置: 1)使用参数构建:SHA和标签名称是字符串参数 2)git scm
3)batch命令标记分支。

在部署产品之后,从詹金斯管道调用此Git_Tag_Test作业。当我手动输入SHA和标记名称参数而不将其作为变量传递时,Git_Tag_Test作业成功运行。问题是,当我使用SHA名称和标记名称作为变量从管道调用作业时,无法识别SHA。

这是批处理命令的样子:

echo %Tag_Name%
echo %SHA%
git tag -f -a %Tag_Name% %SHA% -m "Test tag"
git push --tags origin

这是git标签的输出。

C:\Program Files (x86)\Jenkins\workspace\Git_Tag_Test>echo 2.10.6928.18660 
2.10.6928.18660

C:\Program Files (x86)\Jenkins\workspace\Git_Tag_Test>echo 9e47b72e6   
9e47b72e6

C:\Program Files (x86)\Jenkins\workspace\Git_Tag_Test>git tag -f -a 
2.10.6928.18660

Vim: Warning: Output is not to a terminal  
Vim: Warning: Input is not from a terminal  
7[?47h[27m[24m[0m[H[J[24;1H<ogram Files 
(x86)/Jenkins/workspace/Git_Tag_Test/.git/TAG_EDITMSG"
<86)/Jenkins/workspace/Git_Tag_Test/.git/TAG_EDITMSG" [unix] 5L, 
93C[2;1H[1m[36m#
# [0m[1m[34mWrite a message for tag:[0m
[1m[36m#   2.10.6928.18660
# Lines starting with '#' will be ignored.[0m
[1m[34m~                                                                               
[7;1H~                                                                               
[8;1H~                                                                               
[9;1H~                                                                               
[10;1H~                                                                               
[11;1H~                                                                               

Echo显示标签名,并且通过传递变量识别SHA,但是在运行git tag命令时,不会输出SHA变量。

注意:选中“修剪字符串”以进行字符串参数配置。

到底是什么问题?我在这个问题上到处搜索,并且已经尝试调试了几个月。

1 个答案:

答案 0 :(得分:0)

从控制台日志中看,它确实看起来像在执行脚本期间打开了Vim。

现在根据git tag手册页(已添加重点)https://linux.die.net/man/1/git-tag

  

如果传递了-a,-s或-u之一,则该命令将创建标记对象,并需要标记消息。 除非给出-m或-F,否则将启动编辑器以供用户键入标记消息。

以某种方式,看来您的命令在到达-m标志之前就已被篡改。

  • 也许您的参数中隐藏了换行符?尝试在脚本中进行一些手动清理(为此,使用Powershell可能会更容易)。
  • 尝试在命令的较早位置移动-m标志,并将问题参数保留到最后? git tag -f -m "Test tag" -a %Tag_Name% %SHA%

顺便说一句,我必须承认我在这里猜。抱歉,如果您已经尝试过此方法。