開發打包的 jenkins job a 是在 local 的一台 windows 上,同時在這台 local 的 windows 上還有一 另乙個 jenkins job b 是用來上傳 job a 生成的包(build)到測試平台的倉庫(比如 saucelabs storage)。然而 我們測試的 jenkins job c 是在 azure 上的一台 windows server 2012 上。我們期望的是當 job a 一旦有包(build)生成就傳遞 build number 給 job b 同時觸發 job b 執行,一旦 job b 執行就會 上傳 build 到測試平台的倉庫,接著由 job b 把 build number 傳遞給 job c 同時觸發,job c 執行。那麼 問題就來了 job b 和 job c 不在同一臺機器,job b 怎麼實現傳引數遠端觸發 job c 呢? 下面 我們分兩部分來介紹。
要實現同一 jenkins 上的 job a 傳遞引數(build number)並觸發 job b 執行我們需要做的步驟如下:
1、首先安裝 jenkins 引數化外掛程式:parameterized trigger plugin。
2、對 job a 進行配置;在 job a 配置面板中 post-build actions 選項中選擇 trigger parameterized build on other projects ,如下圖:
3、對 job b 進行配置;在 joba 中配置了 build_number 引數,在 b job 中要使用此引數,那麼需要在job b 的配置介面中勾選 the build is parameterized。具體配置資訊如下所示:
4、檢查引數是否成功的由 job a 傳給了 job b;在 job b 的 windows bat 視窗輸入如下命令,在 job b 的控制檢視輸出引數是否正確。如下圖:
經過上面幾步我們就可以很容易的實現同一 jenkins 的傳參觸發,愉快的享用吧。
要實現不同 jenkins 上的 job b 傳遞引數(build number)並觸發遠端機器上的 job c 執行我們需要做的步驟如下:
1、首先要把 job a 傳遞給 job b 的引數 build_number 以 key-vaule 的方式(便於 job c 讀取引數使用和更新引數)寫入屬性檔案(test.properties),在 job b 中使用如下命令:
echo build_name="%build_number%" >> e:\test.properties
如下圖:
2、獲取 job c 所在的 jenkins 的 api token,如下圖所示:
3、在 job b 中使用 jenkins 的 remote api 通過 curl 命令列來傳引數給 job c 並觸發 job c 執行,具體命令如下:
curl -x post --user linda:2a2511f75356f6691f6049bf9ee3806b --form file0=@"e:\test.properties" --form json="
]}
如下圖:
上面執行的命令引數說明:
4、既然是通過檔案傳遞引數那麼 job c 也要配置接收。如下圖:
經過上面幾步我們就可以很容易的實現不同 jenkins 傳參遠端觸發,愉快的享用吧。總之這樣一來當 job a 帶引數觸發了 job b,job b 帶引數檔案觸發 job c,你會看到在 job c 的根目錄下有了引數檔案test.properties,這樣就可以在 job c 中使用該引數去測試平台的倉庫獲取對應的 build 來進行全自動化測試。
附上 jenkins remote api 的 url:
Jenkins job 之間實現帶引數觸發
開發打包的 jenkins job a 是在 local 的一台 windows 上,同時在這台 local 的 windows 上還有一 另乙個 jenkins job b 是用來上傳 job a 生成的包 build 到測試平台的倉庫 比如 saucelabs storage 然而 我們測試的 ...
Jenkins job之間依賴關係配置
構建觸發器 配置如下資訊 選擇 build after other projects are built project to watch 依賴的專案名稱 trigger only if build is stable 只有在a專案構建文件後進行構建,過濾條件 這樣我們執行a專案構建,緊接著b專案也...
處理器之間帶引數跳轉
我被問到過這個問題,這個問題很基礎,我當時沒回答上來,很不應該,特地整理一下 需求 controllera從位址列獲得乙個引數並帶著這個引數跳轉到controllerb 處理器a controller public class controllera public string controller...