Jenkins + Pipeline + Git + Maven (十)


一、准備環境介紹

192.168.5.71     # gitlab 倉庫IP
192.168.5.72     # 開發環境,用於提交代碼等
192.168.5.73     # tomcat 部署solo服務站點
192.168.5.239    # jenkins 服務器

二、在WEB機器(73)上面部署tomcat + maven環境

2.1 安裝JDK,jenkins中添加slave節點需要

# tar xf jdk-8u111-linux-x64.tar.gz -C /usr/local/
# ln -s /usr/local/jdk1.8.0_111 /usr/local/jdk
# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

2.2 安裝maven環境,打war包的時候需要

# wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
# tar xf apache-maven-3.5.4-bin.tar.gz -C /usr/local/
# ln -s /usr/local/apache-maven-3.5.4/ /usr/local/maven

2.3 安裝tomcat環境

# tar xf apache-tomcat-8.5.42.tar.gz -C /usr/local/
# ln -s /usr/local/apache-tomcat-8.5.42 /usr/local/tomcat
# cd /usr/local/tomcat/webapps/
# rm -rf *

2.4 創建備份目錄

# mkdir -p /data/backup

2.5 對git服務器進行免密認證

# ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
# ssh-copy-id -i /root/.ssh/id_dsa.pub git@192.168.5.71

2.6 安裝unzip解壓war包命令,也可以不安裝,1.8會熱解壓,安裝mariadb數據庫,將數據庫密碼設置為123456,並創建solo數據庫

# yum install unzip mariadb-server mariadb -y
# mysqladmin -uroot password '123456'
# mysql -uroot -p123456
MariaDB [(none)]> create database solo;

數據庫密碼也可以修改solo v3.6.6源碼包,具體目錄如下

# vim solo/src/main/resources/local.properties
#### MySQL runtime ####
runtimeDatabase=MYSQL
jdbc.username=root
jdbc.password=123456
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.URL=jdbc:mysql://localhost:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC

三、在git服務器(71)上面創建solo倉庫

# su - git
$ mkdir repo/solo
$ cd repo/solo/
$ git --bare init
Initialized empty Git repository in /home/git/repo/solo/

git倉庫已創建好,倉庫地址是:git@192.168.5.71:/home/git/repo/solo

四、在開發機下載solo 3.6.6版本並上傳到git倉庫

# git clone git@192.168.5.71:/home/git/repo/solo
# wget https://codeload.github.com/b3log/solo/tar.gz/v3.6.6
# tar xf v3.6.6
# mv solo-3.6.6/* solo/
# cd solo/

# 修改solo配置文件 # grep server src/main/resources/latke.properties serverScheme=http serverHost=solo.leon.com serverPort=8080 # 上傳代碼 # git add . # git commit -m 'all solo file' # git push origin master

五、開發機編寫jenkinsfile文件

# git clone git@192.168.5.71:/home/git/repo/jenkinsfile
# cd jenkinsfile/
# mkdir java-solo
# cd java-solo/

jenkinsfile文件如下:

tomcat發布項目要重啟服務

node ("192.168.5.73") {
   //def mvnHome = '/usr/local/maven'
   stage('git checkout') { 
        checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ccf5f140-9a28-49d6-abc8-40bc6c750323', url: 'git@192.168.5.71:/home/git/repo/solo']]])
   }
   stage('maven build') {
        sh '''export JAVA_HOME=/usr/local/jdk
        /usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true'''
   }
   stage('deploy') {
        sh '''
        JENKINS_NODE_COOKIE=dontkillme
        export JAVA_HOME=/usr/local/jdk
        TOMCAT_NAME=tomcat
        TOMCAT_HOME=/usr/local/$TOMCAT_NAME
        WWWROOT=$TOMCAT_HOME/webapps/ROOT

        if [ -d $WWWROOT ]; then
           mv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T")
        fi
        unzip ${WORKSPACE}/target/*.war -d $WWWROOT
        PID=$(ps -ef |grep $TOMCAT_NAME |egrep -v "grep|$$" |awk \'{print $2}\')
        [ -n "$PID" ] && kill -9 $PID
        /bin/bash $TOMCAT_HOME/bin/startup.sh'''
   }
}
# cat jenkinsfile/java-solo/jenkinsfile

push代碼:

# cd jenkinsfile/
# git add .
# git commit -m 'add java-solo jenkinsfile'
# git push origin master

六、配置Jenkins

6.1 添加slave機器

  從節點配置信息

 

 6.2 創建一個solo-java的pipeline配置如下

 

 6.3 進行構建

 七、如果遇到的坑

7.1 jenkins啟動服務器自動關閉

原因:pipeline啟動的tomcat進程是jenkins派生的,當job完成之后jenkins會自動關閉自己派生的進程。所以tomcat會被關閉。在jenkinsfile中加入此行內容。

JENKINS_NODE_COOKIE=dontkillme

7.2 solo沒有皮膚的導致tomcat啟動失敗

[ERROR]-[2019-11-25 17:48:15]-[org.b3log.latke.Latkes:829]: Read skin [Pinghsu]'s configuration failed: null
[ERROR]-[2019-11-25 17:48:15]-[org.b3log.solo.SoloServletListener:315]: Can't load the default skins, please make sure skin [Pinghsu] is under skins directory and structure correctly

經查看此目錄是空的

# ls solo-3.6.6/src/main/webapp/skins/

解決方法:下載新的solo源碼包,將其skins目錄的文件拷貝到上面的目錄即可

# cp -r solo/src/main/resources/skins/ solo-3.6.6/src/main/webapp/skins/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM