jenkins是devops神器,本篇文章介紹如何安裝和使用jenkins部署spring boot項目
jenkins搭建 部署分為三個步驟;
- 第一步,jenkins安裝
- 第二步,插件安裝和配置
- 第三步,push ssh
- 第四步,部署項目
第一步 ,jenkins安裝
準備環境:
- jdk:1.8
- jenkins:2.83 centos:7.3
- maven 3.5‘
jdk默認已經安裝完成
配置maven
版本要求maven3.5.0
軟件下載
1
|
wget http: //mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz |
安裝
1
2
3
4
|
## 解壓 tar vxf apache-maven- 3.5 . 0 -bin.tar.gz ## 移動 mv apache-maven- 3.5 . 0 /usr/local/maven3 |
修改環境變量, 在/etc/profile中添加以下幾行
1
2
3
|
maven_home=/usr/local/maven3 export maven_home export path=${path}:${maven_home}/bin |
記得執行source /etc/profile
使環境變量生效。
驗證 最后運行mvn -v
驗證maven是否安裝成功
配置防護墻
關閉防護墻
1
2
3
4
5
6
7
8
|
#centos7 systemctl stop firewalld.service ============================== #以下為:centos 6.5 關閉防火墻步驟 #關閉命令: service iptables stop #永久關閉防火墻: chkconfig iptables off |
兩個命令同時運行,運行完成后查看防火墻關閉狀態
1
|
service iptables status |
jenkins 安裝
下載
1
2
|
cd /opt wget http: //mirrors.jenkins.io/war/2.83/jenkins.war |
啟動服務
1
|
java -jar jenkins.war & |
jenkins 就啟動成功了!它的war包自帶jetty服務器
第一次啟動jenkins時,出于安全考慮,jenkins會自動生成一個隨機的按照口令。注意控制臺輸出的口令,復制下來,然后在瀏覽器輸入密碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
info: ************************************************************* ************************************************************* ************************************************************* jenkins initial setup is required. an admin user has been created and a password generated. please use the following password to proceed to installation: 0cca37389e6540c08ce6e4c96f46da0f this may also be found at: /root/.jenkins/secrets/initialadminpassword ************************************************************* ************************************************************* ************************************************************* |
訪問 瀏覽器訪問:http://localhost:8080/
輸入:0cca37389e6540c08ce6e4c96f46da0f
進入用戶自定義插件界面,建議選擇安裝官方推薦插件,因為安裝后自己也得安裝:
接下來是進入插件安裝進度界面:
插件一次可能不會完全安裝成功,可以點擊retry再次安裝。直到全部安裝成功
等待一段時間之后,插件安裝完成,配置用戶名密碼:
輸入:admin/admin
系統管理-》全局工具配置 jdk路徑,
第二步,插件安裝和配置
有很多插件都是選擇的默認的安裝的,所以現在需要我們安裝的插件不多,git plugin和maven integration plugin,publish over ssh、cvs插件管理ssh。
插件安裝:系統管理 > 插件管理 > 可選插件,勾選需要安裝的插件,點擊直接安裝或者下載重啟后安裝
配置全局變量
系統管理 > 全局工具配置
jdk
配置本地jdk的路徑,去掉勾選自動安裝
maven
配置本地maven的路徑,去掉勾選自動安裝
其它內容可以根據自己的情況選擇安裝。
配置 ssh免登陸
ssh的配置可使用密鑰,也可以使用密碼,這里我們使用密鑰來配置,在配置之前先配置好jenkins服務器和應用服務器的密鑰認證 jenkins服務器上生成密鑰對,使用ssh-keygen -t rsa
命令
輸入下面命令 一直回車,一個矩形圖形出現就說明成功,在~/.ssh/下會有私鑰id_rsa和公鑰id_rsa.pub
1
|
ssh-keygen -t rsa |
將jenkins服務器的公鑰id_rsa.pub中的內容復制到應用服務器 的~/.ssh/下的 authorized_keys文件
1
2
|
ssh-copy-id -i id_rsa.pub 192.168 . 0 .xx chmod 644 authorized_keys |
在應用服務器上重啟ssh服務,service sshd restart現在jenkins服務器可免密碼直接登陸應用服務器
之后在用ssh b嘗試能否免密登錄b服務器,如果還是提示需要輸入密碼,則有以下原因
a. 非root賬戶可能不支持ssh公鑰認證(看服務器是否有限制)
b. 傳過來的公鑰文件權限不夠,可以給這個文件授權下 chmod 644 authorized_keys
c. 使用root賬戶執行ssh-copy-id -i ~/.ssh/id_rsa.pub 這個指令的時候如果需要輸入密碼則要配置sshd_config
1
2
3
|
vi /etc/ssh/sshd_config #內容 permitrootlogin no |
修改完后要重啟sshd服務
1
|
service sshd restart |
最后,如果可以ssh ip 免密登錄成功說明ssh公鑰認證成功。
第三步,push ssh
系統管理 > 系統設置
選擇 publish over ssh
passphrase 不用設置 path to key 寫上生成的ssh路徑:/root/.ssh/id_rsa
下面的ssh servers是重點
name 隨意起名代表這個服務,待會要根據它來選則 hostname 配置應用服務器的地址 username 配置linux登陸用戶名 remote directory 不填
點擊下方增加可以添加多個應用服務器的地址
第四步,部署項目
首頁點擊新建:輸入項目名稱
下方選擇構建一個maven項目,點擊確定。
勾選丟棄舊的構建,選擇是否備份被替換的舊包。我這里選擇備份最近的10個
源碼管理,選擇svn,配置svn相關信息,點擊add可以輸入svn的賬戶和密碼
svn地址:http://192.168.0.xx/svn/xxx@head,@head意思取最新版本
構建環境中勾選“add timestamps to the console output”,代碼構建的過程中會將日志打印出來
在build中輸入打包前的mvn命令,如:
1
|
clean install -dmaven.test.skip= true -ptest |
意思是:排除測試的包內容,使用后綴為test的配置文件。
post steps 選擇 run only if build succeeds
點擊add post-build step,選擇 send files or execute commands over ssh
name選擇上面配置的push ssh
source files配置:target/xxx-0.0.1-snapshot.jar 項目jar包名 remove prefix:target/ remote directory:jenkins-in/ 代碼應用服務器的目錄地址, exec command:jenkins-in/xxx.sh 應用服務器對應的腳本。
需要在應用服務器創建文件夾:jenkins-in,在文件夾中復制一下腳本內容:xxx.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
date=$(date +%y%m%d) export java_home path classpath java_home=/usr/java/jdk1. 8 .0_131 path=$java_home/bin:$java_home/jre/bin:$path classpath=.:$java_home/lib:$java_home/jre/lib:$classpath dir=/root/xxx jarfile=xxx- 0.0 . 1 -snapshot.jar if [ ! -d $dir/backup ];then mkdir -p $dir/backup fi cd $dir ps -ef | grep $jarfile | grep -v grep | awk '{print $2}' | xargs kill - 9 mv $jarfile backup/$jarfile$date mv -f /root/jenkins-in/$jarfile . java -jar $jarfile > out.log & if [ $? = 0 ];then sleep 30 tail -n 50 out.log fi cd backup/ ls -lt|awk 'nr>5{print $nf}' |xargs rm -rf |
這段腳本的意思,就是kill舊項目,刪除舊項目,啟動新項目,備份老項目。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.ityouknow.com/springboot/2017/11/11/springboot-jenkins.html