CI持續集成流程
pipeline
jenkins安裝pipeline插件:
簡單使用:
查看流水線語法:
片段生成器:
2.0以後推薦使用聲明式語法:右側下拉框是一些步驟,都可以自動生成
Declarative Directive Generator:文檔
拉取代碼
使用片段生成器checkout代碼:
SCM的選項依賴於你安裝的插件:
選擇分支:
將“生成流水線腳本”複製:
生成的腳本:
checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: '70892509-82d6-4997-8bda-49c80e8b7956', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'https://192.168.0.100:8443/svn/dm-springcloud/trunk/spring-cloud']], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])
pipeline {
agent any
stages {
stage('checkout from svn') {
steps {
checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: '70892509-82d6-4997-8bda-49c80e8b7956', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'https://192.168.0.100:8443/svn/dm-springcloud/trunk/spring-cloud']], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])
}
}
}
}
編譯打包
mvn clean package
也可以寫成:
sh 'mvn clean package'
部署tomcat
需要安裝相應的插件纔會有deploy選項:
部署到tomcat:
jenkins腳本放到工程目錄
在web UI界面編寫腳本易失,一般推薦放到工程目錄下,還可以進行版本控制
常用的構建觸發器
觸發遠程構建
其他項目遠程通過一個地址URL來觸發當前項目的構建:
其他工程構建後觸發
其他工程構建完畢後會觸發當前工程的構建
定時構建
H/30 * * * * H代表傳參,表示變化的意思 如:10:02 10:32 11:02...
0/30 * * * * 整點開始,每隔30分鐘執行一次,如10:00 10:30 11:00 11:30
每2分鐘構建一次:
每隔2分鐘會自動觸發構建:
輪詢SCM
會掃描整個項目的代碼,增大開銷,不推薦使用。
每隔2分鐘輪詢一次:
當倉庫中代碼有變動,jenkins2分鐘後輪詢到倉庫代碼變化,會自動觸發構建:
Git hook自動觸發構建
jenkins的參數化構建
jenkins添加參數:
腳本改造:
創建v1分支,並在代碼中做好標記:
就會從v1分支拉取代碼:
發送構建結果到指定郵箱
安裝Email Extension Template插件
jenkins設置郵箱相關參數
sina郵箱開啓授權碼:
騰訊企業郵箱貌似不用授權碼即可配置。https://exmail.qq.com/
jenkins相關配置:
點【高級】按鈕:SSL加密,端口都是465,不使用SSL,端口是25
測試右鍵發送:
準備郵件內容
以下三個都是jenkins的全局變量:
這些全局參數都可以從如下途徑找到:
jenkins–configure system–Content Token Reference 點擊右側的?號:
這些變量可以直接在jenkinsfile腳本文件和email模板中使用。
push郵件模板:
編寫jenkinsfile腳本添加構建後發送郵件
post
與stages
平級,放在stages
後面:
stages
是構建的核心流程
post
是構建後操作
post
可以根據stage
執行的情況而選擇執行不同的代碼
post
的寫法參考流水線語法:
always
:無論構建成功與否,都會執行always裏面的代碼
failure
:stage執行失敗後走的代碼:
success
與failure
就類似於java中的try...catch...
可以通過片段生成器生成emailtext中的內容:
${FILE}
用於指定email郵件模板文件所在路徑
to
指定收件人列表,如果是多個的話,用,
隔開
下面多了個@,要注意細節
測試
jenkins + SonarQube代碼審查
SonarQube是用ES作爲代碼檢索的工具,所以會啓動es的服務
安裝SonarQube
start stop status
查看sonar
啓動日誌:
該token是sonarqube與jenkins整合時的紐帶
jekins整合SonarQube實現代碼審查
jenkins通過SonarQube Scanner插件調用Sonar Scanner(安裝在Linux機器,可以通過jenkins自動安裝),sonar scanner就相當於一個SonarQube的客戶端
搜索:SonarQube Scanner
jenkins配置sonarqube服務器:
添加憑據:
非pipeline項目添加SonarQube代碼審查
也就是:自由風格項目和maven項目
構建時會自動進行代碼審查:
在sonar的UI界面也可以看到結果:
pipeline項目添加SonarQube代碼審查
在工程中添加sonar-project.properties
配置文件:
全局工具配置SonaeQube Scanner中的Name與下面的是一致的
scannerHome = tool 'sonar-scanner'
自由風格項目會自動去全局工具配置中找到scannerHome
小插曲
yum install java-1.80.-openjdk* -y
rpm -ivh jenkins-2.190.3-1.1.noarch.rpm
vi /etc/sysconfig/jenkins
systemctl start jenkins
yum install unzip
修改jenkins插件下載地址
jenkins有1000多個插件。
jenkins–manage jenkins–manage plugins–可選插件
在【高級】中可以看到jenkins插件下載的地址:https://updates.jenkins.io/update-center.json
點擊【可選插件】,等待頁面加載完畢
jenkins的開發目錄:
/var/lib/jenkins
/var/lib/jenkins/updates/default.json
中,將jenkins官方的地址替換成清華的地址,將Google替換成baidu:
``
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
重啓jenkins:url後直接加上restart
192.168.52.30:8086/restart
安裝jenkins中文漢化插件
ps: 2.230默認已經安裝了漢化插件
jenkins用戶權限管理
搜索:Role-based
保存。
jenkins憑證管理
maven安裝和配置
ps:必須是M2_HOME
jenkins能構建的項目類型
自由風格項目構建
可選插件搜索:Deploy to container
保存即可:
查看日誌:
查看tomcat的管理界面:
演示代碼改動後的持續集成:
拉取下來的代碼已經變成了最新的版本:
可以看到最新的內容了:
maven項目構建
搜索插件:Maven Integration