jenkins:用jenkins通過ssh部署jar包到遠程linux機器(jdk 15 / jenkins 2.257)


 一,遠程linux機器上安裝java15(如已安裝,跳過此步)

說明:演示用的linux機器ip: 192.168.1.47

  1,下載:

[root@blog ~]# cd /usr/local/source
[root@blog source]# mkdir jdk
[root@blog source]# cd jdk
[root@blog jdk]# wget https://download.oracle.com/otn-pub/java/jdk/15+36/779bf45e88a44cbd9ea6621d33e33db1/jdk-15_linux-x64_bin.tar.gz?AuthParam=1600661691_2c068f0678a8396b65cf132c02446e2a
--2020-09-21 12:13:38--  https://download.oracle.com/otn-pub/java/jdk/15+36/779bf45e88a44cbd9ea6621d33e33db1/jdk-15_linux-x64_bin.tar.gz?AuthParam=1600661691_2c068f0678a8396b65cf132c02446e2a
Resolving download.oracle.com (download.oracle.com)... 23.211.96.11
Connecting to download.oracle.com (download.oracle.com)|23.211.96.11|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 188017890 (179M) [application/x-gzip]
Saving to: ‘jdk-15_linux-x64_bin.tar.gz?AuthParam=1600661691_2c068f0678a8396b65cf132c02446e2a’

jdk-15_linux-x64_bin.tar.gz?AuthParam=16006 100%[==========================================================================================>] 179.31M  12.0MB/s    in 14s

2020-09-21 12:13:52 (12.7 MB/s) - ‘jdk-15_linux-x64_bin.tar.gz?AuthParam=1600661691_2c068f0678a8396b65cf132c02446e2a’ saved [188017890/188017890]
[root@blog jdk]# ls
'jdk-15_linux-x64_bin.tar.gz?AuthParam=1600661691_2c068f0678a8396b65cf132c02446e2a'
[root@blog jdk]# mv jdk-15_linux-x64_bin.tar.gz\?AuthParam\=1600661691_2c068f0678a8396b65cf132c02446e2a jdk-15_linux-x64_bin.tar.gz

 

2,解壓

[root@blog jdk]# tar -zxvf jdk-15_linux-x64_bin.tar.gz

 

3,移動到安裝目錄

[root@blog jdk]# mv jdk-15 /usr/local/soft/

 

4,配置環境變量:

編輯profile文件,把命令保存到文件中

[root@blog jdk]# vi /etc/profile
添加以下命令:
export JAVA_HOME=/usr/local/soft/jdk-15
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

 使生效:

[root@blog jdk]# source /etc/profile

 

5,檢查安裝效果:

[root@blog jdk]# java --version
java 15 2020-09-15
Java(TM) SE Runtime Environment (build 15+36-1562)
Java HotSpot(TM) 64-Bit Server VM (build 15+36-1562, mixed mode, sharing)

 

說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/

說明:作者:劉宏締 郵箱: 371125307@qq.com

 

二,遠程服務器(192.168.1.47)端配置啟動jar的腳本:

1,創建腳本:
[root@blog java]# mkdir /data/java/tools
[root@blog java]# cd tools
[root@blog tools]# vi startadmin.sh
[root@blog tools]# chmod +x startadmin.sh 
腳本內容: 
[root@blog tools]# more startadmin.sh
#!/bin/bash
export BUILD_ID=dontKillme

WORKSPACE=/data/java/jar
JDK_PATH=/usr/local/soft/jdk-15/bin/java
JAR_NAME=demo-0.0.1-SNAPSHOT.jar

PID=`ps -ef | grep ${JAR_NAME} | grep -v grep | grep -v startup | awk '{print \$2}'`
echo $PID;
if [ ! "$PID" ] ;then
     echo "進程不存在"
else
    echo "進程存在,殺死進程PID$PID"
    kill -9 $PID
fi

echo "服務啟動開始"
nohup ${JDK_PATH} -jar ${WORKSPACE}/${JAR_NAME} &

 

2,啟動腳本上傳一個名為 demo-0.0.1- SNAPSHOT.jar的jar包到/data/java/jar目錄
運行啟動jar包的腳本:
[root@blog tools]# /data/java/tools/startadmin.sh
進程不存在
服務啟動開始
[root@blog tools]# nohup: appending output to ‘nohup.out'

 

3,查看端口:檢查是否生效?
[root@blog tools]# ss -lntp | grep 8080
LISTEN   0         100                 0.0.0.0:8080             0.0.0.0:*        users:(("java",pid=11559,fd=11))   
可以看到進程已啟動
 
4,通過瀏覽器測試訪問:
http://192.168.1.47:8080/home/home 
頁面返回:
this is home/home page
說明已生效

 

三,遠程服務器(192.168.1.47)配置sudo

1,編輯sudo文件
[root@blog ~]# visudo
在sudo的規則最后添加下面這一行
webop   ALL=(ALL)       NOPASSWD:/data/java/tools/startadmin.sh 
 
2,測試sudo規則是否生效?切換到webop賬號后測試
[webop@blog ~]$ ps auxfww | grep jar | grep -v grep
root     11559  0.4  1.2 7728268 193372 pts/3  Sl   14:47   0:07 /usr/local/soft/jdk-15/bin/java -jar /data/java/jar/demo-0.0.1-SNAPSHOT.jar
[webop@blog ~]$ sudo /data/java/tools/startadmin.sh
  進程存在,殺死進程PID11559
  服務啟動開始
 
[webop@blog ~]$ ps auxfww | grep jar | grep -v grep
root     12314 73.4  1.0 7726220 170800 pts/4  Sl   15:15   0:05 /usr/local/soft/jdk-15/bin/java -jar /data/java/jar/demo-0.0.1-SNAPSHOT.jar 
進程id發生了變化,說明規則已生效 

四,在jenkins服務器上進行配置免密登錄

1,生成rsa密鑰
[root@localhost ~]# ssh-keygen -m PEM -t rsa -b 4096
2,復制公鑰到遠程服務器
[root@localhost ~]# ssh-copy-id -p 10108 -i .ssh/id_rsa.pub webop@192.168.1.47 
3,測試免密登錄:
[root@localhost ~]# ssh -p '10108' webop@192.168.1.47
Welcome to Alibaba Cloud Elastic Compute Service !
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Mon Sep 21 15:40:06 2020 from 123.124.125.107
[webop@blog ~]$

無需輸入密碼即可登錄,說明用密鑰實現免密登錄已生效

 

五,jenkins上安裝Publish Over SSH插件

一,安裝插件:
選擇 Publish Over SSH
點 直接安裝 按鈕 

 

六,jenkins上配置ssh服務器

1,manage jenkins->configure system

添加一台服務器:

 

 

 

六,在jenkins的項目中上配置通過ssh發布jar包到遠程服務器:

1, 新建item->項目名稱: profilemaven,選擇:構建一個maven項目

 然后點確定

 

2,對項目做配置:

 在github項目中,輸入項目url

構建后操作中選擇Send build artifacts Over SSH
添加上要傳輸的jar文件

七,測試效果

構建完成后查看控制台輸出:

channel stopped
SSH: Connecting from host [localhost.localdomain]
SSH: Connecting with configuration [47] ...
SSH: EXEC: STDOUT/STDERR from command [sudo /data/java/tools/startadmin.sh] ...
進程存在,殺死進程PID12314
服務啟動開始

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.4.RELEASE)

2020-09-21 16:59:27.806  INFO 12662 --- [           main] com.profile.demo.DemoApplication         : 

然后從服務端可以正常訪問

 

八,查看Jenkins版本

在登錄后首頁的右下角,可以看到當前的版本:2.257

 


免責聲明!

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



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