Jenkins--pipline 流水線部署Java後端項目

寫在前面

以前個人博客裏面寫過Jenkins自動化部署Java項目,可參考博客 http://www.javashuo.com/article/p-agndifso-nh.html
這裏寫的是使用流水線部署java後端項目。java

實驗環境

ip地址 角色 部署的軟件
192.168.0.117 Jenkins 服務器 Jenkins、maven、jdk、git
192.168.0.120 Tomcat 服務器 gitlab、git、mysql、Tomcat、jdk

1.安裝配置好maven打包插件
2.安裝好gitlab倉庫,及本地Java代碼上傳gitlab
3.CentOS 7系統,可鏈接外網
4.關閉防火牆,加強性node

實驗步驟

1.安裝打包工具--maven

maven 安裝及配置參考 http://www.javashuo.com/article/p-bevvhvmm-nh.htmlmysql

注意:git

安裝maven要先安裝jdk, 若是系統有openjdk須要先卸載,Jenkins可使用本身安裝的jdk,但須要設置!
vim /etc/init.d/jenkins web

candidates="
/usr/local/java/bin/java   #插入本身安裝java路徑
/usr/java/jdk1.7.0_75/bin/java
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
"

Jenkins--pipline 流水線部署Java後端項目

2.代碼倉庫gitlab準備

代碼上傳gitlab參考 http://www.javashuo.com/article/p-mqpbotgk-nh.htmlsql

3.jenkins服務器和Tomcat服務器免密交互

1.修改2臺服務器hosts文件

vim /etc/hosts
在末尾加入:shell

192.168.0.117   jenkins
192.168.0.120   tomcat

Jenkins--pipline 流水線部署Java後端項目

2,3,4步都在Jenkins服務器上面操做apache

2.生成ssh key

ssh-keygenvim

3.將ssh公鑰發送tomcat服務器

ssh-copy-id -i .ssh/id_rsa.pub root@tomcat後端

4.免密登陸測試

ssh root@tomcat

Jenkins--pipline 流水線部署Java後端項目

4.Jenkinsfile編寫

pipeline {
  agent {
    node {
      label 'master'
    }

  }
    //拉取代碼
  stages {
    stage('GetCode') {
      steps {
        sleep 5
      }
    }
        //打包
    stage('build') {
      steps {
        sh '/usr/local/apache-maven-3.6.3/bin/mvn clean install -Ptest'
            sleep 2
        println('打包完成!')
        sh 'scp -r /var/lib/jenkins/workspace/maven-gitlab-quartz/target/*.war root@tomcat:/usr/local/apache-tomcat-8.5.16/webapps '
        sleep 1
        println('部署完成!')
      }
    }
  }
}

5.新建流水線項目

Jenkins--pipline 流水線部署Java後端項目

Jenkins--pipline 流水線部署Java後端項目

Jenkins--pipline 流水線部署Java後端項目

6.構建測試

出現問題1:

java 命令不識別

Jenkins--pipline 流水線部署Java後端項目

解決方案

1.從新設置環境變量

Jenkins--pipline 流水線部署Java後端項目

2.創建軟鏈接

ln -s /usr/local/java/bin/java /usr/bin/java

3.構建測試

Jenkins--pipline 流水線部署Java後端項目

4.結果:成功解決問題

出現問題1

沒法遠程發送war包

Jenkins--pipline 流水線部署Java後端項目

解決方案

1.從新作免密交互
2.在本地測試shell環境測試
scp -r /var/lib/jenkins/workspace/maven-gitlab-quartz/target/quartz.war root@192.168.0.120:/test

Jenkins--pipline 流水線部署Java後端項目

構建測試:仍是出現相同報錯

分析緣由:因爲推送的公鑰是root用戶的,而Jenkins操做是Jenkins用戶執行,因此用戶權限不同,致使的。

最終解決方案:

給Jenkins用戶受權或使用root用戶操做Jenkins,這裏修改成使用root用戶操做Jenkins(線上環境建議給Jenkins用戶受權)

1.修改配置文件

vim /etc/sysconfig/jenkins

Jenkins--pipline 流水線部署Java後端項目

2.重啓Jenkins(必定要重啓)

systemctl restart jenkins

3.再次構建測試:

Jenkins--pipline 流水線部署Java後端項目

結果:成功解決問題

7.項目測試

Jenkins--pipline 流水線部署Java後端項目

Jenkins--pipline 流水線部署Java後端項目

後續優化:

1.因爲我是使用實驗環境部署的,線上環境須要作防火牆策略。
2.jenkinsfile 還能夠添加構建後操做,好比發送郵件等。
3.發佈項目部分,能夠單獨寫一份腳本,內容包括備份war包,重啓服務等。

總結

1.構建以前要安裝好相關插件,準備好代碼及gitlab2.遇到構建報錯不要慌,看報錯日誌,再去解決問題

相關文章
相關標籤/搜索