jenkins服務端:centos6.8
客戶端:windows server2012 windows10
工具:cwRsync
注:復制為jenkins工作目錄到網站目錄,無需服務端。
1、安裝jenkins
略。
2、配置安裝slave端
所用的插件:Copy Data To Workspace Plugin
https://wiki.jenkins.io/display/JENKINS/Copy+Data+To+Workspace+Plugin
2.1 配置windows節點
1. 主界面->【系統管理】->【管理節點】->【新建節點】,進行節點的添加:
2. 輸入節點名稱,選擇【Permanent Agent】。如果添加過slave的話會出現【復制現有節點】操作
3. 配置節點的詳細信息
此處配置需要注意的有以下幾個方面
【# of executors】:建議不要超過CPU核心數,一般不要寫特別大。
【遠程工作目錄】:master將代碼庫中的代碼復制到slave時,存放的臨時目錄,如slave的daemon服務也會放在此目錄。一個job一個文件夾。
【用法】:選擇【只允許運行綁定到這台機器的Job】,此模式下,Jenkins只會構建哪些分配到這台機器的Job。這允許一個節點專門保留給某種類型的Job。例如,在Jenkins上連續的執行測試,你可以設置執行者數量為1,那么同一時間就只會有一個構建,一個實行者不會阻止其它構建,其它構建會在另外的節點運行。
【啟動方式】:選擇【Launch agent via Java Web Start】,以windows服務的方式啟動,這個為最好配置的。注意:2.x版本的默認沒有這個選項,需要單獨開啟。
4. 配置slave端並且添加至windows服務
在點擊保存后,在node列表中會存在此列表默認是未連通狀態
點擊進入詳情頁面會提示slave端的安裝方法,此處講解下載文件方式。
【Launch】:瀏覽器下載文件方式
【Run from agent command line】:從遠端代理命令運行
注意:這是java服務,每個slave端必須安裝jdk后才可運行。
下載后的文件內容如下:
<jnlp codebase="http://10.0.0.11:8080/jenkins/computer/test/" spec="1.0+"> <information> <title>Agent for test</title> <vendor>Jenkins project</vendor> <homepage href="https://jenkins-ci.org/"/> </information> <security> <all-permissions/> </security> <resources><j2se version="1.8+"/> <jar href="http://10.0.0.11:8080/jenkins/jnlpJars/remoting.jar"/> </resources> <application-desc main-class="hudson.remoting.jnlp.Main"> <argument>c55442e04b03c2fc721ec718b70646c234b4c79a678ff10ccadc59541dbb843</argument> <argument>test1</argument> <argument>-workDir</argument> <argument>d:\jenkins</argument> <argument>-internalDir</argument> <argument>remoting</argument> <argument>-url</argument> <argument>http://10.0.0.11:8080/jenkins/</argument> </application-desc></jnlp>
注意:每個slave的內容都不一樣至。多個slave需要多次下載或修改此內容
安裝出現如下錯誤的原因,沒有權限,使用管理員方式運行。
這種文件右鍵沒有管理員方式運行的菜單,打開【任務管理器】->【運行】->【以管理員方式運行】
卸載系統服務方式:
sc delete jenkinsslave-c__jenkins
安裝完成后slave設置的遠端目錄會生成如下文件
返回master的節點列表里,發現此處已經連接上了。
4、新建工程
選擇自由構建方式。
【Restrict where this project can be run】:限制運行此項目的節點為剛才設置node時標簽填寫的windows。
下載安裝插件后會出現此選項。實測,填寫路徑沒什么卵用。
此處選擇執行windows命令
注:此處存在以下問題。
1、此處如果代碼庫中不存在此文件,或更新后此文件被刪除,那么使用xcopy會存在代碼庫中的文件以刪除,而slave node文件夾中的文件還存在。無法清除。解決方法使用rsync –delete 或執行腳本文件進行判斷。
2、如slave node中需要存在代碼庫中不存在的文件,使用rsync會將需要存在的文件刪除。
3、此處無環境變量,執行命令需要使用全路徑,不能存在中文和空格
C:\tools\cwRsync\bin\rsync -avz ./ /cygdrive/c/test1/ --delete --exclude=.svn xcopy /y /e /r ./ /cygdrive/c/test1/
測試結果
查看web目錄內容
構建代碼