一、前言
Jenkins作為CI、CD的先驅者,雖然現(xiàn)在的風頭沒有Gitlab強了,但是還是老當益壯,很多中小公司還是使用比較廣泛的。最近小編經(jīng)歷了一次Jenkins發(fā)包,感覺還不錯,所以自己學習了一下。網(wǎng)上比較多的教程都是在Linux上搭建Jenkins,小編經(jīng)過一個星期的探索終于完成了在docker中進行搭建。
最終版就是:通過git上傳代碼—>使用Jenkins構建自動打包—>把jar包打成docker鏡像,運行在docker中,Windows下進行訪問
主要記錄一下一些踩過的坑和注意點,讓后來人能夠跟著小編一次完成?。?/p>
二、安裝Docker
Linux中安裝Docker,在Docker中安裝MySQL和Redis并在Windows下連接訪問(圖文教程)_掉發(fā)的小王的博客-CSDN博客
三、linux安裝jdk和maven
1、下載JDK8Linux版本
官網(wǎng)下載太慢了,小編在這里為大家下載好了:
鏈接:https://pan.baidu.com/s/1nlfc2gwL0Ho_wWbVuJiG4g提取碼:ov24
2、下載Maven
maven3.8.5下載鏈接:https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
3、使用xftp上傳到linux上
4、解壓
解壓maven
tar -zxvf apache-maven-3.8.5-bin.tar.gz
重命名maven
mv apache-maven-3.8.5-bin.tar.gz apache-maven-3.8.5
解壓jdk
tar -zxvf jdk-8u333-linux-x64.tar.gz
重命名jdk
mv jdk-8u333-linux-x64.tar.gz jdk1.8
5、配置環(huán)境變量
進入環(huán)境變量文件
vim /etc/profile
添加jdk和manven配置輸入i,進入輸入模式
注意自己的安裝目錄,放在文件最上面就行
JAVA_HOME=/usr/local/java/jdk1.8CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASSPATH PATHexport MAVEN_HOME=/usr/local/java/apache-maven-3.8.5export PATH=${MAVEN_HOME}/bin:${PATH}
按下esc ,輸入:wq保存退出。
查看是否安裝成功
java -versionmvn -v
6、配置Maven加速鏡像
cd apache-maven-3.8.5/conf/vim settings.xml
輸入i,進入輸入模式
alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central
按下esc ,輸入:wq保存退出。
四、Docker安裝Jenkins
1.準備掛載目錄
cd home/mkdir jenkins_home
一定要賦予修改權限,不然掛載會失敗,我們這里給最高權限。
chmod -R 777 jenkins_home
2. 執(zhí)行docker命令
docker run -di –name=myjenkins -p 8080:8080 -v /home/jenkins_home:/var/jenkins_home -v /usr/local/java/jdk:/usr/local/jdk1.8 -v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
-v /home/jenkins_home:/var/jenkins_home:是對容器內(nèi)存儲Jenkins的一些配置信息的文件夾-v /usr/local/java/jdk:/usr/local/jdk1.8:是把linux下的jdk和容器內(nèi)的關聯(lián)(配置Jenkins時使用)-v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5:是把linux下的maven和容器內(nèi)的關聯(lián)(配置Jenkins時使用)
-v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock:是可以在Jenkins容器里使用我們Linux下的docker。
五、配置Jenkins
1. 進入Jenkins
輸入:http://192.168.84.133:8080/(ip+端口號)
2. 獲取密碼
docker logs 容器id
3. 安裝插件
4. 創(chuàng)建用戶
5. 保存配置地址
6. 配置插件鏡像
輸入:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
點擊提交
7. 安裝ssh插件
安裝完成重啟一下Jenkins
8. 添加ssh登錄賬號憑據(jù)
點擊系統(tǒng)管理,找到下圖點擊
9. 配置全局ssh
點擊系統(tǒng)管理,找到系統(tǒng)配置
點擊新增:
點擊保存:
10. 配置jdk和maven
點擊系統(tǒng)管理,找到全局工具配置:
點擊保存
六、準備Springboot項目到git
1. 核心代碼
我們看到只是一個請求打印,我們最后訪問有docker成功,代表我們構建發(fā)包成功!
2. pom內(nèi)容
org.springframework.boot spring-boot-maven-plugin repackage true
3. yml文件
這里只指定了端口號
server.port=8081
4. Dockerfile
和pom文件同級
FROM java:8COPY *.jar /app.jarCMD [“–server.port=8080”]EXPOSE 8080ENTRYPOINT [“java”, “-jar”, “/app.jar”]
5. 上傳git倉庫
七、使用Jenkins部署項目
1. 新建任務
2. 添加git憑據(jù)
選擇剛剛添加的憑據(jù)報錯信息消失
3. 添加maven構建
4. 增加構建執(zhí)行shell
shell腳本:
#!/bin/bash# 服務名稱SERVER_NAME=jenkins# 源jar名稱,mvn打包之后,target目錄下的jar包名稱JAR_NAME=demo-0.0.1-SNAPSHOT# jenkins下的目錄JENKINS_HOME=/var/jenkins_home/workspace/jenkins# 等待三秒echo sleep 3ssleep 1echo sleep 2ssleep 1echo sleep 1ssleep 1echo “結束進程完成”cd $JENKINS_HOME/targetcp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target# 修改文件權限chmod 755 $JAR_NAME.jarecho “看看docker能不能用”docker -vecho “停止容器”# 停止容器docker stop springbootecho “刪除容器”# 刪除容器docker rm springbootecho “刪除鏡像”# 刪除鏡像docker rmi springbootecho “打包鏡像”# 打包鏡像docker build -t springboot .echo “運行鏡像”# 運行鏡像docker run -d -p 8081:8081 –name springboot springboot
5. 立即構建
6. 控制臺輸出報錯
我們看到打包成功了,就是在使用docker命令的時候出現(xiàn)權限問題,這是我們要給docker.sock權限就可以解決了!!
報錯信息:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/springboot/stop”: dial unix /var/run/docker.sock: connect: permission denied
解決方案:
chmod a+rw /var/run/docker.sock
7.在次構建
我們發(fā)現(xiàn)沒有報錯,也看到了容器的id
8. 查詢docker鏡像是否啟動
docker images docker ps
9. Win10進行訪問測試
輸入地址:http://192.168.84.133:8081/test/docker
七、總結
小編斷斷續(xù)續(xù)研究了一星期,太不容易了,中間也是遇到很多坑,只要是跟著小編走下去的基本都可以跑出來的!看到這里還不給小編一鍵三連起來?。≈x謝大家了哦~
有緣人才可以看得到的哦?。?!
小王博客站