Jenkins是一個用Java編寫的開源的持續內建(CI)工具,可持續、自動地建構/測試軟體項目,監控一些定時執行的任務。具有開源,支援多平台和插件擴充,安裝簡單,界面化管理等特點。
一、Jenkins安裝
1.安裝OpenJDK
<code>[root@localhost ~]</code><code>#yum install java-1.7.0-openjdk</code>
<code>[root@localhost ~]</code><code>#java -version</code>
<code>java version</code><code>"1.7.0_131"</code>
<code>OpenJDK RuntimeEnvironment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)</code>
<code>OpenJDK 64-BitServer VM (build 24.131-b00, mixed mode)</code>
2.yum安裝Jenkins stable版本
<code>[root@localhost ~]</code><code># wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo</code>
<code>[root@localhost ~]</code><code># rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key</code>
<code>[root@localhost ~]</code><code># yum install jenkins</code>
安裝好後,jenkins的主目錄位于/var/lib/jenkins,這也是jenkins使用者的家目錄。
jenkins主程式:/usr/lib/jenkins/jenkins.war
jenkins配置檔案:/etc/sysconfig/jenkins
jenkins啟動腳本:/etc/init.d/jenkins
jenkins日志目錄:/var/log/jenkins
3.啟動Jenkins
<code>[root@localhost ~]</code><code># service jenkins start</code>
<code>[root@localhost ~]</code><code># chkconfig jenkins on</code>
4.通路Jenkins,進行初始化設定
http://jenkins_server_ip:8080
二、Jenkins插件安裝示範
1.線上安裝語言插件
進入Manage Jenkins->Manage Plugins->Available,找到"Locale plugin"并安裝,安裝過程中會自動處理好插件的依賴。
線上安裝插件可能由于網絡原因安裝失敗,記下安裝失敗的插件和安裝順序,然後使用下面的方法離線安裝。
2.離線安裝插件
通路網址https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/,搜尋上一步安裝失敗的那些插件,下載下傳下來。
進入Manage Jenkins->Manage Plugins->Advanced,選擇插件檔案并上傳。
<a href="https://s4.51cto.com/wyfs02/M02/92/44/wKiom1j9vvuAOReqAAAfUbLgMP8275.png-wh_500x0-wm_3-wmp_4-s_3856725067.png" target="_blank"></a>
注意:要按照依賴順序一個一個安裝插件。
安裝好後重新開機Jenkins(可以通過通路http://jenkins_server_ip:8080/restart重新開機)。
3.設定語言為中文
進入Manage Jenkins->Configure System,在"Default Language"位置輸入zh_CN,儲存立即生效。
<a href="https://s5.51cto.com/wyfs02/M02/92/43/wKioL1j9vx_y9-yyAAAUJIhHTyg159.png-wh_500x0-wm_3-wmp_4-s_2820781965.png" target="_blank"></a>
三、安裝SVN插件
1)進入"系統管理"->"插件管理"->"可選插件",找到"Subversion Plug-in"并安裝。
2)SVN插件安裝好後,我們建立一個新項目。
在項目配置的"源碼管理"部分,我們可以對svn倉庫進行配置了。
<a href="https://s2.51cto.com/wyfs02/M01/92/44/wKiom1j9vzeRXtjMAABGWB2_XRA912.png-wh_500x0-wm_3-wmp_4-s_1561626265.png" target="_blank"></a>
四、安裝SSH插件
1)進入"系統管理"->"插件管理"->"可選插件",安裝"Publish Over SSH"插件。
2)配置SSH免密碼登入到遠端伺服器
<code>usermod</code> <code>-s </code><code>/bin/bash</code> <code>jenkins</code>
<code>su</code> <code>- jenkins</code>
<code>ssh</code><code>-keygen -t rsa</code>
将公鑰推送到遠端主機:
<code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub </code><code>'-p 10022 [email protected]'</code>
3)進入"系統管理"->"系統設定",找到Publish over SSH配置段。
<a href="https://s5.51cto.com/wyfs02/M01/92/43/wKioL1j9v1GwmzX2AAB0mqgHA3M013.png-wh_500x0-wm_3-wmp_4-s_1196012612.png" target="_blank"></a>
Jenkins SSH Key(插件的全局配置)
Passphrase:密碼(key的密碼,一般我們不會設定)
Path to key:key檔案(私鑰)的路徑
Key:将私鑰複制到這個框中(與Path to key二選一)
Disable exec:禁止遠端運作指令
添加SSH遠端主機
SSH Server Name:自定義遠端主機的名字
Hostname:ssh遠端連接配接的ip位址
Username:使用者名
Remote Directory:遠端目錄
Use password authentication, or use a different key:選中展開就可以配置新的私鑰,不使用全局配置。
Port:SSH端口
Timeout (ms):逾時時間(毫秒)
Disable exec:禁止運作指令(隻對目前配置的ssh主機生效)
Test Configuration:測試連接配接,連接配接成功會傳回Success
五、項目配置
1.建立一個項目
建立一個項目,輸入項目名稱,選擇“建構一個自由風格的軟體項目”。
<a href="https://s3.51cto.com/wyfs02/M01/92/43/wKioL1j9v2XgmPEEAACe9EGN0jM066.png-wh_500x0-wm_3-wmp_4-s_1183149043.png" target="_blank"></a>
2.建構觸發器
<a href="https://s3.51cto.com/wyfs02/M02/92/43/wKioL1j9v6Lxq6JGAAAbY6uqRE8175.png-wh_500x0-wm_3-wmp_4-s_321491505.png" target="_blank"></a>
觸發遠端建構
<a href="https://s4.51cto.com/wyfs02/M01/92/44/wKiom1j9v9bTYiD2AAA18u4HnRk310.png" target="_blank"></a>
遠端建構URL:
JENKINS_URL/job/JOB_NAME/build?token=TOKEN_NAME
我們可以在URL末尾加上&cause=Cause+Text描述建構原因。
例如:
http://192.168.1.203:8080/job/testjob1/build?token=testjob1token
腳本調用方法:
curl -v -u 使用者名:登入密碼 遠端建構URL
<a href="https://s1.51cto.com/wyfs02/M02/92/44/wKiom1j9v-KTWpQOAACDkr3ufWw377.png-wh_500x0-wm_3-wmp_4-s_4262964515.png" target="_blank"></a>
Build after other projects are built
指定的項目完成建構後,才觸發此項目的建構。
Build periodically
按指定的時間頻率對項目進行建構。
Poll SCM
按指定的時間頻率檢查源代碼倉庫的變化,如發現變化則執行建構。
3.建構環境
<a href="https://s2.51cto.com/wyfs02/M00/92/44/wKiom1j9v-6Tq2kbAAAZ6-jzQL8859.png-wh_500x0-wm_3-wmp_4-s_10400934.png" target="_blank"></a>
Send files or execute commands over SSH before the build starts
建構開始前通過ssh給遠端主機發送檔案或者執行指令。
Send files or execute commands over SSH after the build runs
建構結束後通過ssh給遠端主機發送檔案或者執行指令。
這兩個選項是在安裝了“Publish Over SSH”插件後出現的,比較實用。配置介紹:
<a href="https://s2.51cto.com/wyfs02/M00/92/43/wKioL1j9wAKyKNVIAACOLh1dXuc991.png-wh_500x0-wm_3-wmp_4-s_1102208361.png" target="_blank"></a>
Name:在系統設定裡配置的SSH遠端主機的名字
Source files:上傳的檔案或目錄(相對于項目工作區的路徑,非絕對路徑。可以填寫多個,預設用逗号分隔)
Remove prefix:移除Source files的目錄字首
Remote directory:遠端主機的上傳目錄(如果目錄不存在會自動建立)
Exec command:要遠端執行的指令
Flatten files:隻上傳檔案,不建立目錄(除了遠端目錄)
4.建構步驟
<a href="https://s4.51cto.com/wyfs02/M02/92/43/wKioL1j9wCnTPU77AAAhH5aSBeQ878.png-wh_500x0-wm_3-wmp_4-s_138782683.png" target="_blank"></a>
Execute Windows batch command
執行Windows批處理腳本(Jenkins安裝在Windows系統中)。
Execute shell
執行Linux shell腳本(Jenkins安裝在Linux系統中)。
Invoke Ant
JenKins與Ant內建實作項目的自動化建構部署,适用于Ant作為建構工具的項目。
Invoke top-level Maven targets
JenKins與Maven內建實作項目的自動化建構部署,适用于Maven作為建構工具的項目。
Send files or execute commands over SSH
通過ssh給遠端主機發送檔案或者執行指令。“Publish Over SSH”插件的功能。
5.參數化建構
通過參數化建構功能,我們可以為建構程式傳遞參數,靈活控制建構流程。
在項目配置裡點選“參數化建構過程”,然後選擇“添加參數”,jenkins提供了多種參數類型:
<a href="https://s2.51cto.com/wyfs02/M02/92/44/wKiom1j9v3LBaZocAAB3KSKd6N8738.png-wh_500x0-wm_3-wmp_4-s_2756567404.png" target="_blank"></a>
舉個例子,我們添加兩個參數:
參數level是Choice類型,可選值1和2,預設值是1。
<a href="https://s5.51cto.com/wyfs02/M02/92/43/wKioL1j9v3_ihbAKAAA4necoiKs349.png-wh_500x0-wm_3-wmp_4-s_2342167380.png" target="_blank"></a>
參數text是String類型,預設值是“hello world”。
<a href="https://s5.51cto.com/wyfs02/M01/92/44/wKiom1j9v4mjEcW-AAAW9MFbmFs506.png-wh_500x0-wm_3-wmp_4-s_1403500464.png" target="_blank"></a>
參數設定好後,我們可以在建構腳本裡引用這些變量。
Windows平台引用方法:%var_name%
Linux平台引用方法:${var_name}
配置完整個項目後,我們手動運作建構:
在項目面闆的左側選擇“Build with Parameters”,先對參數值進行修改,然後點選“開始建構”。
<a href="https://s1.51cto.com/wyfs02/M01/92/43/wKioL1j9v5WwdRzQAAB4TGOYSDo828.png-wh_500x0-wm_3-wmp_4-s_3737032902.png" target="_blank"></a>
參數化遠端建構URL(通過通路url觸發建構):
JENKINS_URL/job/JOB_NAME/buildWithParameters?token=TOKEN_NAME&PARM1=VALUE1&PARM2=VALUE2…
http://192.168.1.203:8080/job/testjob1/buildWithParameters?token=testjob1token&level=2&text=hello+world
本文轉自 張斌_青島 51CTO部落格,原文連結:http://blog.51cto.com/qicheng0211/1918912