Docker結合jenkins完成快捷打包部署


關注我,更多精彩文章第一時間推送給你

Java之康庄大道

安裝jenkins

我這里選擇的是docker方式安裝,根據官方建議使用的額鏡像是jenkinsci/blueocean

建議使用的Docker映像是jenkinsci/blueocean image(來自 the Docker Hub repository)。 該鏡像包含當前的長期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆綁了所有Blue Ocean插件和功能。這意味着你不需要單獨安裝Blue Ocean插件。

拉取鏡像

docker pull jenkinsci/blueocean

運行鏡像

docker run -d --name jenkins \
-p 8010:8080 -p 8011:8081 -p 50000:50000 \
-v /home/docker/jenkins/data:/var/jenkins_home \
--privileged=true --restart=always \
jenkinsci/blueocean:latest

此時docker ps查看容器運行狀況發現一直在重啟

jenkinsci/blueocean   "/sbin/tini -- /usr/…"   20 minutes ago      Restarting (1) 17 seconds ago

查看日志docker logs jenkins 得到

touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

需要修改下目錄權限, 因為當映射本地數據卷時,/home/docker/jenkins/data目錄的擁有者為root用戶,而容器中jenkins user的uid為1000 執行如下命令即可

chown -R 1000:1000 /home/docker/jenkins/data
# 重啟jenkins容器
docker restart jenkins

啟動成功之后的配置

  • 訪問192.168.16.128:8010,即你的ip + 你docker啟動時候映射的端口

圖1

  • docker安裝的密碼去哪里找呢?

  • 答案是去日志里是最快速的,當然也可以去容器內部docker exec -it 容器id /bin/bash 按照提示地址獲取

# 查看日志
docker logs jenkins
# 得到的日志中的密碼
*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

8c4bdd47724b4c1b82e726c7bfb62fae

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************
  • 安裝推薦的插件

圖2

  • 如果需要重啟則執行
docker restart jenkins

圖3

配置java和maven

  • 如下圖所示:進入到jenkins容器內部查看,已經安裝了jdk1.8,所以我們直接找到jdk1.8的地址配置上就行

圖5

# 進入jenkins容器內部
docker exec -it jenkins /bin/bash
# 查看jdk版本
java -version
# 查看jdk地址
echo $JAVA_HOME

圖6

  • jdk配置jenkins內部的,maven自動安裝,3.6.3即可,之后保存。

圖7

  • 安裝這個maven插件

圖8

  • 新建一個maven項目

圖9

  • 配置git地址

圖10

  • 添加構建命令

圖11

  • 這塊建議跳過測試階段,如下配置

image-20201001132149508

  • 如下腳本:前四個怎么填寫,先構建一次,查看控制台輸出,時間可能比較久,可以配置一下maven的設置,在全局設置中如下配置:

image-20201001063900205

  • 注意這里配置的settings.xml就是平時我們配置了阿里鏡像源的配置,這里我配置到了容器內的/var/jenkins_home目錄中,命令如下
# 進入容器
docker exec -it jenkins /bin/bash
# 進入目錄
cd /var/jenkins_home
# 新建文件
vi settings.xml
# 把配置好阿里鏡像源的settings.xml中的內容復制進去
# :wq保存退出

image-20201001121827492

  • 這塊配置如下腳本

image-20201001122308202

#!/bin/bash
# 服務名稱
SERVER_NAME=jenkins_test

# 源jar名稱,mvn打包之后,target目錄下的jar包名稱
JAR_NAME=jenkins_test-0.0.1-SNAPSHOT

# 源jar路徑,打包之后的生成的jar的路徑
JAR_PATH=/var/jenkins_home/workspace/jenkins_test/target

# 打包完成之后,把jar包移動到運行jar包的目錄
JAR_WORK_PATH=/var/jenkins_home/workspace/jenkins_test/target


echo "查詢進程id -->$SERVER_NAME"

# 獲取查詢結果以空格為界的第一個字段,即PID端口號
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $1}'`

echo "得到進程id:$PID"

echo "結束進程ing..."

for id in $PID
do
	kill -9 $id
    echo "killed $id"
done

# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1
        
echo "結束進程完成"

# 復制jar包到執行目錄
echo "復制jar包到執行目錄: cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"

cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH

echo "復制jar包完成"

cd $JAR_WORK_PATH

# 修改文件權限
chmod 755 $JAR_NAME.jar

# 后台運行
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &
  • 之后立即構建,即可成功

image-20201001100206259


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM