在 1.docker构建jenkins中已经利用docker成功部署准备jenkins,接下来就是利用版本控制工具svn与jenkins远程部署node项目。

部署环境

  1. centos:7 虚拟机
  2. jenkins: docker镜像 2.176.2
  3. docker version : client /server都是1.13.1
  4. 假设你电脑已经安装了docker,并且了解一些docker 的操作,docker安装可见此处

流程大概:svn监听commit操作。通过请求触发构建jenkins 工程, 在构建的时候,通过ssh远程操控服务器执行命令,命令里执行代码更新,打包镜像,服务重启等操作。整个流程大概是这样

1. jenkins构建工程

  • 新建任务,选取一个自由风格的软件项目

    image.png

  • 填写普通信息

image.png

  • 配置源码管理(这里使用svn)

    image.png

  • 构建触发器

    1. 这一步是将配置svn触发构建的配置,在上面“流程大概”中,说到通过请求触发构建jenkins 工程,其中请求就是需要配置的。<br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/286007/1567676208543-8cc463f9-bdae-4354-b2fd-a7d5575b9722.png#align=left&display=inline&height=128&name=image.png&originHeight=307&originWidth=1428&size=40671&status=done&width=594)<br />身份证令牌(token)用来构建请求参数,完整请求路径根据提示信息拼凑为:http://{jenkins服务ip}:{jenkins服务端口}/job/cicd/build/?token=123456<br />我们只要在svn 提交,访问这个请求,就能触发构建
  • 构建环境

    1. 这步不需要
  • 构建

    1. 触发构建然后干嘛,这步我们配置构建的时候完成的事情<br /> **![image.png](https://cdn.nlark.com/yuque/0/2019/png/286007/1567676840318-abb59791-6f7f-46db-82da-f7c5bd767e4d.png#align=left&display=inline&height=257&name=image.png&originHeight=688&originWidth=1439&size=59478&status=done&width=537)**<br />在这里我们在构建时候发送给服务器的命令是创建文件夹,而其中的ssh服务需要配置在下面会讲到。
  • 构建后操作

    1. 这步不需要

2. svn添加钩子

在构建流程中我们希望在代码提交的时候,能让jenkins给远程的服务器执行命令,那么需要在svn配置触发jenkins的执行文件。

  • 添加触发文件

    1. [如何在centos构建svn服务](https://www.yuque.com/docs/share/441f4864-df43-4a24-80f7-3b8c54bd1d11)?<br /> 在svn的仓库环境svntest(我构建了一个仓库svntest)中的hooks文件夹中新建文件post-commit<br /> ![image.png](https://cdn.nlark.com/yuque/0/2019/png/286007/1567677931411-23f10e07-2806-4389-9811-98d09625dfd3.png#align=left&display=inline&height=90&name=image.png&originHeight=103&originWidth=377&size=7098&status=done&width=331)<br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/286007/1567677965369-2c7ed0cc-897e-4b23-b4bc-46e34102400b.png#align=left&display=inline&height=63&name=image.png&originHeight=92&originWidth=800&size=10028&status=done&width=552)
  • 在post-commit文件中添加执行的命令

    curl -X post -v -u username:password http://ip:port/job/cicd/build/?token=123456

这个命令中 -u username:password 是指jenkins的登录密码账户 后面的请求地址就是上面的构建触发器所配置的,

  • 重启svn

    3. 配置jenkins ssh远程构建工程

    为什么要使用ssh?因为我们的jenkins服务也是docker容器服务的。实际上我们可以在构建的步骤中选择直接构建命令,但是其中的命令执行环境是容器中的,比如执行的远程命令是docker run ,而在jenkins容器中是没有docker的,那么执行命令必然错误,当然你可以对jenkins镜像commit,但是不建议,我使用jenkins只是使用它的服务。
    image.png

image.png
其构建时的反应是:
image.png
所以我使用ssh来执行脚本,因为我的jinkins也是容器。

  • 安装Publish Over SSH 插件

    这个按照前面的教程应该有。

  • 配置Publish Over SSH

    进入系统管理==》系统配置 ==》publish Over SSH(这个下拉就能看到)

image.png

4. 将步骤串联起来,测试

将以上的步骤配置好,记得应用和重启相关服务和配置,这里就不多说了

总结

流程步骤理解起来很简单,但是每一个步骤对于新手都是难点,他牵扯了多方面,在下一篇第三篇优化一下,正式容器化项目,使用docker-copmse来管理服务。