Jenkins 自動化部署, 踩坑指南

1.JENKINS 是什么

Jenkins是一個自包含的瓤的、開源的自動化服務(wù)器休弃,可以用于自動化與構(gòu)建、測試圈膏、交付或部署軟件相關(guān)的各種任務(wù)塔猾。

Jenkins可以通過本機系統(tǒng)包、Docker安裝稽坤,甚至可以由任何安裝了Java運行時環(huán)境(JRE)的機器獨立運行

2.在centos 系統(tǒng)上安裝jenkins

三種方式

  • 通過 docker 安裝
  • 通過jenkins.war 在tomcat中運行
  • 通過yum 的方式安裝

2.1 通過docker 安裝

  • 創(chuàng)建jenkins 文件,并修改文件權(quán)限
mkdir -p /usr/local/atom.hu/jenkins
chown -R 1000:1000 /usr/loca/atom.hu/jenkins
  • 拉取鏡像
docker pull jenkins
  • 啟動鏡像
docker run -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /usr/local/atom.hu/jenkins/:/var/jenkins_home -d jenkins
  • 稍作等待


    image
  • 進入目錄查看密碼

[root@localhost secrets]# cat initialAdminPassword 
9ca7368042fe45be8b693ab43e7797d1

2.2 通過jenkins.war 的方式安裝

jenkins官網(wǎng)中下載war包

image

可以直接右鍵復制軟件地址, 使用 wget 命令進行下載

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

下載完成后 將項目放入tomcatwebapps 文件夾下

2.3 通過yum的方式安裝jenkins

獲取軟件安裝源

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

安裝jenkins

yum -y install jenkins

安裝完成后 啟動jenkins

systemctl start jenkins

通過對三種方式的實驗 每種方式都進行了探索, 最后選擇通過yum的方式進行安裝, 也是最麻煩的安裝方式, 但是相對可靠, docker 的安裝方式雖然簡便, 但是會遇到比較多軟件環(huán)境問題. 使用jenkins.war的方式, 也相對比較簡便, 但是也是遇到比較多的問題, 最后還是放棄了, 采用了最原始也是最麻煩的方式

3.0 使用jenkins自動化部署的前提條件

為了保證后面的配置能夠順利進行, 需要一些前期的準備工作

修改jenkins的配置文件

# 打開jenkins的配置文件
vim /etc/sysconfig/jenkins
# 修改 $JENKINS_USER 的值為root
$JENKINS_USER="root"
image

修改Jenkins相關(guān)文件夾用戶權(quán)限

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

重啟Jenkins服務(wù)并檢查運行Jenkins的用戶是否已經(jīng)切換為root

# 重啟Jenkins(若是其他方式安裝的jenkins則重啟方式略不同)
systemctl restart jenkins
# 查看Jenkins進程所屬用戶
ps -ef | grep jenkins
# 若顯示為root用戶桥帆,則表示修改完成

到此為止, 前期準備工作就算完按成了, 可以開始進行jenkins自動化部署了

4.0 在jenkins中安裝插件

在jenkins中, 新手推薦直接安裝推薦插件, 后設(shè)置管理員密碼后, 進入主界面, 切記不要忘記密碼, 雖然也有解決辦法, 但是還是記住密碼的好

image

安裝必要的jenkins插件

Git Parameter Plug-In

image

在后續(xù)的自動化部署中, 我們需要通過參數(shù), 設(shè)置不同的分支, 對不同的分支進行打包, 需要這個插件的支持

Maven Integration plugin

image

在部署spring boot 項目的時候, 我們需要創(chuàng)建maven項目, 在安裝了這個插件之后, 在創(chuàng)建項目的時候, 如果沒有這個插件, 在創(chuàng)建項目的時候就沒有 構(gòu)建一個maven項目的選項

Publish Over SSH

image

有的時候我們在A機器上搭建的jenkins 但是卻可能是在B機器上部署項目, 需要Publish Over SSH的支持

這里注意, 在填主機Ip的時候, 如果兩臺機器同屬一個運行商的話, 盡量填寫內(nèi)網(wǎng)IP比較好, 這個很重要

5.0 在服務(wù)器中添加相關(guān)支持環(huán)境

  1. 安裝 openjdk 1.8
    jenkins 的運行需要openjdk依賴

官方說法

You will need to explicitly install a Java runtime environment, because Oracle's Java RPMs are incorrect and fail to register as providing a java dependency. Thus, adding an explicit dependency requirement on Java would force installation of the OpenJDK JVM.

yum install java-1.8.0-openjdk
  1. 安裝 git
yum install git
  1. 安裝 node, 后續(xù)會部署前端項目需要
# 下載安裝包
wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz

# 解壓
tar -xvf node-v10.15.3-linux-x64.tar.xz -C ./

# 將node命令和npm設(shè)置軟連接到 /usr/bin 中
ln -s ./node /usr/bin/node
ln -s ./npm /usr/bin/npm

# 然后在其他的地方都可以使用這兩個命令了
  1. 安裝maven, 并在/etc/profile 中配置

6.0 系統(tǒng)配置

image

在全局配置工具中, 配置 jdk, maven, git, node 的安裝路徑

image

7.0 自動化部署 前端vue項目

部署場景, 在A機器進行webpack打包, 將打包后的文件,發(fā)送到B機器上指定的文件夾, 通過nginx代理實現(xiàn)訪問

  1. 創(chuàng)建一個自由風格的軟件項目
image

2.填寫項目描述

image
  1. 選擇參數(shù)化構(gòu)建過程, 后續(xù)可以選擇不同分支進行打包
image
  1. 選擇不同的版本控制工具 svn 和 git都可以, 這里我們使用git
image

需要添加 自己的用戶和密碼, 不然會出現(xiàn)下面的情況


image
  1. 在構(gòu)建環(huán)境中選擇 Send files or execute commands over SSH after the build runs
    image

這里的配置為, 在本地構(gòu)建完成之后, 我們需要將哪些文件發(fā)送到目標主機上, 發(fā)送到目標主機上, 并執(zhí)行什么命令

cd /home/project/web/test  
tar -zxvf dist.tar.gz
rm -rf dist.tar.gz

/home/project/web/test 為目標主機nginx 配置過的目錄

  1. 在構(gòu)建中選中 Execute Shell
    image

    并配置構(gòu)建時執(zhí)行的命令
cnpm i &&
rm -rf dist && 
npm run build && 
cd dist&& 
tar -zcvf dist.tar.gz *

點擊保存, 這樣就完成了 前端項目的搭建了

8.0 自動化部署 spring boot 項目

  1. 新建任務(wù), 創(chuàng)建maven 項目
image
  1. 填寫項目描述, 配置參數(shù)構(gòu)建
image
  1. 配置源碼管理
image
  1. 配置構(gòu)建環(huán)境 ssh server
image
BUILD_ID=DONTKILLME
source /etc/profile;
cd /home/project/java/test&&

pid=`ps -ef | grep 'jar 名稱' | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
fi

 java -jar lk-truck-mendery-webfront-1.0.0-SNAPSHOT.jar > nohup.log &

注意點

  1. shell 前需要添加 BUILD_ID=DONTKILLME, 不然在jenkins創(chuàng)建了java 進程之后,退出的時候, 會殺死之前創(chuàng)建過的工程
  2. 需要在前面添加 source /etc/profile, 不然可能會出現(xiàn) java 命令找不到的情況

到此 springboot的項目便搭建完成了

9.0 如果設(shè)置了密碼之后, 又忘記了密碼應該怎么辦

  1. 進入到j(luò)enkins的配置文件中
cd /var/lib/jenkins/users
vim config.xml
image

替換途中的值, 替換為

#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS

替換后,重啟jenkins

systemctl restart jenkins

登錄密碼就變?yōu)?1111111 了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市慎皱,隨后出現(xiàn)的幾起案子老虫,更是在濱河造成了極大的恐慌,老刑警劉巖茫多,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祈匙,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機夺欲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門跪帝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人些阅,你說我怎么就攤上這事伞剑。” “怎么了市埋?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵黎泣,是天一觀的道長。 經(jīng)常有香客問我缤谎,道長抒倚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任坷澡,我火速辦了婚禮托呕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘频敛。我一直安慰自己项郊,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布斟赚。 她就那樣靜靜地躺著呆抑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汁展。 梳的紋絲不亂的頭發(fā)上鹊碍,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音食绿,去河邊找鬼侈咕。 笑死,一個胖子當著我的面吹牛器紧,可吹牛的內(nèi)容都是我干的耀销。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼铲汪,長吁一口氣:“原來是場噩夢啊……” “哼熊尉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掌腰,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤狰住,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后齿梁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體催植,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡肮蛹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了创南。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伦忠。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖稿辙,靈堂內(nèi)的尸體忽然破棺而出昆码,到底是詐尸還是另有隱情,我是刑警寧澤邻储,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布赋咽,位于F島的核電站,受9級特大地震影響芥备,放射性物質(zhì)發(fā)生泄漏冬耿。R本人自食惡果不足惜舌菜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一萌壳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧日月,春花似錦袱瓮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至精拟,卻和暖如春燎斩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜂绎。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工栅表, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人师枣。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓怪瓶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親践美。 傳聞我的和親對象是個殘疾皇子洗贰,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容