一、前提
插件:Maven Integration plugin
環境:
maven、tomcat
用的博客系統代碼:
git clone https://github.com/b3log/solo.git
遠端git服務器:
[git@git repos]$ mkdir -p solo [git@git repos]$ cd solo/ [git@git solo]$ git --bare init Initialized empty Git repository in /home/git/repos/solo/
本地web:
[root@web solo]# git remote -v origin git@172.16.1.3:/home/git/repos/solo (fetch) origin git@172.16.1.3:/home/git/repos/solo (push) [root@web solo]# git remote rm origin [root@web solo]# git init Reinitialized existing Git repository in /root/solo/.git/ [root@web solo]# git remote add origin git@172.16.1.3:/home/git/repos/solo [root@web solo]# git add . [root@web solo]# git commit -m "java solo all" # On branch master nothing to commit, working directory clean [root@web solo]# git push origin master Counting objects: 29058, done. Compressing objects: 100% (9854/9854), done. Writing objects: 100% (29058/29058), 47.77 MiB | 39.28 MiB/s, done. Total 29058 (delta 15768), reused 29058 (delta 15768) To git@172.16.1.3:/home/git/repos/solo* [new branch] master -> master
因為solo需要改如下配置才可以訪問:(改serverhost為指定的域名)
vim /root/solo/src/main/resources/latke.properties
然后再重新提交上去
二、配置
1)新建job
2)參數化構建
3)配置git倉庫(針對jenkinsfile)
三、編寫Jenkinsfile
源碼配置文件:
node ("slave02-172.16.1.3") {//def mvnHome = '/usr/local/maven'stage('git checkout') {checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@172.16.1.3:/home/git/repos/solo']]])}stage('maven build') {sh '''export JAVA_HOME=/usr/local/jdk1.8/usr/local/maven3.3/bin/mvn clean package -Dmaven.test.skip=true''' }stage('deploy') {sh ''' JENKINS_NODE_COOKIE=dontkillmeexport JAVA_HOME=/usr/local/jdk1.8TOMCAT_NAME=tomcatTOMCAT_HOME=/application/$TOMCAT_NAMEWWWROOT=$TOMCAT_HOME/webapps/ROOTif [ -d $WWWROOT ]; thenmv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T")fiunzip ${WORKSPACE}/target/*.war -d $WWWROOTPID=$(ps -ef |grep $TOMCAT_NAME |egrep -v "grep|$$" |awk \'{print $2}\')[ -n "$PID" ] && kill -9 $PID/bin/bash $TOMCAT_HOME/bin/startup.sh'''}stage('test') {//sh "curl http://solo.test.com/status.html"echo "test ok!!!!!!!"} }
下面為帶解釋版,但不可以使用,部分注釋會造成問題
node ("slave02-172.16.1.3") { //綁定到該節點構建//def mvnHome = '/usr/local/maven'stage('git checkout') { //拉代碼checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@172.16.1.3:/home/git/repos/solo']]])}stage('maven build') { //maven buildsh '''export JAVA_HOME=/usr/local/jdk1.8 //在指定java環境變量/usr/local/maven3.3/bin/mvn clean package -Dmaven.test.skip=true''' //構建maven包 clean package表示構建之前會清理之前構建的包,-Dmaven.test.skip=true表示跳過單元測試 }stage('deploy') { //部署sh ''' JENKINS_NODE_COOKIE=dontkillme #tomcat啟動時會衍生出一些子進程,然后才能成功啟動,但是jenkins會在構建結束殺掉tomcat的那些衍生子進程,造成tomcat啟動失敗,此處加上這個參數可以解決這個問題。 export JAVA_HOME=/usr/local/jdk1.8TOMCAT_NAME=tomcatTOMCAT_HOME=/usr/local/$TOMCAT_NAMEWWWROOT=$TOMCAT_HOME/webapps/ROOTif [ -d $WWWROOT ]; then //如果目錄存在,先備份mv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T")fiunzip ${WORKSPACE}/target/*.war -d $WWWROOT //項目包解壓到站點目錄PID=$(ps -ef |grep $TOMCAT_NAME |egrep -v "grep|$$" |awk \'{print $2}\') //重啟tomcat[ -n "$PID" ] && kill -9 $PID/bin/bash $TOMCAT_HOME/bin/startup.sh'''}stage('test') { //測試//sh "curl http://wp.test.com/status.html"echo "test ok!!!!!!!"} }