目前企业面临的产品开发周期短、需求变化大,故而软件开发模式也经历了传统瀑布模型-》敏捷开发模型-》DevOps的变化,三者的优劣一目了然。
模型名称 | 模型特点 | 模型缺陷 |
---|---|---|
传统瀑布模型 | 完整/清晰/固定的产品定义 | 不可以随时修改需求 |
敏捷开发模型 | 需求频繁变化+需求快速开发 | 流程繁琐从而导致人为执行无法严格遵守 |
DevOps | 需求频繁变化+开发需要敏捷+操作需要敏捷 | 流程处理自动化,最大限度的减少人为干预 |
Jenkins可以轻松包办从本地push后一直到成功部署的整个环节,这样对于持续集成有两大好处:
在本次项目中,我们的架构师专门调拨了一台服务器给Jenkins自动化部署,它需要实现三个功能:
1. 从远程仓库(Git)上实时拉取代码。
2. 将更新代码打包(tar包)并且推送到已经配置好Docker环境的远程服务器上。
3. 在远程服务器上基于Docker容器部署服务。
在介绍任务之前有一点不得不提:
Jenkins是在线的项目自动化部署平台,它的很多功能都是基于加载插件的形式来实现的。除初始化安装过程中的基本插件之外(文章首页的链接课程里有详细的安装流程,不再赘述),加入什么新的插件,这完全是按照项目需求来的。
Jenkins插件的增删改查都在系统管理–》插件管理来实现。如果在使用过程中有任何一个模块的某个选项没有出现,那多半是因为没有安装相关插件或者没有及时更新插件所导致的。
进入Jenkins界面—》新建任务—》构建一个自由风格的软件项目。
如题,这是从整个项目构建的层面实现某些功能的模块。根据项目的需求自行添加。
我使用的是Git作为代码仓库,有项目内和项目外两种配置方式。
在项目里可以通过用户名+密码的方式来完成代码仓库的调用:
在项目外可以通过系统管理–》全局配置–》添加SSH密钥互信的方式来完成代码仓库的调用:
需要特别注意的是这两种认证方法不可以同时存在,否则会触发403。
如果在全局中配置好了就不需要在项目里再配置一次了,直接选取对应仓库就好了。
这一模块主要是为实时构建服务,钩子的创建就在这个模块里。我选取的是"Build when a change is pushed to GitLab… “,安装的插件是"Generic Webhook Trigger Plugin”:
项目在构建的过程中有环境配置的需求,例如我需要部署Java Spring Cloud项目,就需要引入对应的Maven配置文件。
配置文件需要先加载到全局变量中,首先需要下载相关插件 Config File Provider Plugin并安装。
之后进入全局配置–》Managed files–》Add a new Config,复制粘贴并保存配置文件。这时候返回Config File Management内后可以看到之前保存的配置文件。
在项目的构建环境中,我们可以选择已经添加到全局配置的配置文件。
勾选Provide Configuration files–》Add file即可
构建模块就是生成文件包的环节,这里我使用的是shell脚本来生成tar包,优点是脚本指令暴露在外面,方便其他成员理解和修改部署环节。Jenkins也提供了相当多其他方式的构建指令实现方法,例如载入python脚本文件等。
这一模块可以实现连接远程服务器–》传输文件–》运行部署等等功能,这里我选择的是"Send build artifact over SSH",也就是通过两台服务器之间添加SSH互信来实现文件传输运行。
类比于 5.构建环境的操作流程,这里也分为三步。
进入插件管理–》添加 Publish Over SSH插件
进入系统配置–》Publish Over SSH,生成公钥私钥后,添加私钥来进行SSH配置。
需要注意的是最后的Remote Directory是针对目标服务器的根目录的相对路径,在后续构建话操作时Jenkins会自动进行填充,切记不要重复书写!!!
之前的操作都正确完成后,Jenkins会自动添加对应的服务器地址。
艾编程:Jenkins践行持续集成与安装实战
linxc008:Linux之间配置SSH互信(SSH免密码登录)
Jager’s Note:Linux配置SSH公钥认证与Jenkins远程登录进行自动发布
在路上的白羊:Jenkins插件下载镜像加速
Onehee:Jenkins构建完成后自动部署到指定服务器
doraman:Jenkins页面操作提示 “No valid crumb was included in the request”