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包
可以直接右鍵復制軟件地址, 使用 wget 命令進行下載
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
下載完成后 將項目放入tomcat
中webapps
文件夾下
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"
修改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è)置管理員密碼后, 進入主界面, 切記不要忘記密碼, 雖然也有解決辦法, 但是還是記住密碼的好
安裝必要的jenkins插件
Git Parameter Plug-In
在后續(xù)的自動化部署中, 我們需要通過參數(shù), 設(shè)置不同的分支, 對不同的分支進行打包, 需要這個插件的支持
Maven Integration plugin
在部署spring boot 項目的時候, 我們需要創(chuàng)建maven項目, 在安裝了這個插件之后, 在創(chuàng)建項目的時候, 如果沒有這個插件, 在創(chuàng)建項目的時候就沒有 構(gòu)建一個maven項目
的選項
Publish Over SSH
有的時候我們在A機器上搭建的jenkins 但是卻可能是在B機器上部署項目, 需要
Publish Over SSH
的支持
這里注意, 在填主機Ip的時候, 如果兩臺機器同屬一個運行商的話, 盡量填寫內(nèi)網(wǎng)IP比較好, 這個很重要
5.0 在服務(wù)器中添加相關(guān)支持環(huán)境
- 安裝 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
- 安裝 git
yum install git
- 安裝 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
# 然后在其他的地方都可以使用這兩個命令了
- 安裝
maven
, 并在/etc/profile
中配置
6.0 系統(tǒng)配置
在全局配置工具中, 配置 jdk
, maven
, git
, node
的安裝路徑
7.0 自動化部署 前端vue項目
部署場景, 在A機器進行webpack打包, 將打包后的文件,發(fā)送到B機器上指定的文件夾, 通過nginx代理實現(xiàn)訪問
- 創(chuàng)建一個自由風格的軟件項目
2.填寫項目描述
- 選擇參數(shù)化構(gòu)建過程, 后續(xù)可以選擇不同分支進行打包
- 選擇不同的版本控制工具 svn 和 git都可以, 這里我們使用git
需要添加 自己的用戶和密碼, 不然會出現(xiàn)下面的情況
- 在構(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 配置過的目錄
- 在構(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 項目
- 新建任務(wù), 創(chuàng)建maven 項目
- 填寫項目描述, 配置參數(shù)構(gòu)建
- 配置源碼管理
- 配置構(gòu)建環(huán)境 ssh server
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 &
注意點
-
shell
前需要添加BUILD_ID=DONTKILLME
, 不然在jenkins創(chuàng)建了java 進程之后,退出的時候, 會殺死之前創(chuàng)建過的工程 - 需要在前面添加
source /etc/profile
, 不然可能會出現(xiàn)java
命令找不到的情況
到此 springboot的項目便搭建完成了
9.0 如果設(shè)置了密碼之后, 又忘記了密碼應該怎么辦
- 進入到j(luò)enkins的配置文件中
cd /var/lib/jenkins/users
vim config.xml
替換途中的值, 替換為
#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS
替換后,重啟jenkins
systemctl restart jenkins
登錄密碼就變?yōu)?1111111 了