pangxia75 发表于 2017-12-6 06:38:00

jenkins+docker 持续构建非docker in docker

  工欲善其事必先利其器,为了解脱程序员的,我们程序员本身发明了很多好用的工具,通过各种工具的组合来达到我们想要的结果
  本文采用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
  实现目标:当我们迁入代码时自动升级到测试服务器,如下图

  第一步 重新构建自己的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

  更详细的 请大家浏览上面的网址查看。
  我并没有用上面的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插件
  系统管理->管理插件->可选插件

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

  上面的插件 有很多都是开始的时候安装的。
  第三步 设置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

  然后刷新配置文件重启docker



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



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

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

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

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

  首先配置svn

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

  然后设置镜像构建

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

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

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




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

  再附上本人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框架等知识
  上面忘记了 如果要持续构建的话
  需要设置一下

  每5分钟构建一次这样就可以 我们编辑完代码 上传svn就会马上发布到测试版
  解放Control+c Control+v操作
页: [1]
查看完整版本: jenkins+docker 持续构建非docker in docker