環境:centos7html
vi /etc/yum.repos.d/jenkins.repo
複製代碼
[jenkins]
name=Jenkins
baseurl=http://pkg.jenkins-ci.org/redhat
gpgcheck=1
複製代碼
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
複製代碼
sudo yum install jenkins
複製代碼
安裝完成後,有以下相關目錄:java
/usr/lib/jenkins/:jenkins安裝目錄,WAR包會放在這裏。 /etc/sysconfig/jenkins:jenkins 配置文件,端口、JENKINS_HOME等都在這裏配置。web
配置以下:shell
JENKINS_HOME="/usr/lib/jenkins"
JENKINS_JAVA_CMD=""
JENKINS_USER="jenkins"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080"
JENKINS_AJP_PORT="8009"
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""
複製代碼
A:若是是使用自帶的Jetty服務器,啓動可使用命令:sudo service jenkins start。centos
B:若是是部署在Tomcat服務器上,直接啓動Tomcat便可。tomcat
配置前先安裝Publish Over SSH插件,用於支持遠程shell。ruby
安裝方法: 首頁->系統管理->管理插件->可選插件->過濾(搜索插件名)->勾選->點擊直接安裝便可(須要等待一段時間,詳情能夠查看控制檯輸出日誌(圓球形狀)變化)。bash
配置系統設置,Jenkins的全部全局配置都在系統管理->系統設置中,這裏面配置的全局屬性如郵件系統、Maven項目設置、Post Steps等均可以在新建的項目屬性中獲得援引。具體配置以下:服務器
${JENKINS_HOME}/workspace/${ITEM_FULLNAME}
下。這裏說到了工做空間,大體就說說Jenkins運做流程,首先它會綁定版本控制服務器,如svn。每當有svn版本倉庫有變動時(觸發器),Jenkins會檢查到並立刻將版本倉庫指定目錄下的文件(Source files,通常是svn倉庫中的一個項目)加載到工做空間,以後會根據指定項目路徑的pom.xml(Build)構建項目,而後會使用Publish Over SSH插件(需配置)將構建的項目(如war)傳送到指定目標服務器的指定路徑(Remote directory)下,而且運行目標服務器的shell腳本(該腳本主要完成war包移動至webapps下,並重啓tomcat)。app
Maven項目配置,在全局MAVEN_OPTS中添加「-Dmaven.repo.local=「你的maven本地倉庫路徑」來使maven強制使用該路徑做爲自身的本地倉庫。
Jenkins Location配置,Jenkins Location爲Jenkins訪問地址,系統管理員郵件地址應和郵件服務器配置的發件人郵件地址保持一致。
Subversion配置,選擇安裝的svn版本和版本庫地址。
Extended E-mail Notification,用戶自定義郵件通知,下面以QQ郵箱爲例:
複製代碼
SMTP server:smtp.qq.com(SMTP服務器IP) Default user E-mail suffix:@qq.com(默認郵件後綴) 高級->勾選 Use SMTP Authentication(身份認證) User Name :xxxxxxxxxxxx@qq.com(和上面配置的系統管理員郵件地址一致) Password:••••••••••••••••(QQ郵件設置中需開啓smtp服務,而且會生成一串受權碼,此處填入受權碼) 勾選 Use SSL SMTP port:465 Charset:UTF-8 Default Content Type:HTML(text/html)
///////////////////////////////【內容模板參考】////////////////////////////////
(本郵件是程序自動下發的,請勿回覆,請相關人員fix it,從新提交到svn構建)
項目名稱:$PROJECT_NAME<br/><hr/> 構建編號:$BUILD_NUMBER<br/><hr/> SVN版本號:${SVN_REVISION}<br/><hr/> 構建狀態:$BUILD_STATUS<br/><hr/> 觸發緣由:${CAUSE}<br/><hr/> 構建日誌地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/> 構建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/> 變動集:${JELLY_SCRIPT,template="html"}<br/><hr/> 複製代碼
6. 郵件通知配置以下:
```ruby
SMTP服務器:smtp.qq.com
用戶默認郵件後綴:@qq.com
高級->勾選 使用SMTP認證
用戶名:xxxxxxxxxx@qq.com
密碼:••••••••••••••••(同上)
勾選 使用SSL協議
SMTP端口:465
Reply-To Address:xxxxxxxxxxxx@qq.com(收件郵箱)
字符集:UTF-8
複製代碼
Jenkins SSH Key
Passphrase:••••••••••••••••
Path to key
Key
Disable exec
Uame:SSH_Test
Username:root
Remote Directory:/data/Jenkins_War/(目標服務器war包接收路徑)
勾選 Use password authentication, or use a different key
Passphrase / Password:••••••••••••••••
Path to key
Key
Passphrase:••••••••••••••••
Path to key
Key
Disable exec
Name:SSH_Test
Username:root
Remote Directory:/data/Jenkins_War/(目標服務器war包接收路徑)
勾選 Use password authentication, or use a different key
Passphrase / Password:••••••••••••••••
Path to key
Key
以上配置的Passphrase爲目標服務器root用戶的登陸密碼,這裏直接使用的是登陸密碼。如需使用SSH祕鑰,可在在Path to key配置私鑰路徑,Key中配置私鑰內容,並在目標服務器/home/相應登陸用戶文件夾
/.ssh/authorized_keys中添加公鑰(若是沒有該文件,則手動建立之)。
複製代碼
Global Tool Configuration,全局工具配置,裏面配置Jenkins須要使用到的工具的配置,如svn、maven、jdk等。
在目標服務器上傳自動化部署腳本,文件詳見上傳文件「deploy.sh」。大概邏輯爲:
腳本支持三個參數,默認只傳入第一個參數,第一個參數:應用名稱;第二個參數:Tomcat端口;第三個參數:Tomcat所在路徑。
設定相關變量(Tomcat所在路徑Tomcat_Home、Tomcat端口Tomcat_port、應用名稱Project)
Kill掉Tomcat進程
刪除應用
拷貝新的war包
備份war包
刪除war包
啓動Tomcat
複製代碼
1、 對於maven項目,須要先安裝Maven Integration plugin插件,安裝方法同安裝Publish Over SSH插件。 2、首頁->新建->構建一個maven項目(輸入item名稱)->進入該項目->配置,具體配置以下:
General,項目名稱不用說,勾選 丟棄舊的構建->保存構建天數、保持構建的最大個數(本身視狀況而定),勾選 參數化構建過程->choice parameter: Name=VERSION Choices=1.0.1 Description=產品系統/模塊的版本號
源碼管理Subversion: Repository URL=svn://[ip]/svn版本倉庫/其中一個項目(文件夾) Credentials=svn訪問用戶名和密碼(Add中添加Username和Password便可)
構建觸發器,勾選 Poll SCM,日程表=H/60 * * * *(表示每60分鐘檢查svn版本庫一次)
Build: Root POM=pom.xml(在工做空間目錄下pom.xml的相對位置,其實也就是svn配置中Repository URL 屬性後面的地址) Goals and options=clean -DskipTests=true install -Pprod -U(maven執行命令,跳過了Test)
Post Steps,Add post-build step->Send files or execute commands over SSH,配置以下:
Name=下拉選擇開始系統設置中設置的SSH-Test
Source files=target/*.war(相對於工做空間目錄下的war包相對位置,其實也就是svn配置中Repository URL屬性後面的地址)
Remove prefix=target/(移除前綴)
Remote directory=war(在系統設置中配置的Remote Directory路徑下的相對位置,即該項目將傳於目標服務器/data/Jenkins_War/war/目錄下)
Exec command=/data/Jenkins_War/deploy.sh MySpringBoot(自動部署腳本在目標服務器的位置,並傳入第一個參數:項目名)
複製代碼
A:根據上面配置,將每60分鐘查看一次svn版本庫是否有變動並執行構建,這既是自動構建。
B:手動構建,選擇Build with Parameter->可選擇此處構建產生的版本->當即構建。左邊導航欄可看到構建歷史,點擊小球能夠查看控制檯輸出。
注意:
- 項目配置中,通常像路徑這些東西,配置有問題都會出現紅色警告的,除了Publish Over SSH配置外。
- 上面沒說到的配置,都直接默認便可。
Jenkins搭建到這裏就結束了,在搭建Jenkins的路上走了很多坑,特此記一筆。