2014-09-27 107 views
0

在运行电源外壳纸条詹金斯内部版本号在电源外壳脚本

curl -X POST --data-urlencode 'payload={"channel": "#personal", "username": "Jenkins", "text": "Building $env:BUILD_NUMBER", "icon_emoji": ":computer:"}' https://xxxxxx.slack.com/services/hooks/incoming-webhook?token=aseaUO 

curl -X POST --data-urlencode 'payload={"channel": "#personal-notification", "username": "Jenkins", "text": "Building ${BUILD_NUMBER}", "icon_emoji": ":computer:"}' https://xxxxxx.slack.com/services/hooks/incoming-webhook?token=aseaUO 

的{BUILD_NUMBER}是没有得到通过实际版本号的卷曲有效载荷替换

- 编辑 我注意到我的sh脚本正在调用git \ bin \ sh.exe。那是问题吗?

尝试下面的其中一条评论 curl -X POST --data-urlencode $('payload = {0}“channel”:“#personal”,“username”:“Jenkins”,“text”: “建设{1}”, “icon_emoji”: “:计算机:”{2}” -f “{”,$ ENV:罗汉) “}” https://xxxxxx.slack.com/services/hooks/incoming-webhook?token=aseaUO我得到

enter image description here

直接尝试运行PS终端上的脚本,我得到

enter image description here

+0

Buildnumber在全球环境变量'ENV定义:'或'psvariable变量:'?试试这个:'$ {env:BUILD_NUMBER}' – 2014-09-27 13:23:23

+0

不行不行 – 2014-09-27 13:55:10

回答

0

的概率lem是整个表达式用单引号括起来,所以PowerShell不会评估你的$env:BUILD_NUMBER表达式。

使用字符串格式化表达式。注意,您还必须使用格式将{}字符保留在基本表达式之外,以避免运行时错误。

curl -X POST --data-urlencode $('payload={0}"channel": "#personal", "username": "Jenkins", "text": "Building {1}", "icon_emoji": ":computer:"{2}' -f "{", $env:BUILD_NUMBER) ,"}") https://xxxxxx.slack.com/services/hooks/incoming-webhook?token=aseaUO 
+0

没有解决不了。获取“错误格式字符串”错误 – 2014-09-27 18:38:26

+0

Agh。也许花括号与位置格式相矛盾。 – 2014-09-27 19:28:47

+0

任何想法如何解决它? – 2014-09-27 19:29:31

0

代码中的几个问题,第一个引号(PS中变量的引用不展开)秒(愚蠢)参数......这个如果不改变工作尝试BUILD_NUMBER为$ {} BUILD_NUMBER

$param = @() 
$param = "-X POST" 
$param += "--data-urlencode 'payload={""channel"": ""#personal"", ""username"": ""Jenkins"", ""text"": ""Building ${env:BUILD_NUMBER}", ""icon_emoji"": "":computer:""}'" 
$param += "https://xxxxxx.slack.com/services/hooks/incoming-webhook?token=aseaUO" 
$curl $param 

或者

$param = '' 
$param = "-X POST" 
$param += "--data-urlencode 'payload={""channel"": ""#personal"", ""username"": ""Jenkins"", ""text"": ""Building ${env:BUILD_NUMBER}", ""icon_emoji"": "":computer:""}'" 
$param += "https://xxxxxx.slack.com/services/hooks/incoming-webhook?token=aseaUO" 
$curl $param 
+0

我上面没有提到,但是我的原始命令还有一个奇怪的问题。 - 我无法直接在Power Shell上运行它。我会在POS 42 错误 无与伦比的封闭支架但是,当我把它放在一个sh文件,并调用它,它调用终端(未PS)窗口和运行。我从来没有搞清楚为什么会发生。 在你的情况下,变量现在完全得到解析。但我的旧错误又回来了。即使我从.sh文件运行它,终端也会启动并显示一条消息,消息消失之前消息太快,无法正常工作。 – 2014-09-28 03:41:19