jenkins使用入門(郵件、ssh、git、)
jenkins部署可以參考:https://blog.csdn.net/luanpeng825485697/article/details/82945004
郵件通知
我這裡使用的是qq企業郵箱
配置郵件通知,系統管理–系統設定
新增管理員郵箱,新增郵件
點選儲存或測試郵件,系統會給目標郵箱傳送一封測試郵件:
注意,接收郵件必須滿足設定的字尾。
注意:如果你的系統設定中還有Extended E-mail Notification,就需要配置這個才能正常傳送郵件
任務配置中
郵件的html模板
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>${PROJECT_NAME}-第${BUILD_NUMBER}次構建日誌</title> </head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> <td>(本郵件是程式自動下發的,請勿回覆!)</td> </tr> <tr> <td><h2> <font color="#0000FF">構建結果 - ${BUILD_STATUS}</font> </h2></td> </tr> <tr> <td><br /> <b><font color="#0B610B">構建資訊</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>專案名稱 : ${PROJECT_NAME}</li> <li>構建編號 : 第${BUILD_NUMBER}次構建</li> <li>觸發原因: ${CAUSE}</li> <li>構建日誌: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>構建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>專案 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> </ul> </td> </tr> <tr> <td><b><font color="#0B610B">Changes Since Last Successful Build:</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li> </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"} </td> </tr> <tr> <td><b>Test Informations</b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td><pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">Total:${TEST_COUNTS,var="total"},Pass:${TEST_COUNTS,var="pass"},Failed:${TEST_COUNTS,var="fail"},Skiped:${TEST_COUNTS,var="skip"}</pre> <br /></td> </tr> <tr> <td><b><font color="#0B610B">構建日誌 (最後 100行):</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td><textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea> </td> </tr> </table> </body> </html>
在郵件通知的高階配置中,可以配置什麼編譯結果的情況下下發通知,和通知給誰
配置ssh
點選-系統管理-系統外掛-可選外掛中 直接搜 publish over ssh 點選安裝,安裝完之後,重啟jenkins
1,系統管理->系統設定->Publish over SSH配置裡面配置ssh伺服器資訊
參考:https://blog.csdn.net/u012946310/article/details/80969447
配置git
安裝gitlab外掛,系統管理–管理外掛–可選外掛
外掛安裝介面,會額外安裝一些依賴關係的外掛,jenkins基於ruby開發,所以會有ruby環境:
系統管理 --> 憑據配置
jenkins伺服器上(或者docker裡面)root使用者生成金鑰對
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
在git網頁中加入jenkins的公鑰
在伺服器上手動試一下git clone目標倉庫能否成功。
jenkins拉取程式碼沒問題,繼續配置jenkins的認證,這裡應該輸入私鑰
複製jenkins拉取git程式碼伺服器root的私鑰
cat ~/.ssh/id_rsa
在任務構建中就可以為專案提供原始碼倉庫了
當然你也可以在憑證中建立賬號密碼憑證,使用賬號密碼拉取git倉庫https地址
實戰:向GitHub提交程式碼時觸發Jenkins自動構建
分別點選"系統管理"->“外掛管理”->“可選外掛”,選擇
Git client plugin
Git plugin
GitLab Plugin
Gitlab Hook Plugin
檢視jenkin生成回撥地址。在任務重構建觸發器下獲取回撥URL。下面的URL那一行只有Gitlab Hook Plugin外掛下載成功後才能顯示。
Gitlab上的操作
登陸Gitlab上的專案中,新增webhook(用上面Jenkins中生成的回撥url)
gitlab鉤子hook分為系統級的和專案級別的。
系統級別的
專案級的
其中token需要在jenkins中git hook的高階配置中生成。
新增成功後,點選此webhook後面的test進行測試
如果返回Hook successfully executed.表示配置成功。
這樣,下次push程式碼後,就會自動觸發jenkins上相關的構建工程進行自動釋出了!無需人工干預~
Jenkins定時構建和輪詢SCM設定說明
一、定時構建:不管SVN或Git中資料有無變化,均執行定時化的構建任務 ;
二、輪詢SCM:只要SVN或Git中資料有更新,則執行構建任務;
三、構建語法說明:
1.首先格式為:* * * * *(五個星);
2.第一個表示分鐘,取值0~59
第二個表示小時,取值0~23
第三個表示一個月的第幾天,取值1~31
第四個表示第幾月,取值1~12
第五個*表示一週中的第幾天,取值0~7,其中0和7代表的都是週日
3.使用舉例:
每隔10分鐘構建一次:H/5 * * * *
每隔1小時構建一次: H H/1 * * *
每月30號構建一次: H H 30 * *
四、定時構建和輪詢SCM使用互不衝突,具體如何組合,需要根據專案情況合理配置;
jenkins關閉重啟重新載入
1、關閉Jenkins
只需要在訪問jenkins伺服器的網址url地址後加上exit。例如我jenkins的地址http://localhost:8080/
,那麼我只需要在瀏覽器位址列上敲下http://localhost:8080/exit
網址就能關閉jenkins服務.
2、重啟Jenkies
http://localhost:8080/restart
3、重新載入配置資訊
http://localhost:8080/reload
mvn安裝
jenkins中需要編譯java程式碼,所以需要mvn環境
下載合適版本的maven:http://maven.apache.org/download.cgi
將下載的壓縮檔案複製到jenkins容器中
進入jenkins容器
## 解壓maven
tar -zxvf apache-maven-3.3.9-bin.tar.gz
## 轉移maven到合適的目錄
mv apache-maven-3.3.9 /opt/maven
## 設定maven的環境變數
vi /etc/profile
## 設定內容如下
#maven env
export MAVEN_HOME=/opt/maven
PATH=$MAVEN_HOME/bin:$PATH
export PATH
## 編譯profile生效
source /etc/profile
## 測試maven是否安裝成功
[[email protected] maven]# mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)
Maven home: /opt/maven
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_111/jre
Default locale: zh_CN, platform encoding: GB18030
OS name: "linux", version: "3.10.0-514.2.2.el7.x86_64", arch: "amd64", family: "unix"
jenkins 呼叫maven有兩種方式
1) 採用Jenkins外掛方式呼叫
系統配置中配置maven
系統管理/系統設定/
然後呼叫的時候 在job中設定
2 ) jenkins 通過shell指令碼呼叫 maven
需要在系統中配置好環境變數
Jenkins 通過shell指令碼呼叫mvn 命令的時候,是從/usr/bin 資料夾中找命令的,這個時候需要做個軟連結
ln -s /opt/maven/bin/mvn /usr/bin/mvn
這樣設定後就不會出現 mvn command not found 的問題了
Maven預設會使用本地快取的庫來編譯工程,如果上次下載的庫失敗將導致類似下面的錯誤
Non-resolvable import POM: Failure to find org.springframework:spring-framework-bom:pom:5.1.0.RC1 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced @ line 366, column 25 -> [Help 2]
解決辦法
刪除~/.m2/repository/對應目錄或目錄下的*.lastUpdated檔案,然後再次執行maven命令
maven命令後加-U,如mvn package -U
在repository的release或者snapshots版本中新增updatePolicy屬性,其中updatePolicy可以設定為”always”、”daily” (預設)、”interval:XXX” (分鐘)或”never”
<repositories>
<repository>
<id>io.spring.repo.maven.release</id>
<url>http://repo.spring.io/release/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
</repositories>
當然你可以在容器中執行mvn help:system 將本地倉庫清空重新下載