【问题标题】:Git tag on Jenkins windows batch command does not recognize SHA environment variableJenkins windows批处理命令上的Git标签无法识别SHA环境变量
【发布时间】:2019-05-21 10:40:57
【问题描述】:

我有一个名为 Git_Tag_Test 的 Jenkins 作业,其作业配置如下: 1)带参数构建:SHA和标签名是字符串参数 2)git scm
3)批处理命令来标记分支。

这个 Git_Tag_Test 作业是在 prod 部署步骤之后从 jenkins 管道调用的。当我手动输入 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 变量没有输出。

注意:“Trim the string”在字符串参数配置中被选中。

究竟是什么问题?我在这个问题上到处搜索,并且几个月来一直在尝试调试它。

【问题讨论】:

  • 还想指出,当我将 git_tag_test 作业的作业配置复制到管道步骤块(而不是称为另一个构建作业)时,这是同样的问题。

标签: git jenkins git-tag


【解决方案1】:

从您的控制台日志看来,Vim 确实在脚本执行期间被打开了。

现在根据git标签手册页(强调添加)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%

顺便说一句,我不得不承认我在这里猜测。抱歉,如果您已经尝试过。

【讨论】:

  • 我将 git 标记从 windows 批处理命令更改为 powershell。当 SHA 和 Tag_Name 参数作为变量传递时,似乎有一个隐藏的换行符。这适用于 powershell $Tag_Name1=$env:Tag_Name.TrimEnd() $SHA1=$env:SHA.TrimEnd() echo $Tag_Name1 echo $SHA1 git tag -f -a $Tag_Name1 $SHA1 -m "Test tag" git push -f --tags origin
猜你喜欢
  • 1970-01-01
  • 2017-06-13
  • 2012-01-26
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
相关资源
最近更新 更多