2013-05-09 69 views
0

如何使用Jenkins/Maven插件生成模式名稱以測試我的應用程序。 我需要此架構名稱是唯一的(不存在於DB - Oracle/SQL中)。 是否有詹金斯獨特的字符串生成器?爲測試生成唯一模式名稱

+0

您可以使用shell來生成這樣的字符串,並將此步驟添加到您的工作中。示例shell腳本:var1 =($(openssl rand 100000 | sha1sum)); – patrungel 2013-05-09 07:49:33

回答

2

如果您使用的是Execute Shell命令,則可以使用BUILD_IDBUILD_NUMBER以及BUILD_TAG。 Jenkins版本中的BUILD_TAG將完全獨一無二(它的編號爲jenkins-${JOB_NAME}-${BUILD_NUMBER}),但可能過長或取決於您的作業名稱,可能包含不適合您數據庫的字符。

但是,這些變量可以用來構造唯一但可識別的名稱,您可以稍後使用它來查看特定運行的數據庫輸出或清理某個作業之前的所有數據庫。

如果你不使用Execute Shell,那麼Inject environment variables to the build process選項會將這些相同的變量直接放到構建環境中,在那裏它們可以被你的代碼訪問(假設你可以訪問環境變量)。

數據庫命名

對於Oracle,看來數據庫名稱仍限制爲8個字符(作爲最後一個參考,我發現的),因此你可能需要使用的短靜態字符串附加在它後面的BUILD_NUMBER,這在shell中很容易創建。

如果您擔心BUILD_NUMBER變得太大,那麼您可以通過執行像十六進制編碼這樣的操作來減少空間(減少用於相同數字的字符並仍使用保證在ASCII中有效的字符)。

如果這是不夠的,我已經使用base64編碼來存儲需要以ASCII存儲的值,但是對於存儲空間來說太大了。例如,如果您將3個二進制字節編碼爲base64,則會得到4個ASCII字節,您可以將其用作數據庫名稱的一半。這個範圍大約有2400萬個構建,這應該是足夠的,並且解碼很簡單。當然,你必須先將數字轉換爲二進制數才能進行編碼(數字的ASCII版本的base64沒有任何用處)。

+0

這就是我們不使用它的原因。我們需要一些具有最大長度並且會過濾出非法字符的東西 – 2013-05-12 07:38:25

相關問題