设为首页 收藏本站
查看: 1285|回复: 0

[经验分享] jenkins+docker 持续构建非docker in docker

[复制链接]

尚未签到

发表于 2017-12-6 06:38:00 | 显示全部楼层 |阅读模式
  工欲善其事必先利其器,为了解脱程序员的,我们程序员本身发明了很多好用的工具,通过各种工具的组合来达到我们想要的结果
  本文采用jenkins docker svn maven作为相关工具,项目spring boot框架
  使用 个软件版本
  jenkins Jenkins ver. 2.90
  docker 17.10-ce
  svn 1.6
  maven 3.5
  spring boot 1.5.6
  centos7
  实现目标:当我们迁入代码时自动升级到测试服务器,如下图
DSC0000.png

  第一步 重新构建自己的jenkins镜像
  构建我们自己的jenkins,jenkins 我们在docker容器中运行,但是 我们还要用jenkins来构建docker镜像这是就需要 jenkins容器中可以执行docker命令,所以我们需要构建自己的jenkins镜像
  这里借鉴 大桥下的蜗牛 的博客 同时也向大家推荐一下 https://blog.lab99.org/post/docker-2016-07-14-faq.html#ru-he-zai-docker-rong-qi-nei-shi-yong-docker-ming-ling-bi-ru-zai-jenkins-rong-qi-zhong
DSC0001.png

  更详细的 请大家浏览上面的网址查看。
  我并没有用上面的Dockerfile来构建jenkins镜像因为上面使用的jenkins版本有点老不过依然能用下面不上我自己的 Dockerfile



jenkinsci/jenkins:2.90-alpine
# 下载安装Docker CLI
root
curl -O https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz \
    && tar zxvf docker-latest.tgz \
&& cp docker/docker /usr/local/bin/ \
&& rm -rf docker docker-latest.tgz
# 将 `jenkins` 用户的组 ID 改为宿主 `docker` 组的组ID,从而具有执行 `docker` 命令的权限。
DOCKER_GID=999
jenkins:${DOCKER_GID}
  然后 docker build -t myjenkins:0.0.1 .  进行构建
  运行



docker run --name jenkins \
-d \
-p 8081:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
myjenkins:0.0.1
  然后就等待容器起来之后打开界面这样打镜像有一个问题(1、很难在线/离线安装jdk除非在构建镜像是就进行安装实际上jenkins基础镜像有jdk环境 2、不知道为什么 不能再挂载volume)
  起来之后我们会看到 初始化安装插件等等 这里就不截图展示了
  第二步 安装jenkins插件
  系统管理->管理插件->可选插件
DSC0002.png

  安装相关maven插件
  同样安装docker相关插件,安装完后如下图
DSC0003.png

  上面的插件 有很多都是开始的时候安装的。
  第三步 设置docker远程访问
  本人使用的是centos7操作系统
  首先打开docker安装文件路径如下



/usr/lib/systemd/system
  修改 docker.service文件



ExecStart=/usr/bin/docker --tls=false -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
DSC0004.png

  然后刷新配置文件重启docker



sudo systemctl daemon-reload
sudo systemctl restart docker
  这样docker就会监听2375端口我们就可以对他进行远程操作



docker -H IP:2375 ps
  执行docker命令时指定IP和端口号
DSC0005.png

  第四部 配置我们的jenkins
  系统管理->系统设置
  选择 svn使用版本
  设置Docker builder 地址这里一定要主要 是tcp协议不是http,填写完一定要测试一下链接确定是否联通
DSC0006.png

  然后进行全局工具配置
  系统管理->全局工具配置
  进行maven配置 其中jdk在jenkins中已经存在jdk环境所以不需要设置
DSC0007.png

  选择完后点击保存
  第五部 创建item
DSC0008.png

  首先配置svn
DSC0009.png

  然后在设置构建步骤
  这里的基本思想是 首先maven将工程达成jar包,然后用Dockerfile文件生成docker镜像然后在上传到私有仓库再然后远程执行部署和更新命令
  首先设置maven构建
DSC00010.png

  然后设置镜像构建
DSC00011.png

  选择完Execute Docker command 之后在选择 Create/build image
DSC00012.png

  这里说明一下
  最上面选择 DSC00013.png 只有构建成功才进行下一步操作
  然后在进行选择进行镜像推送
DSC00014.png

  最后我们远程执行docker命令进行运行创建容器
DSC00015.png




$WORKSPACE/src/docker
  上面的路径是java工程的路径Dockerfile文件在上面的路径在工程中写好另外我们工程生成的java包也是需要生成输出到这个目录的
  $BUILD_NUMBER  这个全局变量是自增的每次构建都会+1可以用它来标记版本
  到这里我们的jenkins基本上已经设置完成可以保存进行应用构建执行了。
  最后 我们看下我们的项目结构
DSC00016.png

  再附上本人java工程的Dockerfile文件



java:8
/tmp
testdemo-0.0.5.jar app.jar
bash -c 'touch /app.jar'
10005
["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  本文还涉及很多其他知识比如私有仓库的搭建Spring boot框架等知识
  上面忘记了 如果要持续构建的话
  需要设置一下
DSC00017.png

  每5分钟构建一次这样就可以 我们编辑完代码 上传svn就会马上发布到测试版
  解放Control+c Control+v操作

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421021-1-1.html 上篇帖子: Docker + Jenkins 持续部署 ASP.NET Core 项目 下篇帖子: Docker+Jenkins_自动化持续集成
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表