我有一个名为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变量。
注意:选中“修剪字符串”以进行字符串参数配置。
到底是什么问题?我在这个问题上到处搜索,并且已经尝试调试了几个月。
答案 0 :(得分:0)
从控制台日志中看,它确实看起来像在执行脚本期间打开了Vim。
现在根据git tag手册页(已添加重点)https://linux.die.net/man/1/git-tag:
如果传递了-a,-s或-u之一,则该命令将创建标记对象,并需要标记消息。 除非给出-m或-F,否则将启动编辑器以供用户键入标记消息。
以某种方式,看来您的命令在到达-m
标志之前就已被篡改。
-m
标志,并将问题参数保留到最后? git tag -f -m "Test tag" -a %Tag_Name% %SHA%
顺便说一句,我必须承认我在这里猜。抱歉,如果您已经尝试过此方法。