我有一個parameterised Hudson job,用於某些AWS部署的東西,它在一個構建步驟中運行某些shell命令。從參數化的Hudson作業中提取shell腳本
但是,該腳本變得非常複雜,我想從哈德森中「提取」它到單獨的腳本文件,以便它可以很容易地正確版本化。然後,Hudson作業將僅從VCS進行更新並執行外部腳本文件。
我的主要問題是關於傳遞參數給腳本。我有一個名爲AMI_ID
的Hudson參數和其他一些參數。該腳本引用這些PARAMS,好像他們是環境變量:
echo "Using AMI $AMI_ID and type $TYPE"
現在,這工作正常內部哈德森,但如果哈德森調用外部腳本。我可以以某種方式讓Hudson將params設置爲環境變量,以便我不需要更改腳本?或者是我最好的選擇來改變腳本以獲取命令行參數(並可能將這些參數分配給命名變量以提高可讀性:ami_id=$1; type=$2; ...
)?
我想是這樣的,但劇本沒有得到正確替換值:
export AMI_ID=$AMI_ID
export TYPE=$TYPE
external-script.sh # this tries to use e.g. $AMI_ID
獎金的問題:當腳本里面哈德森的「控制檯輸出」將包含在執行的命令和他們的產出。這對調試時出現構建錯誤時非常有用!例如,這裏的開頭的行「+」是腳本的一部分和下面的行其輸出:
+ ec2-associate-address -K pk.pem -C cert.pem 77.125.116.139 -i i-aa3487fd
ADDRESS 77.125.116.139 i-aa3487fd
當調用一個外部腳本,哈德森輸出將僅包含後者線,使得調試更難。在運行它之前,我可以將腳本文件cat
寫入stdout,但這也不是最佳選擇。實際上,我想要一種DOS風格的「回聲在」爲我從哈德森調用腳本 - 任何人都知道一個伎倆來實現這一點?
優秀,得益於:您希望腳本的
或環繞部分與跟蹤!兩個問題都解決了特別是bash追蹤解決方案非常優雅 - 我希望能有這樣的東西(事實上,我可以從哈德森本身的腳本運行中扣除它:'/ bin/sh -xe/tmp/hudson [...] .sh' :-)。 – Jonik 2010-04-20 13:41:02