在上一編文章裏已經把Jenkins安裝好裏,通過docker安裝在阿里雲GFS-2服務器上裏,參考(Jenkins自動集成之路-搭建部署編),接下來將正式開始使用。
目的
爲團隊項目工程配置好自動構建任務,利用Jenkins依據Gitlab的代碼提交觸發自動構建任務,並自動發佈到研發環境到集成環境裏。
大致步驟
push(開發人員提交代碼)–> Gitlab通知Jenkins --> Jenkins去Gitlab拉取最新代碼,啓動構建任務 -->
Build(構建打包)–> Test(測試) --> Deliver發佈部署 --> Jenkins通知Gitlab構建結果。
任務清單
- 後端服務項目自動構建
- 前端項目自動構建
- 前端JsClientAPI自動生成
基礎環境
Jenkins,Git,Gitlab,Docker,JDK11,Maven
安裝部署參考《基礎環境安裝部署》
Jenkins流水線Pipeline實踐
實踐說明
- 當Gitlab項目的develop分支發生Push事件時,進行自動構建。
- 使用Maven構建打包應用。
- 使用Maven測試應用。
- 使用docker構建應用容器鏡像。
- 使用docker部署運行應用。
建Jenkinsfile文件
在Java項目根目錄建裏jenkins目錄,結構如:jenkins/scripts
jenkins/目錄放主Jenkinsfile文件
jenkins/scripts目錄放sh腳本文件
Jenkinsfile文件
pipeline {
agent {
docker {
image '172.xx.209.xx:8082/jenkins/maven:3.6.3-jdk-11'
args '-v /data/maven/.m2:/root/.m2'
}
}
environment {
TARTGET_APP_NAME = 'my-app'
TARTGET_APP_VERSION = '1.0.0'
}
stages {
stage('Build') {
steps {
sh 'mvn clean install'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
}
}
}
stage('Deliver') {
steps {
sh 'echo "開始構建app的鏡像"'
sh 'pwd'
sh 'docker build -t ${TARTGET_APP_NAME}:${TARTGET_APP_VERSION} ./${TARTGET_APP_NAME}/'
script {
try {
sh 'echo "停止之前的app docker 容器"'
sh 'docker stop ${TARTGET_APP_NAME}${TARTGET_APP_VERSION}'
sh 'echo "刪除之前的app docker 容器"'
sh 'docker rm ${TARTGET_APP_NAME}${TARTGET_APP_VERSION}'
}catch (err){}
}
sh 'echo "開始運行新的app docker 容器"'
sh 'docker run -d --name ${TARTGET_APP_NAME}${TARTGET_APP_VERSION} -p 18001:18001 -e env=dev -e SPRING_PROFILES_ACTIVE=dev -e JAVA_OPTS="-Xmx2049m -Xms2049m" ${TARTGET_APP_NAME}:${TARTGET_APP_VERSION}'
}
}
}
}
在Jenkins中配置你的Gitlab的Access Token
在你的Gitlab裏先設置Token
在Jenkins的首頁 -> 憑據 -> 系統 -> 全局憑據 -> 添加憑據, 把上面 GitLab 中生成的 access token 填進去
在Jenkins的首頁 -> 系統管理 -> 系統設置 -> Gitlab 配置項, 填入 GitLab 相關的配置, 後面配置項目時用到。
在Jenkins中創建你的流水線項目
-
創建新項目
回到Jenkins主界面,New Item ----> create new jobs
-
項目命名,選擇流水線Pipeline類型任務
- 在 Enter an item name 域中,爲新的流水線項目指定名稱(例如 simple-java-maven-app)。
- 向下滾動並單擊 Pipeline,然後單擊頁面末尾的 OK 。
-
配置任務參數
- 在General頁籤裏選擇,並設置參數
設置項目的git地址
設置構建觸發器,當有push時觸發,該步驟重要獲取兩個參數webhook URL 和Secret tonken,用於到Gitlab裏配置
- 在General頁籤裏選擇,並設置參數
- 配置任務腳本
- 點擊頁面頂部的流水線 Pipeline 選項卡,向下滾動到 Pipeline 部分。
- 選擇 Pipeline script from SCM 選項。此選項指示Jenkins從源代碼管理(SCM)倉庫獲取你的流水線。
- 在 SCM 域中,選擇 Git。
- 在 Repository URL 域中,填寫項目到git地址,選擇git的賬號密碼
- 點擊 Save 保存你的流水線項目。
接下來就是配置Gitlab裏,首先打開你的Gitlab界面,去到項目頁面到配置界面,進入Integrations配置界面,將webhook URL 和Secret tonken配置進去,並保存,如下圖