Ubuntu安裝jenkins完成自動(dòng)化構(gòu)建詳細(xì)步驟
前言
本篇文章介紹Ubuntu系統(tǒng)中安裝jenkins,并使用jenkins完成自動(dòng)化構(gòu)建。
Jenkins自動(dòng)構(gòu)建部署流程通過(guò)git拉取代碼,然后用maven打包成jar包,然后通過(guò)docker完成項(xiàng)目部署。這里的服務(wù)器需要安裝jdk(openjdk也行),maven,git,docker,mysql,其他中間件(redis,mq等)。
1.maven安裝
Ubuntu的包管理工具是apt,不同操作系統(tǒng)的包管理工具不同,這里使用對(duì)應(yīng)的管理工具進(jìn)行安裝,我這里是Ubuntu,使用apt
# 1. 更新包索引
sudo apt update
# 2. 安裝maven
sudo apt install maven
# 3. 驗(yàn)證是否安裝成功
mvn -version
# 4. 環(huán)境變量配置
export MAVEN_HOME=/usr/share/maven
export PATH=${MAVEN_HOME}/bin:${PATH}
# 5. 環(huán)境變量更新
source ~/.bashrc
# 6.驗(yàn)證環(huán)境變量是否配置成功
echo MAVEN_HOME
echo PATH
## 看到輸出東西就證明成功了
2. jenkins安裝
這里我的安裝過(guò)程有點(diǎn)崎嶇,我這就放兩種方式吧。但是前提都是確保你的服務(wù)器安裝了jdk或者openjdk
(1)apt方式安裝
# 1. 更新包索引 sudo apt update # 2. 添加jenkins GPG密鑰 wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - # 進(jìn)行第二步的時(shí)候可能報(bào)錯(cuò) “gpg: no valid OpenPGP data found” ,是wget命令版本過(guò)舊問(wèn)題,這里用下面命令即可 wget --no-check-certificate -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - # 3. 將jenkins存儲(chǔ)庫(kù)添加到系統(tǒng) sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' # 4. 更新包索引 sudo apt update # 5. 安裝jenkins sudo apt install jenkins # 6. 啟動(dòng)jenkins sudo systemctl start jenkins ## 啟動(dòng)jenkins后可以使用下面命令查看 sudo systemctl status jenkins # 查看運(yùn)行狀態(tài) lsof -i:8080 # jenkins默認(rèn)端口是8080,查看端口運(yùn)行狀態(tài)
(2)war包方式
我這里使用前面的apt方式,安裝jenkins一直失敗不成功,解決一個(gè)問(wèn)題又有新的問(wèn)題,這里我又通過(guò)war包方式安裝(這里我也不知道這個(gè)方式需不需要基于前面的步驟,我這直接下載war后,就成功了)
# 1. 下載jenkins的war包 # 1.1 這是下載最新版的jenkins,但是最新版的jenkins需要jdk11以上版本 wget http://updates.jenkins-ci.org/latest/jenkins.war # 1.2 我這里是jdk8版本,所以下載2.346版本的jenkins wget https://get.jenkins.io/war-stable/2.346/jenkins.war # 2. 到war包目錄下,啟動(dòng)war包就行了,使用java -jar nohup java -jar jenkins.war > jenkins.log & ## 這里使用nohup + & 后臺(tái)啟動(dòng)war包,將jenkins日志輸出到j(luò)enkins.log中
(3)jenkins啟動(dòng)
啟動(dòng)jenkins后,可以通過(guò)lsof命令查看端口占用來(lái)看jenkins是否啟動(dòng)成功,啟動(dòng)成功后,日志會(huì)有個(gè)密碼,初次登陸jenkins使用這個(gè)密碼。

登陸成功后,安裝推薦插件

首次安裝,可能會(huì)像我這樣出現(xiàn)很多錯(cuò)誤,這是由于網(wǎng)絡(luò)原因,我們給jenkins配置一個(gè)國(guó)內(nèi)鏡像重啟一下就行了。

找到配置文件的位置,使用文本編輯器修改配置文件的鏡像
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json



進(jìn)入這個(gè)界面,jenkins就安裝完成了。
3.jenkins配置完成自動(dòng)化 構(gòu)建
新建任務(wù),選擇構(gòu)建一個(gè)maven項(xiàng)目

在源碼管理填入自己的git倉(cāng)庫(kù)地址,然后在下面選擇賬號(hào),新安裝的Jenkins沒有賬號(hào),這里可以新增一個(gè)(注意:這里填的git賬號(hào)需要保證可以拉取到這個(gè)git項(xiàng)目)

選擇執(zhí)行shell腳本,輸入需要執(zhí)行的shell
# $WORKSPACE這個(gè)會(huì)自動(dòng)找到Jenkins的工作目錄 ls $WORKSPACE/target # 我這里將Jenkins目錄下打包的項(xiàng)目jar包,復(fù)制到制定目錄并重命名為demo.jar cp $WORKSPACE/target/rabbitmq.jar /data/rabbimq/demo.jar # 切換到j(luò)ar所在目錄,然后執(zhí)行目錄下的start.sh腳本 cd /data/rabbimq sh start.sh

這里看一下jar所在目錄下的文件

Dockerfile為構(gòu)建docker鏡像使用
FROM openjdk:8-jre WORKDIR / ADD /demo.jar /demo.jar EXPOSE 9000 ENTRYPOINT ["java","-Xms256m","-Xmx512m","-jar","demo.jar"]
start.sh作用:
創(chuàng)建需要的相關(guān)路徑,停止容器,刪除容器,刪除鏡像,重新構(gòu)建鏡像,啟動(dòng)項(xiàng)目,具體如下:
# 定義變量(后面通過(guò)$變量名使用)
dir=/data/rabbimq
name=demo
logs=/data/rabbimq/logs
port=9000
temp=/data/rabbimq/temp
if [ ! -d "$dir" ];then
mkdir -p $dir
else
echo "文件夾已經(jīng)存在"
fi
if [ ! -d "$logs" ];then
mkdir -p $logs
fi
date=`date +%Y%m%d%H%M%S`
# 停止容器(按照容器id停止)
docker stop `docker ps -a|grep $name|awk '{print $1}'`
# 刪除容器(按照容器id刪除)
docker rm `docker ps -a|grep $name|awk '{print $1}'`
# 刪除鏡像
docker rmi `docker images|grep $name|awk '{print $1}'`:`docker images|grep $name|awk '{print $2}'`
# 構(gòu)建鏡像(名稱為名字加當(dāng)前時(shí)間,可以防止鏡像名稱重復(fù))
docker build -t $name:$date .
# 啟動(dòng)鏡像,掛載需要的目錄
docker run -itd -p $port:$port -v $logs:/logs -v $temp:/temp --name $name $name:$date bash
這些做完后,點(diǎn)擊立即構(gòu)建就可以完成Jenkins自動(dòng)構(gòu)建部署了。
4.測(cè)試
編寫一個(gè)測(cè)試接口
@Api(tags = "jenkins測(cè)試")
@RestController
@RequestMapping("/test/jenkins")
public class JenkinsTest {
@GetMapping("/print")
@ApiOperation("輸出")
public Result test(@RequestParam String text) {
return Result.success("Jenkins接收到參數(shù):" + text);
}
}
提交到git

點(diǎn)擊立即構(gòu)建,等待完成,查看構(gòu)建日志,可以看到是拉取到的我剛剛提交的最新代碼。

完成后,訪問(wèn)我的swagger地址,可以看到剛剛新寫的接口已經(jīng)部署上去了,為最新的代碼,查看服務(wù)器docker容器,也正在運(yùn)行,到此就說(shuō)明成功。


總結(jié)
到此這篇關(guān)于Ubuntu安裝jenkins完成自動(dòng)化構(gòu)建的文章就介紹到這了,更多相關(guān)Ubuntu安裝jenkins自動(dòng)化構(gòu)建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 反射機(jī)制知識(shí)詳細(xì)介紹及總結(jié)
反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為java語(yǔ)言的反射機(jī)制2017-01-01
SpringBoot2 整合MinIO中間件實(shí)現(xiàn)文件便捷管理功能
這篇文章主要介紹了SpringBoot2 整合MinIO中間件,實(shí)現(xiàn)文件便捷管理,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
淺談java中為什么重寫equals后需要重寫hashCode
今天帶各位學(xué)習(xí)一下java中為什么重寫equals后需要重寫hashCode,文中有非常詳細(xì)的圖文介紹及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05

