.NET專案完成建置、掃描及測試等等等的持續整合程序後,下一步就到了過版到QA環境的佈署階段了,要佈署到IIS的Web專案可以靠Web Deploy單鍵佈署建立的發行組態與Jenkins直接整合,透過web deploy(8172)直接佈署到WEB Server的IIS。但遇到Windows Service或是其他執行檔專案時,就稍微麻煩一點。這次我們在Jenkins Master作建置並且產生發行成品,但佈署時,直接從測試機連回Jenkins Master取得封裝成品來作版本更新。
持續整合之路進入到過版程序:
*Release管理容後再補。
1.前置條件確認
2.Jenkins Master設定
3.Master新增Slave節點
4.Slave伺服器設定
5.Jenkins安裝Copy Artifact plugin
6.現有CI作業封裝成品
7.新增CI作業Slave複製成品並進行佈署
(1)前置條件:
Slave server已安裝好了JRE環境
下載網址: https://java.com/zh_TW/download/
按下安裝按鈕
安裝完畢。
(2)Jenkins Master設定
管理Jenkins > 設定全域安全性
到Agents區塊,選隨機,按下Agent protocols,設定Java Web Start Agent Protocol/4 TLS encryption
設定完成後,按下儲存。
(3)Master新增Slave節點
管理Jenkins > 管理節點
進入管理節點畫面上,新增節點
輸入節點名稱,並選取Permanent Agent後,按下OK
設定遠端檔案系統根目錄及使用方式,最後按下儲存按鈕。
設定完成後會發現多了一台PBT01,不過還沒有連線,我們待會會進入PBT01這台設定。
(4)Slave伺服器設定
從PBT01打開瀏覽器連上Jenkins Server,登入管理帳號後,進入PBT01的節點
點橘色的Launch執行。
執行
連接成功後會出現
除了進入以這種方式連線外,還有另外兩種連線方式:
1.在file選項中點選Install as service,安裝成service後,重開機後就不用再連線。
2.也可以用批次指令碼建立連線
指令碼就在剛剛橘色launch按鈕的下方,先把agent.jar下載下來,然後把指令碼改為本機路徑,貼到.bat檔裡頭,最後就是排在固定開機作業中。
回到節點畫面,PBT01也上線了
(5)Jenkins安裝Copy Artifact plugin
待會我們要從Master workspace複製編譯結果到slave,因此我們先安裝Copy Artifact
管理Jenkins > 外掛程式管理
安裝完畢後,環境的組態就完成了,剩下就是CI JOB的設定。
(6)封存成品
點選現有要封存成品的CI作業 > 組態 > 在建置後動作新增動作 > 封存成品
設定要封存成品的位置,以工作區的相對路徑來看
馬上建置後,可以在console發現 封存成品的訊息。
(7)Slave 複製成品並進行佈署(pipeline)
新增一個pipeline(管線、流水線)作業
在Build Triggers區塊中先設定觸發的CI作業
我們的條件是testWindowsService作業完成建置及基本單元測試後觸發(也可以設定多個CI作業作為觸發,CI作業名稱以逗號分隔)
由於我們要限制在PBT01執行,撰寫pipeline程式時需要在node加入伺服器名稱的參數PBT01
node('PBT01')
程式分成4個state,分別是取得版本(Jenkins封存成品、TFS發行成品..)、停止服務、過版及啟動服務。
Pipeline語法:
node('PBT01') {
stage('Stage 取得Build版本'){
script {
step ([$class: 'CopyArtifact',
projectName: 'TestWindowsService',
target: 'Infra']);
}
}
stage('Stage 停止服務'){
bat 'echo %USERDOMAIN%\\%USERNAME%'
bat 'powershell.exe "Start-Process powershell -ArgumentList \'-ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File D:\\Jenkins\\StopServices.ps1\' -Verb RunAs"'
sleep 5
}
stage('Stage 服務過版'){
bat '''xcopy "D:\\Jenkins\\workspace\\WindowsServiceDeploy\\Infra\\TestWindowsService \\bin\\Debug\\*.dll" "D:\\AP\\TestWindowsService\\data\\" /s /d /h /y /I '''
}
stage('Stage 啟動服務'){
bat 'powershell.exe "Start-Process powershell -ArgumentList \'-ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File D:\\Jenkins\\StartServices.ps1\' -Verb RunAs"'
}
}
從CI作業內的Stage View就可以看到每個Stage的狀況
每個stage海浪都不同,風景也是
2017.08 北海道 星野渡假村 微笑海灘
參考
Step by step guide to set up master and slave machines on Windows
copyArtifacts: Copy artifacts from another project