docker部署Jenkins(有的用的别人的图片,少两张图片,以后会补上)

一,安装
这里注意不要用最新版的jenkins,因为最新版只支持jdk1.7打包,下面是jenkins版本需求
• Jenkins >= 1.520 requires Java 6 thus Maven jobs must be launched with Java >= 6.
• Jenkins >= 1.612 requires Java 7 thus Maven jobs must be launched with Java >= 7.
• Jenkins >= 2.54 requires Java 8 thus Maven jobs must be launched with Java >= 8.
在启动jenkins 的时候禁止jenkins杀死衍生进程:
修改/etc/sysconfig/jenkins配置,在JENKINS_JAVA_OPTIONS中加入-Dhudson.util.ProcessTree.disable=true。需要重启jenkins生效
/etc/sysconfig/jenkins 这个文件找不到, 直接在 /etc/profile 里面添加 export JENKINS_JAVA_OPTIONS="-Dhudson.util.ProcessTree.disable=true"


1,拉取镜像
docker pull jenkins/jenkins:lts
这种方式启动会存储数据,-t 标示以后台模式运行,-p标示容器和宿主服务器之间的开放端口号 -v表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>,–restart always表示当 Docker重启时,容器自动启动
2,运行容器
docker run -t -p 9090:8080 -p 8083:8083 -p 50000:50000 --restart always --name jenkins -v /home/jenkins:/var/jenkins_home -v /home/maven/:/home/maven/ -v /usr/java/jdk1.7.0_80:/usr/java/jdk1.7.0_80 -v /etc/localtime:/etc/localtime -u 0 jenkins
需要挂载jdk,mvn,tomcat的话继续-v
运行成功之后,我们输入http://ip:8080/ 就可以访问到了
有可能报错,需要修改下目录权限, 因为当映射本地数据卷时,/home/docker/jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000
sudo chown -R 1000:1000 /home/docker/jenkins
时区不对(因为上面容器挂载这俩文件了,一般情况下时间是对的,但是宿主时间不对按照以下方法修改)
• 修改/etc/localtime,修改容器的时间
• 修改/etc/timezone,修改jenkins的时区


二,设置Jenkins
1,安装插件
maven integration
Subversion
Deploy to container
SSH
2,设置jdk与mvn(以前写的文档,时间太久图片没了,自己在网上找找怎么设置,很简单)


三,实现cd
1,创建一个maven风格的test项目
在这里插入图片描述
2.配置svn或者git,
在SVN URL后面加上@HEAD后缀,表明更新版本库中最新版本
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
构建触发器
在这里插入图片描述

常用配置
每15分钟构建一次:H/15 * * * * 或*/5 * * * *
每天8点构建一次:0 8 * * *
每天8点~17点,两小时构建一次:0 8-17/2 * * *
周一到周五,8点~17点,两小时构建一次:0 8-17/2 * * 1-5
每月1号、15号各构建一次,除12月:H H 1,15 1-11 *
每周五12点执行构建:H 12 * * 5
这里面主要有2个构建方式,一个是定时构建,一个是轮询构建
定时构建:每隔一段时间,或者是每天,构建
轮询构建:每隔一段时间,或者是每天 同步SVN 或者代码仓库,有变更才会构建

等结束点构建
添加在部署环境添加脚本
git:
在这里插入图片描述
如果是git的话配置webhook保证有提交就自动部署
在这里插入图片描述
在gitlab项目上设置刚才的地址
在这里插入图片描述
点test测试
在这里插入图片描述
这里会有两个错误,第一个是:
Requests to the local network are not allowed
解决方法:
第二个错误是403:
系统管理 -> 系统设置 -> 去掉 Enable authentication for ‘/project’ end-point
测试成功后可以执行下面步骤
在这里插入图片描述
jenkins想要执行远程机器上的shell脚本,必须要在jenkins中安装ssh插件。随后在系统管理->系统设置中进行配置,如图所示:(这里的图片也没了)
tomcat更新脚本:

#!/bin/bash
PID=`ps -ef |grep /opt/apache-tomcat-7.0.61-zodiac/conf |grep -v grep | awk'{print $2}'`
y=`date "+%m%d-%k:%M"`
sh /opt/apache-tomcat-7.0.61-zodiac/bin/shutdown.sh
sleep 10
if [ -z "$PID" ];then
    echo "进程不存在"
else
    echo "进程存在 杀死进程PID$PID"
    kill -9 $PID
fi
sleep 1
mv /opt/apache-tomcat-7.0.61-zodiac/webapps_las/las.war /opt/apache-tomcat-7.0.61-zodiac/back/$y
rm -rf /opt/apache-tomcat-7.0.61-zodiac/webapps_las/las
mv las.war /opt/apache-tomcat-7.0.61-zodiac/webapps_las/
find /opt/apache-tomcat-7.0.61-zodiac/back/  -mtime +7 -exec rm -rf {} \;
sleep 1
sh /opt/apache-tomcat-7.0.61-zodiac/bin/startup.sh
sleep 10
tail -f /opt/apache-tomcat-7.0.61-zodiac/logs/catalina.out

sh /home/caiwengchao/shutdown.sh
sleep 2
sh /home/caiwengchao/start.sh
休眠2s,给tomcat启动的时间;

Gitlab403报错
系统管理 -> 系统设置 -> 去掉 Enable authentication for ‘/project’ end-point
在这里插入图片描述
添加秘钥:
在这里插入图片描述
将两个参数关联起来,当选定参数A内容时,自动填写参数B的内容
在Jenkins官网找到了个Active Choices插件可用(https://plugins.jenkins.io/uno-choice)
1.首先用管理员账户登录Jenkins,进入系统设置页面,选择插件管理
2.可选插件中选择要安装的插件
3.安装后选择重启Jenkins

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值