我的环境:
服务器:centos7.3
docker:
1.安装docker:yum install -f docker
2.安装docker-compose:
- curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-
uname -s
-uname -m
-o /usr/local/bin/docker-compose - chmod +x /usr/local/bin/docker-compose
3.新建docker-compose.yml来构建jenkins
version: "3.1"
services:
jenkins:
#镜像名
image: docker.io/jenkins/jenkins
#容器名
container_name: jenkins
#端口映射
ports:
- 8086:8080
- 12345:50000
- 8087:80
#数据卷
volumes:
- "/mydocker/jenkins/data:/var/jenkins_home"
- "/var/run/docker.sock:/var/run/docker.sock"
#使用root账户
user: root
我这里映射了三个端口其中8080是容器内jenkins的web登陆端口,我这映射成了宿主机的8086端口,
容器内的80端口是我的项目访问端口,映射成了宿主机的8087端口
4安装jenkins:
在docker-compose.yml的同级运行:docker-compose up -d
接下来查看日志
红色圈起来的是密码
浏览器输入http://服务器ip:8086
可以看到下面这个界面,然后填入密码
这里选择安装推荐的插件
这个界面非常的漫长,我等了差不多一个小时
经过漫长的等待,终于进入下一步创建用户,这里只要自己记住就行了
然后一路小跑下一步就来到了这里
下面开始配置jenkins的jdk,maven,git,Ant
我这里全都选择的自动安装jdk,maven,git,ant 也可以自己安装,看自己心情
下面开始新建一个项目
这里填写项目名称,选择maven项目。确定
配置源码,我这里绑定的是我码云的一个项目
这里配置触发器,就是说他什么时候去构建项目,我这里选择是轮询三分钟一次,其中轮询和定时器两个的区别就是轮询是在满足时间并且git代码有更新的情况下才会构建项目,定时器只要时间一到就会构建项目
配置打包方式
下面编写构建项目后要执行的脚本,使用这个脚本来发布我们的项目(重点)
#进入jenkins的项目路径
cd /var/jenkins_home
echo "Execute shell Start"
#停止项目
sh stop.sh
#备份项目
sh replace.sh
echo "Execute shell Finish"
#添加权限
chmod 777 /var/jenkins_home/startup.sh
#运行项目
BUILD_ID=dontKillMe nohup /var/jenkins_home/startup.sh &
stop.sh
#!stop.sh
#!/bin/bash
cd //var/jenkins_home/workspace/jenkins_Test/target/
ls
pid=`ps -ef | grep docker_test-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
#!kill -9 强制终止
echo "kill -9 的pid:" $pid
kill -9 $pid
fi
replace.sh
jar_name=docker_test-0.0.1-SNAPSHOT.jar
#!编译好的jar包存放地址
file_path=/var/jenkins_home/workspace/jenkins/target/
#!将现有的jar备份后,将新的jar包替换
file="/var/jenkins_home/workspace/jenkinsTest/docker_test-0.0.1-SNAPSHOT.jar"
if [ -f "$file" ]
then
mv /var/jenkins_home/workspace/jenkinsTest/docker_test-0.0.1-SNAPSHOT.jar /var/jenkins_home/workspace/jenkinsTest/docker_test-0.0.1-SNAPSHOT.jar.`date +%Y%m%d%H%M%S`
fi
cp /var/jenkins_home/workspace/jenkinsTest/target/docker_test-0.0.1-SNAPSHOT.jar /
startup.sh
ehco "授予当前用户权限"
chmod 777 /docker_test-0.0.1-SNAPSHOT.jar
echo "执行....."
cd /
java -jar docker_test-0.0.1-SNAPSHOT.jar
echo "**********************cmp on jenkins started*************************"
点击保存,回到项目里,点立即构建
这里可以看构建历史
这里查看控制台的构建信息
看到SUCCESS这个单词就说明成功了,浏览器就可以访问的我们的项目了,以后码云上的代码更新,jenkins就能帮我们运行项目了
这里可查看git的轮询时间
这里可以看上次构建时间和下次构建时间
可能出现的问题
1:时区不对
先进入jenkins容器,然后修改环境变量,最后重启一下就好了