Docker 搭建 Jenkins 流水线项目配置
本篇介紹 Jenkins 流水線(xiàn)項(xiàng)目的配置及流水線(xiàn)腳本語(yǔ)法規(guī)則。至于 Jenkins 的安裝及其它配置,我之前寫(xiě)過(guò)一篇文章可以查看。 https://www.yuque.com/testpu/pro/bo7lzr ,以下,演示也是基于這篇文章中介紹的 Jenkins 配置為準(zhǔn)。
1、流水線(xiàn)項(xiàng)目配置
安裝完流水線(xiàn)的插件可以,創(chuàng)建項(xiàng)目時(shí)會(huì)出現(xiàn)對(duì)應(yīng)的流水線(xiàn)項(xiàng)目選項(xiàng),如下:
輸入名稱(chēng),api_pipeline_dev 選中,流水線(xiàn),即可創(chuàng)建對(duì)應(yīng)項(xiàng)目。
至于,其它配置,如,git拉取代碼,jdk,maven、遠(yuǎn)程服務(wù)器等,查看我的上一篇文章,這里只介紹 Jenkins 流水線(xiàn)項(xiàng)目的創(chuàng)建及流水線(xiàn)腳本。
2、流水線(xiàn) api-jar包打包腳本
下面是 api jar包的構(gòu)建及部署腳本。
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('編譯構(gòu)建') {steps {echo "${env.WORKSPACE}" //用于打印 Jenkins 工作目錄,沒(méi)啥實(shí)質(zhì)用處sh 'mvn -f spomlile/pom.xml clean install'echo '編譯成功'}}//stage('項(xiàng)目部署') {//Jenkins 的ssh插件來(lái)實(shí)現(xiàn)部署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 '項(xiàng)目部署成功'//}//} stage('項(xiàng)目部署') {//執(zhí)行遠(yuǎn)程服務(wù)器上的腳本來(lái)實(shí)現(xiàn)部署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腳本說(shuō)明:
1、編譯構(gòu)建腳本中這個(gè)命令非常關(guān)鍵,如果你的項(xiàng)目工程存在多個(gè)微服務(wù),那么你從 Git 倉(cāng)庫(kù)拉取下來(lái)的代碼多了一層目錄(根目錄中不會(huì)有 pom.xml 這個(gè)文件),此時(shí)必須要指定這個(gè)文件的位置,否則 maven 識(shí)別不了,哈哈哈哈。用如下的方式指定該文件的位置,比如:
# 指定pom.xml文件的位置,基于Jenkins工作目錄的相對(duì)目錄 'mvn -f litemall/pom.xml clean install'2、部署腳本有兩種實(shí)現(xiàn)方法,一種是直接用 Jenkins 的ssh插件,傳輸 jar 到遠(yuǎn)程服務(wù)器(上面腳本注釋的部分),另外一種是在遠(yuǎn)程服務(wù)器上寫(xiě)好部署腳本,用 Jenkins 執(zhí)行遠(yuǎn)程服務(wù)器上的部署腳本,按自己項(xiàng)目需求二選一。
遠(yuǎn)程服務(wù)器上的部署腳本如下。
#!/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 '【開(kāi)始暫停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 '【項(xiàng)目備份完成】'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 '【項(xiàng)目部署完成】'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 '【啟動(dòng)jar包】' fiNR=`ps -ef | grep "${name}" | grep -v grep | wc -l` if [ "$NR" -eq 1 ] thenecho '【啟動(dòng)成功】' elseecho '【啟動(dòng)失敗】' fi3、流水線(xiàn)腳本語(yǔ)法生成
Jenkins 自帶流水線(xiàn)語(yǔ)法生成插件,入口項(xiàng)目配置-流水線(xiàn)-流水線(xiàn)語(yǔ)法
3.1Git拉取代碼腳本生成
選中紅框中的步驟,然后依次填寫(xiě)Git倉(cāng)庫(kù)的信息,點(diǎn)擊 ‘生成流水線(xiàn)腳本’即可。
3.2執(zhí)行 shell 腳本生成
選中紅框中的步驟,然后寫(xiě)你要執(zhí)行的 shell 腳本,點(diǎn)擊生成即可。
3.3向遠(yuǎn)程服務(wù)器發(fā)布jar包腳本生成
依次填寫(xiě)遠(yuǎn)程服務(wù)器的配置、遠(yuǎn)程目錄、源文件地址等信息后,點(diǎn)擊生成。
還有很多流水線(xiàn)腳本生成語(yǔ)法,按需生成。
讀后感
來(lái)這里找我交流
- QQ群:330374464
- 公眾號(hào):軟件測(cè)試資源站(ID:testpu)
- 阿里語(yǔ)雀:https://www.yuque.com/testpu/pro
總結(jié)
以上是生活随笔為你收集整理的Docker 搭建 Jenkins 流水线项目配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Http流水线
- 下一篇: [Markdown] 如何隐藏某些内容