學習Jenkins持續整合(三)Jenkins專案構建觸發器、引數化構建及郵件傳送
一、構建觸發器
1.常用的構建觸發器
Jenkins內建4種構建觸發器:
- 觸發遠端構建
身份驗證令牌 算是我們自己設定的一個token 一般是加密的
然後 通過 瀏覽器位址列訪問JENKINS_URL/job/wxpublic/build?token=TOKEN_NAME 或者 /buildWithParameters?token=TOKEN_NAME
JENKINS_URL替換Jenkins的地址,TOKEN_NAME替換為設定的token令牌:http://139.196.231.13:8888/job/wxpublic/build?token=liushihao
即可通過遠端訪問,來立即構建。
-
其他工程構建後觸發(Build after other projects are build)
即當關注的專案構建完成後,這個專案也會觸發構建
-
定時構建(Build periodically)
定時字串從左往右分別為: 分 時 日 月 周
一些定時表示式的例子:
每30分鐘構建一次:H代表形參 H/30 * * * * 10:02 10:32
每2個小時構建一次: H H/2 * * *
每天的8點,12點,22點,一天構建3次: (多個時間點中間用逗號隔開) 0 8,12,22 * * * 每天中午12點定時構建一次 H 12 * * *
每天下午18點定時構建一次 H 18 * * * 在每個小時的前半個小時內的每10分鐘 H(0-29)/10 * * * *
每兩小時一次,每個工作日上午9點到下午5點(也許是上午10:38,下午12:38,下午2:38,下午 4:38) H H(9-16)/2 * * 1-5
- 輪詢SCM(Poll SCM)
輪詢SCM,是指定時掃描原生程式碼倉庫的程式碼是否有變更,如果程式碼有變更就觸發專案構建。
注意:這次構建觸發器,Jenkins會定時掃描本地整個專案的程式碼,增大系統的開銷,不建議使用。
注意:設定的兩分鐘,不一定會構建,只有專案程式碼變更了後才會構建。
2.Git hook自動觸發構建(*)
剛才我們看到在Jenkins的內建構建觸發器中,輪詢SCM可以實現Gitlab程式碼更新,專案自動構建,但是 該方案的效能不佳。那有沒有更好的方案呢? 有的。就是利用Gitlab的webhook實現程式碼push到倉 庫,立即觸發專案自動構建。
安裝Gitlab Hook外掛 需要安裝兩個外掛: Gitlab Hook和GitLab
但由於我是使用Gogs搭建的個人倉庫 ,所以需要安裝gogs外掛
Jenkins設定自動構建
3.Jenkins的引數化構建
4.配置郵箱伺服器傳送構建結果
在郵箱設定中找到 開啟(qq郵箱)
email模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_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>
<b><font color="#0B610B">變更資訊:</font></b>
<hr size="2" width="100%" align="center" />
</td>
</tr>
<tr>
<td>
<ul>
<li>上次構建成功後變化 : ${CHANGES_SINCE_LAST_SUCCESS}</a></li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>上次構建不穩定後變化 : ${CHANGES_SINCE_LAST_UNSTABLE}</a></li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
</ul>
</td>
</tr>
<!-- <tr>-->
<!-- <td>-->
<!-- <ul>-->
<!-- <li>變更集:${JELLY_SCRIPT,template="html"}</a></li>-->
<!-- </ul>-->
<!-- </td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <td><b>Failed Test Results</b>-->
<!-- <hr size="2" width="100%" align="center" />-->
<!-- </td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <td>-->
<!-- <pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">${FAILED_TESTS}</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>
新增傳送郵件指令碼:
傳送郵件指令碼:
pipeline {
agent any
stages {
stage('拉取程式碼') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '00b15bbd-d044-4db1-9eb6-063c16781dc4', url: 'http://139.196.231.13:3000/liushihao/monitor.git']]])
}
}
stage('編譯構建') {
steps {
sh label: '', script: 'mvn clean package'
}
}
stage('構建完成') {
steps {
echo '構建完成'
}
}
}
post {
always {
emailext(
subject: '構建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
body: '${FILE,path="email.html"}',
to: '******@qq.com,******4@qq.com,******76@qq.com'
)
}
}
}
效果:
相關文章
- Jenkins 2.32.3引數化構建maven專案-java專案JenkinsMavenJava
- Jenkins實現持續整合 使用Ant指令碼構建ios專案Jenkins指令碼iOS
- Jenkins 配置郵箱伺服器傳送構建結果Jenkins伺服器
- gitlab和jenkins做持續整合構建教程GitlabJenkins
- 配置Jenkins構建失敗觸發郵件報警機制Jenkins
- CICD | Jenkins & Gitlab整合:WebHook觸發構建JenkinsGitlabWebHook
- jenkins構建go及java專案JenkinsGoJava
- 有手就行8——專案構建細節3-Jenkins的引數化構建Jenkins
- 自動化專案Jenkins持續整合Jenkins
- Jenkins自動化前端專案構建Jenkins前端
- 《前端運維》四、Jenkins--持續構建前端運維Jenkins
- Linux下配置Jenkins+gitlab持續整合構建流程LinuxJenkinsGitlab
- Framework專案持續整合(jenkins)及集合SonarQubeFrameworkJenkins
- 前端er,Jenkins持續化整合Webpack專案前端JenkinsWeb
- Docker結合Jenkins的持續構建實踐DockerJenkins
- Kubernetes/K8S構建Jenkins持續整合平臺K8SJenkins
- Jenkins 持續整合 Android 專案JenkinsAndroid
- Jenkins 如何成功傳送郵件?Jenkins
- 基於K8s構建Jenkins持續整合平臺(部署流程)K8SJenkins
- 使用Jenkins可持續整合maven專案JenkinsMaven
- K8S+Jenkins自動化構建微服務專案(後續)K8SJenkins微服務
- Jenkins持續整合Jenkins
- Jenkins:引數化構建:分支|模組|回滾|列印日誌Jenkins
- Jenkins 實現Gitlab事件自動觸發Jenkins構建及釘釘訊息推送JenkinsGitlab事件
- 基於Kubernetes/K8S構建Jenkins持續整合平臺(下)K8SJenkins
- jenkins自動構建前端專案(window,vue)Jenkins前端Vue
- 「持續整合實踐系列 」Jenkins 2.x 構建CI自動化流水線常見技巧Jenkins
- iOS12系統應用傳送普通郵件構建郵件iOS
- Jenkins持續整合配置Jenkins
- 使用Jenkins+Blue Ocean 持構建自動化部署之安卓原始碼打包、測試、郵件通知Jenkins安卓原始碼
- Jenkins定時構建Jenkins
- 基於Kubernetes/K8S構建Jenkins持續整合平臺(上)-1K8SJenkins
- 基於Kubernetes/K8S構建Jenkins持續整合平臺(上)-2K8SJenkins
- 使用Jenkins+Pipline 持構建自動化部署之安卓原始碼打包、測試、郵件通知Jenkins安卓原始碼
- Jenkins教程:使用Jenkins進行持續整合Jenkins
- 關於持續整合打包平臺的Jenkins配置和構建指令碼實現細節Jenkins指令碼
- jenkins+docker 持續整合JenkinsDocker
- 持續整合 Jenkins 簡介Jenkins