本文詳細(xì)講述 :
1.在Linux中如何用docker搭建Jenkins
2.自動(dòng)化部署maven多模塊spring cloud項(xiàng)目
什么是Jenkins
- Jenkins是一個(gè)開(kāi)源軟件項(xiàng)目,是基于Java開(kāi)發(fā)的一種自動(dòng)化測(cè)試和持續(xù)集成、發(fā)布工具。
Jenkins優(yōu)點(diǎn)
Jenkins的主要目標(biāo)是監(jiān)控軟件開(kāi)發(fā)流程,快速顯示問(wèn)題。所以能保證開(kāi)發(fā)人員以及相關(guān)人員省時(shí)省力提高開(kāi)發(fā)效率。
在單實(shí)例架構(gòu)時(shí)項(xiàng)目 運(yùn)維工程師發(fā)布環(huán)境只需要登錄一臺(tái)Linux, 替換jar包 war包重新啟動(dòng)即可, 但微服務(wù)架構(gòu)中有非常多的模塊, 需要分別部署在不同服務(wù)器, 如果都手動(dòng)部署, 還需要根據(jù)不同環(huán)境去切換配置文件, Jenkins就能解決此問(wèn)題.
Docker安裝教程
下載Jenkins鏡像
docker pull Jenkins
安裝JDK
這個(gè)省略
安裝maven
[root@ip-172-31-20-91 ~]# mkdir maven3.6
[root@ip-172-31-20-91 ~]# cd maven3.6/
[root@ip-172-31-20-91 maven3.6]# wget https://www-us.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
[root@ip-172-31-20-91 maven3.6]# tar -xf apache-maven-3.6.0-bin.tar.gz
配置MAVEN環(huán)境變量
cd /etc/profile.d/
vim maven.sh
在'maven.sh'配置文件中添加以下配置。
#Apache Maven環(huán)境變量
export M2_HOME=/usr/local/src/apache-maven
export PATH=${M2_HOME}/bin:${PATH}
啟動(dòng)Jenkins
docker run \
--name jenkins_docker \
-p 8091:8080 \
-u root \
-v /root/jenkins/jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /root/maven3.6/apache-maven-3.6.0:/usr/local/maven3.6 \
-v /usr/bin/java:/usr/local/jdk1.8 \
-d \
jenkins
一定要確定防火墻端口是否開(kāi)啟
--name jenkins_docker 給容器取的名稱(chēng)
-p 8091:8080 將Jenkins容器默認(rèn)8080端口映射到 宿主機(jī)8091端口
-u root 使用root用戶(hù)權(quán)限
-v /root/jenkins/jenkins-data:/var/jenkins_home 映射Jenkins數(shù)據(jù)目錄,防數(shù)據(jù)丟失
-v /var/run/docker.sock:/var/run/docker.sock 讓容器能使用docker的命令
-v /root/maven3.6/apache-maven-3.6.0:/usr/local/maven3.6 掛載宿主機(jī)maven
-v /usr/bin/java:/usr/local/jdk1.8 掛載宿主機(jī)jdk
-d 后臺(tái)運(yùn)行
jenkins 主頁(yè)
輸入密碼
初始化在日志里面了, docker容器日志查看密碼
docker logs jenkins_docker
安裝插件
選擇自動(dòng)安裝
如果提示版本過(guò)低, 需要自動(dòng)更新Jenkins版本
安裝 MAVEN 插件
安裝SSH插件
開(kāi)啟遠(yuǎn)程SSH連接
為了讓Jenkins能把jar包傳到遠(yuǎn)程服務(wù)器,和開(kāi)啟服務(wù)等操作
將本機(jī)ssh公鑰文件放到遠(yuǎn)程主機(jī)上
進(jìn)入容器
docker exec -it jenkins_docker bash
生成rsa秘鑰對(duì)
root@20af72d193f2:/# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
服務(wù)器端 ~/.ssh/authorized_keys
配置jdk環(huán)境變量
配置maven環(huán)境變量
配置SSH連接
創(chuàng)建MAVEN工程
Jenkins部署配置
1.clean package -DskipTests=true -P prod_test
- image.png
shell 腳本
#!/bin/bash
cd /jar包目錄
echo "正在kill"
export JAVA_HOME=/usr/bin/java
export PATH=$JAVA_HOME/bin:$PATH
jar_name="jar_name"
echo "name:${jar_name}"
ps aux|grep jar_name|awk '{print $2}'|xargs kill -9
ps aux|grep jar_name|awk '{print $2}'|xargs kill -9
ps aux|grep jar_name|awk '{print $2}'|xargs kill -9
nohup java -jar xxxxx.jar -Xmx=512M -Xms=512M -Xmn=128M --spring.profiles.active=test -Dserver.tomcat.max-threads=10 >/dev/null 2>&1 &
echo "啟動(dòng)xxxxxx"
#睡眠15s
sleep 15s
nohup java -jar ${jar_name}-0.0.1-SNAPSHOT.jar -Xmx=512M -Xms=512M -Xmn=128M --spring.profiles.active=test -Dserver.tomcat.max-threads=10 >/dev/null 2>&1 &
echo "${jar_name}"
ps -ef |grep java
free -h
exit 0
shell 格式轉(zhuǎn)換
Windows上編寫(xiě)的shell命令字符編碼 與Linux不一致 導(dǎo)致shell不能運(yùn)行
解決
方法一: 使用notepad++ 轉(zhuǎn)換
方式二 : idea中改成LF
nginx Jenkins參考https://wiki.jenkins.io/display/JENKINS/Jenkins+says+my+reverse+proxy+setup+is+broken
https://www.phase2technology.com/blog/running-jenkins-behind-nginx!