持续集成的概念
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。 持续集成CI(Continuous Integration)正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
持续集成项目部署
持续集成的价值
1.持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
2.持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
3.持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策.
持续集成的原则
1.需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有 Git、CVS、Subversion 等;
2.开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;
3.需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;
4.必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。
持续集成例子 – 代码及github
本地准备一个基于maven的Javaweb项目jenkins-test. 在该项目的根目录中准备一个dockerfile,内容如下:
上传该项目至github远程服务器,并自行记录用户名密码及访问地址;
1.持续集成例子 – Jenkins安装
2.在Jenkins服务器安装Jdk环境;
3.在Jenkins服务器安装maven环境;
4.在Jenkins服务器安装Git环境;
5.复制Jenkins.war至Tomcat的webapps目录下,启动Tomcat即可.
6.启动后访问http://192.168.0.203:8080/jenkins/ 初始密码按照提示复制/root/.jenkins/secrets/initialAdminPassword文件的内容即可
7.启动后可以自己设置用户名密码,也可以不做设置
8.勾选所有推荐插件,并安装;(该插件安装时可能出现各种问题,多次尝试即可)
持续集成例子 – Jenkins配置
全局安全配置:
安全域 勾选允许用户注册;
授权策略 勾选任何用户可以做任何事
CSRF Protection 勾掉防止跨站点请求伪造
全局工具配置:
JDK 配置JAVA_HOME
Git 配置Git运行程序
Maven 配置MAVEN_HOME
插件管理
可选插件 Publish Over SSH 搜索安装
系统管理
Publish Over SSH
Passphrase 远程服务器密码
SSH Server 远程服务器配置 进行 地址,用户名,远程操作文件夹相关配置
持续集成例子 – Jenkins构建任务1
创建自由风格的构建任务: 源码管理 添加git远程库项目地址,并添加用户名凭据
持续集成例子 – Jenkins构建配置2
持续集成例子 – Jenkins构建测试
持续集成例子 – Jenkins构建配置3-1
构建后操作 Send bulid artifacts over SSH SSH Server Name 系统配置内配置的远程服务器 Transfers 要传输的文件集合 Transfer Set1 文件1 Source files 要传输的文件位置(相对于本次构建的workspace) Remote directory 文件的拷贝位置(相对于远程目录) Exec command 拷贝完成后执行的脚本(必须)
持续集成例子 – Jenkins构建配置3-2
持续集成例子 – Jenkins构建完成
根据本人多年从业以及学习经验,录制了一套最新的Java精讲****,如果你现在也在学习Java,在入门学习Java的过程当中缺乏系统的学习教程,你可以加群654631948领取下学习资料,面试题,开发工具等,群里有资深java老师做答疑,每天也会有基础部分及架构的直播课,也可以加我的微信renlliang2013做深入沟通,只要是真心想学习Java的人都欢迎。
java基础教程:https://ke.qq.com/course/149432?tuin=57912c43
Java分布式互联网架构/微服务/高性能/springboot/springcloud:
https://ke.qq.com/course/179440?tuin=57912c43