1.首先安裝docker,VMware虛擬機ubuntu16.04安裝docker以及docker swarm
2.然後通過docker安裝jenkins,ubuntu 中基於docker運行jenkins
3.下載Maven Integration插件
4.全局工具配置,讓jenkins自動下載maven插件。(ps:jdk jenkins鏡像自帶,無需下載)
5.構建一個maven項目
找到源碼管理中的Git,這裏項目地址是一個我的github項目,所有人都可以使用,地址:https://github.com/17680502002/demo.git
Build中 Goals and options填入打包命令clean package -DskipTests=true 後面這個DskipTests參數意思爲跳過測試
Add post-build step,填入打包之後的shell腳本
腳本如下:
#!/bin/bash
#輸出demo-0.0.1-SNAPSHOT.jar進程的pid
pid=`ps -ef | grep demo-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
#判斷pid是否有值,有就是運行過了,就kill掉
if [ -n "$pid" ]
then
kill -9 $pid
fi
#拷貝demo-0.0.1-SNAPSHOT.jar 到/home/demo-0.0.1-SNAPSHOT.jar
cp $WORKSPACE/target/demo-0.0.1-SNAPSHOT.jar /home/demo-0.0.1-SNAPSHOT.jar
#nohup運行demo-0.0.1-SNAPSHOT.jar,可以用-Dserver.port=8081指定端口
BUILD_ID=dontKillMe nohup java -jar -Dserver.port=8081 /home/demo-0.0.1-SNAPSHOT.jar &
最後,點擊項目構建,查看控制檯打印信息,項目就構建好了
這裏用的maven是官方庫,如果速度慢,可以更改maven配置文件
sudo vim /home/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven/conf/settings.xml#這裏注意一點,conf目錄前面的maven這個是你在全局配置的時候自定義的名字在相應位置加入如下配置
<localRepository>
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/repository
</localRepository>
與
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
6.此時項目構建完了,外部訪問192.168.xxx.xxx:8081還是訪問不到,因爲shell腳本是運行在容器中的,所以運行了java -jar是在容器內部,還需要docker端口與容易端口映射。
先獲得容器IP
docker inspect `jenkins` | grep IPAddress
輸入下面三條命令,(172.17.0.2爲上面獲取的容器IP),可以讓docker容易不停止就能新增端口映射
sudo iptables -t nat -A DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.2:8081下面這條命令是查看docker端口和容器端口映射的sudo iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source 172.17.0.2 --destination 172.17.0.2 --dport 8081
sudo iptables -A DOCKER -j ACCEPT -p tcp --destination 172.17.0.2 --dport 8081
sudo iptables -L DOCKER -n --line-number最後外部訪問192.168.xxx.xxx:8081成功