Ubuntu安裝jenkins完成自動(dòng)化構(gòu)建詳細(xì)步驟
前言
本篇文章介紹Ubuntu系統(tǒng)中安裝jenkins,并使用jenkins完成自動(dòng)化構(gòu)建。
Jenkins自動(dòng)構(gòu)建部署流程通過git拉取代碼,然后用maven打包成jar包,然后通過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安裝
這里我的安裝過程有點(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命令版本過舊問題,這里用下面命令即可 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è)問題又有新的問題,這里我又通過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后,可以通過lsof命令查看端口占用來看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)目,具體如下:
# 定義變量(后面通過$變量名使用) 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)建日志,可以看到是拉取到的我剛剛提交的最新代碼。
完成后,訪問我的swagger地址,可以看到剛剛新寫的接口已經(jīng)部署上去了,為最新的代碼,查看服務(wù)器docker容器,也正在運(yùn)行,到此就說明成功。
總結(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實(shí)現(xiàn)的不同圖片居中剪裁生成同一尺寸縮略圖功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)的不同圖片居中剪裁生成同一尺寸縮略圖功能,涉及java針對(duì)圖片的讀取、屬性修改等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09Java詳細(xì)講解IO流的Writer與Reader操作
Writer與Reader類不能直接調(diào)用,需要使用多帶的方法調(diào)用它們的子類,在他們的前邊加上一個(gè)File即可如(FileWriter或FileReader)的多態(tài)方法進(jìn)行其調(diào)用,并且他們也是抽象類調(diào)用需要連接接口Exception,它們的優(yōu)點(diǎn)在于可以直接寫入或讀出內(nèi)容,不需要使用byte轉(zhuǎn)八進(jìn)制2022-05-05java 字符串的拼接的實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了java 字符串的拼接的實(shí)現(xiàn)實(shí)例的相關(guān)資料,希望通過本文大家能掌握字符拼接的實(shí)現(xiàn),需要的朋友可以參考下2017-09-09Spring靜態(tài)代理和動(dòng)態(tài)代理代碼詳解
這篇文章主要介紹了Spring靜態(tài)代理和動(dòng)態(tài)代理代碼詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11MyBatis實(shí)現(xiàn)批量插入數(shù)據(jù),多重forEach循環(huán)
這篇文章主要介紹了MyBatis實(shí)現(xiàn)批量插入數(shù)據(jù),多重forEach循環(huán)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Java讀寫文件,在文件中搜索內(nèi)容,并輸出含有該內(nèi)容的所有行方式
這篇文章主要介紹了Java讀寫文件,在文件中搜索內(nèi)容,并輸出含有該內(nèi)容的所有行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08