準備工作
Jenkins
- 這裏就不在闡述如何安裝Java,Maven,Jenkins,Gitlab等相關環境,需要的請去下面這篇文章自行查看
Centos7 Git+Jenkins+Maven發佈
正式開始
安裝插件
- 登錄Jenkins後臺-系統管理-插件管理- 可選插件-Pipeline Maven Integration Plugin-直接安裝
- 回到Jenkins首頁,新建任務,就可以看到,可以構建一個流水線的任務了。
新建任務
- 新建一個名爲test-xxl-job-admin-pipline的流水線任務
案例
- 接下來嘗試發佈一個項目,以開源的一個java程序xxl-job(定時任務調度)爲例
- 代碼倉庫的URL爲https://github.com/xuxueli/xxl-job.git
- 首先我們要分解一下發布一套代碼的步驟,大概如下
①通過git clone拉取代碼
②通過maven編譯打包java代碼
③通過java命令啓動jar包
Pipline
①配置test-xxl-job-admin-pipline
②移到最下方Pipline腳本處
③編寫Pipline腳本(),
- 格式可以仿照網上的,內容需要根據自己實際情況來寫,例如我希望從https://github.com/xuxueli/xxl-job.git 拉取代碼,那麼我不會寫pipline腳本怎麼辦,jenkins提供了pipline語法生成器
-選擇git:Git
-輸入項目代碼地址,因爲這個項目是開源的,所有用戶都可以clone(如果是公司的項目,那肯定有gitlab的賬號密碼),點擊生成即可
Clone的腳本
pipeline {
agent any
environment {
REVISION = "0.0.${env.BUILD_ID}"
}
options{
disableConcurrentBuilds()
skipDefaultCheckout()
timeout(time: 1, unit: 'HOURS')
timestamps()
}
parameters{
string(name: 'PERSON', defaultValue: '測試-字段輸入', description: '請輸入中文')
booleanParam(name: 'xxl_job_admin', defaultValue: true, description: '是否發佈xxl_job_admin')
}
stages {
stage ("Clone") {
//
steps{
script{
if ( params.xxl_job_admin== true ){
echo "${params.xxl_job_admin}"
echo "xxl_job_admin爲選中狀態"
echo "開始拉取代碼"
git 'https://github.com/xuxueli/xxl-job.git'
}
else {
echo "xxl_job_admin未選中狀態,跳過"
}
}
}
}
}
}
- 保存,運行任務-Build with Parameters
- 查看控制檯輸出- Console Output
- 就可以看到正在拉取了,第一次拉取是比較慢,因爲外網拉取。對此,我建議,自建gitlab,然後將代碼clone到自己的gitlab(提高代碼clone速度),後期再自建nexus私服(提高編譯時候拉取依賴包的速度)。
- 那麼Clone 就到此爲止了
Build編譯打包腳本
- 因爲clone下來是3個文件夾,而我們只需要打包xxl-job-admin就可以,所以我們只要進入xxl-job-admin再進行打包
- 下面是腳本
pipeline {
agent any
environment {
REVISION = "0.0.${env.BUILD_ID}"
}
options{
disableConcurrentBuilds()
skipDefaultCheckout()
timeout(time: 1, unit: 'HOURS')
timestamps()
}
parameters{
string(name: 'PERSON', defaultValue: '測試-字段輸入', description: '請輸入中文')
booleanParam(name: 'xxl_job_admin', defaultValue: true, description: '是否發佈xxl_job_admin')
}
stages {
stage ("Clone") {
//
steps{
script{
if ( params.xxl_job_admin== true ){
echo "xxl_job_admin爲選中狀態"
echo "開始拉取代碼"
git credentialsId: 'db8f1b2a-a0e1-40e2-8be5-840300cd5d0b', url: 'http://git.mifaqianbao.cn:8090/mifa/stib/java/xxl_job_admin.git'
//sh "sudo -u ${tenant} ${url}/${tenant}/deploy.sh stib_data ${choice} ${Branch}"
}
else {
echo "xxl_job_admin未選中狀態,跳過"
}
}
}
}
stage ("Build") {
steps{
script{
if ( params.xxl_job_admin== true ){
echo "xxl_job_admin爲選中狀態"
echo "開始編譯代碼"
sh "cd xxl_job_admin && mvn clean package -Dmaven.test.skip=true"
}
else {
echo "xxl_job_admin未選中狀態,跳過"
}
}
}
}
}
}
- 保存後構建即可,可以看到我第一次編譯用了3分16秒,第二次僅僅用了9秒鐘
· 打包腳本就到此爲止了
傳輸啓動腳本
- 接下來就是將編譯好的包傳輸到目標主機並啓動,這個就很簡單了,無非就是scp,kill,start。
- 這就自己琢磨好了,思路就是這樣,簡簡單單。也可以將步驟分解的再細緻一點。類似的腳本在上一篇文檔中有
Centos7 Git+Jenkins+Maven發佈
結束語
有疑問的話 歡迎留言,隨時滴滴。基本上工作日的時候都會看一下。