Jenkins Pipeline 部署 SpringBoot 應用

来源:https://www.cnblogs.com/SimpleWu/archive/2020/07/07/13262966.html
-Advertisement-
Play Games

一. 安裝依賴包 yum install -y wget yum install -y gcc-c++ yum install -y zlib-devel perl-ExtUtils-MakeMaker yum -y install curl-devel expat-devel gettext-de ...


一. 安裝依賴包
yum install -y wget
yum install -y gcc-c++
yum install -y zlib-devel perl-ExtUtils-MakeMaker
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
yum install -y openssh-clients
yum install -y fontconfig
二. 環境準備

1.安裝JAVA環境

yum -y install java-1.8.0-openjdk
#檢測是否安裝成功
java -version

修改/etc/profile文件,添加JAVA_HOME

vi /etc/profile
在文件的最後面,加上以下代碼
export JAVA_HOME=/java/jdk1.8.0_171
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

在執行完保存過後,必須執行以下source /etc/profile,重置文件,讓它生效。

2.安裝Maven

#下載
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz
#解壓改名移動目錄
tar zxf apache-maven-3.1.1-bin.tar.gz 
mv apache-maven-3.1.1 /usr/local/maven3

vi /etc/profile然後還需要 配置環境變數。 #在適當的位置添加

export M2_HOME=/usr/local/maven3
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin

保存退出後運行下麵的命令使配置生效,或者重啟伺服器生效。

source /etc/profile

驗證版本

mvn -v

出現maven版本即成功

阿裡雲源

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
</mirrors>
三. 安裝Jenkins部署SpringBoot應用

rpm方式安裝:

sudo wget  https://pkg.jenkins.io/redhat-stable/jenkins-2.164.1-1.1.noarch.rpm
sudo rpm -ivh jenkins-2.164.1-1.1.noarch.rpm
#重載服務(由於前面修改了Jenkins啟動腳本)
sudo systemctl daemon-reload

#啟動Jenkins服務
sudo systemctl start jenkins

#將Jenkins服務設置為開機啟動
#由於Jenkins不是Native Service,所以需要用chkconfig命令而不是systemctl命令
sudo /sbin/chkconfig jenkins on

war包方式:

修改Jenkins預設用戶:

vi /etc/sysconfig/jenkins
#修改為Root用戶
JENKINS_USER="root"
#給用戶授權
sudo chown -R root /var/log/jenkins
sudo chgrp -R root /var/log/jenkins
sudo chown -R root /var/lib/jenkins 
sudo chgrp -R root /var/lib/jenkins
sudo chown -R root /var/cache/jenkins
sudo chgrp -R root /var/cache/jenkins

直接將War包上傳到伺服器運行即可。

nohup java -jar jenkins.war >jenkins.log 2>&1 &

運行後訪問localhost:8080即可。

進入界面後需要輸入一串密碼在伺服器查看即可:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

進入之後創建好自己的用戶名與密碼,跳過所有下載。

登陸之後進入Manage Jenkins -> Global Tool Configuration 中進行配置Maven,Git,JDK

四. 新建Pipeline 項目

配置Git倉庫:

腳本路徑是指代碼拉下的jenkins_files目錄裡面的01_eureka文件。·

node {
   def mvnHome
   def workspace = pwd()
   def project_name = 'eureka-server-1.0.0.jar'
   def project_log = 'eureka-server-1.0.0.log'
   def project_home = 'app-centre/eureka-server'
   def vm_ip = 'xxx.xxx.xxx.xxx'
   def vm_port = '22'
   def vm_user = 'root'
   //代碼獲取
   stage('Preparation') { // for display purposes
	  git branch: 'dev',
	  url:'https://xxxxxxx.git'
   }
   //構建
   stage('Build') {
      // Run the maven build
      if (isUnix()) {
         sh "mvn -Dmaven.test.skip=true clean package"
 
      } else {
         bat(/mvn -Dmaven.test.skip=true clean package/)
      }
   }
   
   //移動
   stage('MV') {
     sh "mv ${project_home}/target/${project_name} /usr/local/src/"
   }
   
   //上傳到伺服器
   stage('Upload VM') {
     sh "scp -P ${vm_port} /usr/local/src/${project_name} ${vm_user}@${vm_port}:/usr/local/src/bk"
	 //sh "ssh -p ${vm_port} ${vm_user}@${vm_ip} 'nohup java -jar /usr/local/src/${project_name} >> ${project_log} '"
   }
   
   
  //運行JAR包
  stage('Run') {
	 //sh "if (ps -ef| grep java|grep ${project_name})then (ps -ef| grep java|grep ${project_name}| awk '{print \$2}'|xargs kill -9) fi"
     sh "ssh -p ${vm_port} ${vm_user}@${vm_ip} 'nohup java -jar /usr/local/src/${project_name} >${project_log} 2>&1 &'"
  }
}

腳本步驟為

1.Preparation 拉取代碼

2.Build 編譯打包

3.MV 移動到指定目錄

4.Upload VM 上傳 jar包到虛擬機

5.Run 運行遠程伺服器Jar包

註意事項:

需要在腳本上直接將Jar上傳到伺服器必須配置ssh公鑰私鑰,配置步驟為:

進入伺服器Root目錄

  1. 輸入命令:cd .ssh進入rsa公鑰私鑰目錄(清空舊秘鑰)
  2. 在當前目錄下執行ssh-keygen -t rsa,三次回車後生成新的公鑰(id_rsa.pub)私鑰(id_rsa)文件(每個節點都要重新生成)
  3. 在主節點上執行命令:cat id_rsa.pub >> authorized_keys把公鑰內容拷貝到該文件中
  4. 登錄其它節點,把其它節點的公鑰都拷貝到主節點的authorized_keys文件中(需要輸入密碼)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 申請開放平臺 ,並綁定公眾號和小程式 小程式授權登錄獲取unionID 公眾號關註時獲取unnionID,並查詢是否unionID是否存在,然後存在,更新公眾號openid信息,不存在則新建 參考文檔: 公眾號unionID機制: https://developers.weixin.qq.com/d ...
  • 案例故事:Android手機音視頻圖片解碼播放測試,有將近上千條用例, 包含了不同的音視頻圖片文件,每條用例都至少對應了一個測試資源文件。 整個測試資源倉庫,將近100G,一些視頻比如High Profile 5.2規格的,一個就500M, 如果每次測試都需要adb push導入這麼多測試資源文件到 ...
  • 最近新開發的項目中需要使用到國際化功能,項目是基於SpringBoot來進行開發,藉此機會整理一篇關於SpringBoot實現國際化i18n功能的文章,分享給大家。 依賴引入 在Spring Boot的web項目中無需引入其他特殊的配置,預設的web starter中便已經涵蓋了所需的基礎組件。對應 ...
  • 1.file類的方法 1.getName():獲取文件名 2.getPath():獲取文件路徑,設定是相對路徑得到的就是相對路徑,絕對路徑同里 3.getAbsolutePath():獲取文件絕對路徑 4.getParent():獲取文件父類路徑 5.exists():判斷文件是否存在 6.isFi ...
  • 其實spring boot攔截器的配置方式和springMVC差不多,只有一些小的改變需要註意下就ok了。下麵主要介紹兩種常用的攔截器: 一、基於URL實現的攔截器: public class LoginInterceptor extends HandlerInterceptor{ /** * 在請 ...
  • 點擊藍色“程式員書單”關註我喲 加個“星標”,每天帶你看好文,讀好書! 本文轉自知乎:https://zhuanlan.zhihu.com/p/34994820 最近在看程式員的自我修養 (豆瓣),作者陳逸鶴,一本寫給程式員的思考書,其實市面上類似題材的書也不少,比如我看過的另外兩本內外兼修:程式員 ...
  • 關註公眾號【程式員書單】後回覆“book”即可領取30+精品免費電子書 ​ Go 是一種簡單、小巧、令人愉悅的語言。它也有一些犄角旮旯,但絕大部分是經過精心設計的。它的學習速度令人難以置信,並且規避了其他語言中一些不那麼廣為人知的特性。 現如今越來越多的互聯網公司開始使用go語言,有的初創公司開始使 ...
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:打磨蝦 “遲到”了一個月的高考終於要來了。 正好我得到了一份山東新高考模擬考的成績和山東考試院公佈的一分一段表,以及過去三年的普通高考本科普通批首次志願錄取情況統計。2 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...