2014-09-27 85 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