Jenkins實現(xiàn)spring boot應用多環(huán)境部署

實現(xiàn)效果

根據(jù)用戶選擇的發(fā)布環(huán)境參數(shù)裕菠,把spring boot應用發(fā)布到對應的遠程服務器上山涡。


發(fā)布任務效果

使用Docker安裝Jenkins

CentOS7安裝Docker
  1. 安裝Docker依賴的包
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  1. 設置使用Docker穩(wěn)定版安裝源
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安裝Docker最新社區(qū)版
sudo yum install docker-ce
  1. 設置Docker開機自啟動
sudo systemctl enable docker
  1. 啟動Docker服務
sudo systemctl start docker
  1. 驗證Docker是否安裝成功
sudo docker run hello-world
Docker安裝成功
下載Jenkins鏡像并啟動Jenkins容器
docker run \
  --name jenkins \
  --restart=always \
  -u root \
  -d \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /usr/local/jenkins:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

--name jenkins 容器名為jenkins
 --restart=always Docker服務重啟后總是重啟該容器
 -u root 容器內使用root用戶
-d 容器在后臺運行
 -p 8080:8080 映射容器內8080端口到宿主機的8080端口
 -v /usr/local/jenkins:/var/jenkins_home 映射容器內的/var/jenkins_home目錄到宿主機的 /usr/local/jenkins目錄
jenkinsci/blueocean 使用的Jenkins鏡像名稱

也可使用war包安裝Jenkins

  1. 下載最新Jenkins WAR包
  2. 運行命令
java -jar jenkins.war

配置Jenkins

1.在瀏覽器輸入http://服務器IP:8080


解鎖 Jenkins

2.在服務器獲取管理員初始密碼

vi /usr/local/jenkins/secrets/initialAdminPassword

也可使用
docker logs jenkins
管理員初始密碼

3.自定義Jenkins幻碱,選擇安裝推薦的插件


自定義Jenkins

4.創(chuàng)建第一個管理員賬號


創(chuàng)建第一個管理員賬號

5.安裝Maven 3.6
在 系統(tǒng)管理->全局工具配置里狂秦,點擊新增Maven,輸入Maven3坯临,然后點擊保存按鈕
安裝Maven

安裝Maven

在 系統(tǒng)設置->插件管理->可選插件 搜索 Maven Integration焊唬。選中點擊安裝


安裝Maven Integration插件

6.安裝Publish Over SSH遠程部署插件
在 系統(tǒng)設置->插件管理->可選插件 搜索 Publish Over SSH。選中點擊安裝
安裝Publish Over SSH插件

7.配置SSH遠程服務器
在 系統(tǒng)設置->系統(tǒng)設置里看靠,配置Publish Over SSH插件
配置SSH遠程服務器

點擊新增,增加開發(fā)環(huán)境服務器
開發(fā)環(huán)境服務器

點擊高級液肌,勾選 Use password authentication, or use a different key挟炬,輸入遠程服務器密碼
遠程服務器密碼

點擊 Test Configuration,測試配置是否成功


測試遠程連接成功

添加測試環(huán)境服務器
測試環(huán)境服務器

創(chuàng)建Jenkins發(fā)布任務

1.新建maven項目


新建maven項目

2.勾選 參數(shù)化構建過程,添加 選項參數(shù)


添加發(fā)布參數(shù)

3.添加spring boot應用源代碼gitlab倉庫
源碼管理選擇 Git
源碼管理

點擊Add按鈕谤祖,添加gitlab同步代碼的賬號


添加gitlab賬號

添加gitlab賬號

3.勾選 Delete workspace before build starts婿滓,每次構建任務前刪除上次任務構建的應用源代碼,全量從gitlab重新拉取
構建環(huán)境

4.在gitlab服務器上創(chuàng)建一個新項目粥喜,用于存儲不同發(fā)布環(huán)境的配置文件和應用啟動/停止腳本凸主。我創(chuàng)建的項目名稱為ICCProjectCD ,目錄結構如下:
├── dev  // 開發(fā)環(huán)境
│   ├── config
│   │   ├── application.properties
│   │   ├── logback.xml
│   │   └── mysql.properties // mysql數(shù)據(jù)庫賬號
│   └── script
│       ├── start.sh  // java -jar 啟動應用
│       └── stop.sh  // 殺掉java進程额湘,終止應用
├── prod  // 生產環(huán)境
│   ├── config
│   │   ├── application.properties
│   │   ├── logback.xml
│   │   └── mysql.properties
│   └── script
│       ├── start.sh
│       └── stop.sh
└── test  // 測試環(huán)境
    ├── config
    │   ├── application.properties
    │   ├── logback.xml
    │   └── mysql.properties
    └── script
        ├── start.sh
        └── stop.sh

5.添加構建前操作


添加構建前操作

點擊 Add pre-build step->執(zhí)行 shell

// 從gitlab拉取不同發(fā)布環(huán)境的配置文件
git clone http://gitlab用戶名:gitlab密碼@192.168.0.91/deploy/ICCProjectCD.git
// $ENV是上面步驟定義的發(fā)布環(huán)境變量
// 根據(jù)用戶選擇的發(fā)布環(huán)境卿吐,把應用源代碼中的配置文件替換為對應發(fā)布環(huán)境的配置文件
cp -r ICCProjectCD/$ENV/config/* ./
替換配置文件

6.設置maven命令參數(shù)

clean package -Dmaven.test.skip=true
maven命令參數(shù)

7.添加構建后操作


添加構建后操作

點擊 Add post-build step->執(zhí)行 shell

// 拷貝maven打包的jar包到對應發(fā)布環(huán)境的腳本目錄
cp target/app-1.0.0.jar ICCProjectCD/$ENV/script/
拷貝jar包

繼續(xù)點擊 Add post-build step->Send files or execute commands over SSH,添加開發(fā)環(huán)境發(fā)布服務器


添加開發(fā)環(huán)境發(fā)布服務器

點擊高級锋华,勾選 Label嗡官,輸入 dev,dev對應上面定義的$ENV變量中的dev值


添加開發(fā)環(huán)境發(fā)布服務器

Source files:需要發(fā)送到遠程服務器的文件毯焕,可以使用通配符和Jenkins變量
Remove prefix:刪除目錄前綴衍腥,填ICCProjectCD/dev/script意思是不創(chuàng)建ICCProjectCD/dev/script這些目錄
Remote directory:文件發(fā)送到遠程服務器的哪個目錄下。因為我設置的遠程連接賬號是root纳猫,默認是遠程服務器的root目錄婆咸。填jenkins,會在root目錄下創(chuàng)建jenkins目錄芜辕。

Exec command:文件發(fā)送到遠程服務器后擅耽,在遠程服務器上執(zhí)行的命令

// 進入應用發(fā)布目錄
cd /root/jenkins
// 設置腳本可執(zhí)行權限
chmod +x *.sh
// 停止應用
./stop.sh
// 啟動應用
./start.sh
設置遠程拷貝

繼續(xù)點擊 Add Server,添加測試環(huán)境發(fā)布服務器物遇。勾選 Label乖仇,輸入 test,test對應上面定義的$ENV變量中的test值


添加測試環(huán)境發(fā)布服務器

點擊高級询兴,配置參數(shù)化發(fā)布


配置參數(shù)化發(fā)布

勾選 Parameterized publishing乃沙,輸入上面定義的發(fā)布環(huán)境變量ENV。每次構建任務的時候诗舰,會根據(jù)ENV變量的值匹配各個遠程服務器的Label警儒,從而實現(xiàn)多環(huán)境的部署。
配置參數(shù)化發(fā)布

點擊保存按鈕眶根,發(fā)布任務創(chuàng)建完成蜀铲。

最后,Jenkins所有構建任務存儲在jenkins_home下的workspace目錄属百,可以到這個目錄下調試構建腳本记劝。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市族扰,隨后出現(xiàn)的幾起案子厌丑,更是在濱河造成了極大的恐慌定欧,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怒竿,死亡現(xiàn)場離奇詭異砍鸠,居然都是意外死亡,警方通過查閱死者的電腦和手機耕驰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門爷辱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人朦肘,你說我怎么就攤上這事饭弓。” “怎么了厚骗?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵示启,是天一觀的道長。 經常有香客問我领舰,道長夫嗓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任冲秽,我火速辦了婚禮舍咖,結果婚禮上,老公的妹妹穿的比我還像新娘锉桑。我一直安慰自己排霉,他們只是感情好,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布民轴。 她就那樣靜靜地躺著攻柠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪后裸。 梳的紋絲不亂的頭發(fā)上瑰钮,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天,我揣著相機與錄音微驶,去河邊找鬼浪谴。 笑死,一個胖子當著我的面吹牛因苹,可吹牛的內容都是我干的苟耻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼扶檐,長吁一口氣:“原來是場噩夢啊……” “哼凶杖!你這毒婦竟也來了?” 一聲冷哼從身側響起蘸秘,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤官卡,失蹤者是張志新(化名)和其女友劉穎蝗茁,沒想到半個月后醋虏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寻咒,經...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年颈嚼,在試婚紗的時候發(fā)現(xiàn)自己被綠了毛秘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡阻课,死狀恐怖叫挟,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情限煞,我是刑警寧澤抹恳,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站署驻,受9級特大地震影響奋献,放射性物質發(fā)生泄漏。R本人自食惡果不足惜旺上,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一瓶蚂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宣吱,春花似錦窃这、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疤坝,卻和暖如春兆解,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卒煞。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工痪宰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人畔裕。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓衣撬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親扮饶。 傳聞我的和親對象是個殘疾皇子具练,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內容