Docker 搭建 Jenkins 流水线项目配置
本篇介紹 Jenkins 流水線項目的配置及流水線腳本語法規則。至于 Jenkins 的安裝及其它配置,我之前寫過一篇文章可以查看。 https://www.yuque.com/testpu/pro/bo7lzr ,以下,演示也是基于這篇文章中介紹的 Jenkins 配置為準。
1、流水線項目配置
安裝完流水線的插件可以,創建項目時會出現對應的流水線項目選項,如下:
輸入名稱,api_pipeline_dev 選中,流水線,即可創建對應項目。
至于,其它配置,如,git拉取代碼,jdk,maven、遠程服務器等,查看我的上一篇文章,這里只介紹 Jenkins 流水線項目的創建及流水線腳本。
2、流水線 api-jar包打包腳本
下面是 api jar包的構建及部署腳本。
pipeline {agent anystages {stage('拉取代碼') {steps {checkout([$class: 'GitSCM', branches: [[name: '*/dev']], extensions: [], userRemoteConfigs: [[credentialsId: '32d07987c09', url: 'http://192.8.8.8:8080/git/api']]])echo '拉取代碼成功'}}stage('編譯構建') {steps {echo "${env.WORKSPACE}" //用于打印 Jenkins 工作目錄,沒啥實質用處sh 'mvn -f spomlile/pom.xml clean install'echo '編譯成功'}}//stage('項目部署') {//Jenkins 的ssh插件來實現部署jar包,就是這里配置后生成腳本 https://www.yuque.com/testpu/pro/lsigkl#xidkx//steps {//sshPublisher failOnError: true, publishers: [sshPublisherDesc(configName: '211.4docker', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/api/spomlile-all/', remoteDirectorySDF: false, removePrefix: 'spomlile/spomlile-all/target', sourceFiles: 'spomlile/spomlile-all/target/spomlile-all-0.1.0-exec.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]//echo '項目部署成功'//}//} stage('項目部署') {//執行遠程服務器上的腳本來實現部署steps {sh '''ssh root@192.168.211.4 "nohup sh /data/api/scp_from_211.3_api_pipeline.sh & sleep 1"sleep 3'''}} } }2.1腳本說明:
1、編譯構建腳本中這個命令非常關鍵,如果你的項目工程存在多個微服務,那么你從 Git 倉庫拉取下來的代碼多了一層目錄(根目錄中不會有 pom.xml 這個文件),此時必須要指定這個文件的位置,否則 maven 識別不了,哈哈哈哈。用如下的方式指定該文件的位置,比如:
# 指定pom.xml文件的位置,基于Jenkins工作目錄的相對目錄 'mvn -f litemall/pom.xml clean install'2、部署腳本有兩種實現方法,一種是直接用 Jenkins 的ssh插件,傳輸 jar 到遠程服務器(上面腳本注釋的部分),另外一種是在遠程服務器上寫好部署腳本,用 Jenkins 執行遠程服務器上的部署腳本,按自己項目需求二選一。
遠程服務器上的部署腳本如下。
#!/bin/bashhost='192.8.8.8' name='booksmpil-all-5.1.0-exec.jar' dir='booksmpil' DT=`date +%Y%m%d%H%M`if ps -ef|grep $name |grep -v "grep" &>/dev/null; thenjava_pid=`ps -ef | grep $name | grep -v "grep" | awk '{print $2}'`echo "kill -9 的pid:" $java_pidkill -9 ${java_pid} fi echo '【開始暫停jar包】'if ps -ef|grep $name |grep -v "grep" &>/dev/null; thenecho "Tomcat stop failed.Please check the problem."exit 5 ficd /data/api cmd='mv '$dir' bk/'$dir'_'$DT echo $cmd eval $cmd echo '【項目備份完成】'sleep 3if [ ! -d booksmpil ]; thenmkdir $dir fisleep 3scp -rq root@$host:/data/jenkins/jenkins_home/workspace/api_pipeline_dev/booksmpil/booksmpil-all/target/$name /data/api/$dir sleep 2 echo '【項目部署完成】'sleep 2cd /data/api/$dir cp /data/api/confbk/appconifg-all.yml ./appconifg-core.yml echo '【備份配置完成】'source /etc/profile nohup java -jar $name >/dev/null & if ps -ef|grep $name |grep -v "grep" &>/dev/null; thenecho '【啟動jar包】' fiNR=`ps -ef | grep "${name}" | grep -v grep | wc -l` if [ "$NR" -eq 1 ] thenecho '【啟動成功】' elseecho '【啟動失敗】' fi3、流水線腳本語法生成
Jenkins 自帶流水線語法生成插件,入口項目配置-流水線-流水線語法
3.1Git拉取代碼腳本生成
選中紅框中的步驟,然后依次填寫Git倉庫的信息,點擊 ‘生成流水線腳本’即可。
3.2執行 shell 腳本生成
選中紅框中的步驟,然后寫你要執行的 shell 腳本,點擊生成即可。
3.3向遠程服務器發布jar包腳本生成
依次填寫遠程服務器的配置、遠程目錄、源文件地址等信息后,點擊生成。
還有很多流水線腳本生成語法,按需生成。
讀后感
來這里找我交流
- QQ群:330374464
- 公眾號:軟件測試資源站(ID:testpu)
- 阿里語雀:https://www.yuque.com/testpu/pro
總結
以上是生活随笔為你收集整理的Docker 搭建 Jenkins 流水线项目配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Http流水线
- 下一篇: 21岁被人“封神”,曾一分钟黑了阿里巴巴