随着互联网的蓬勃发展,软件生命周期模型也经历了几个比较大的阶段,从最初的瀑布模型,到 V 模型,再到现在的敏捷或者 devops,不论哪个阶段,项目从立项到交付几乎都离不开以下几个过程,开发、构建、测试和发布,而且一直都在致力于又好又快地完成软件的交付。
然而大多数互联网公司面临的常态却是,临近上线日全员待命,如临大敌,通宵达旦,生怕出现上线事故导致版本回滚,即使暂时上线成功后也可能会出现明明测试环境全部通过了,却依然有各种线上质量问题频发。这些现象的主要原因就是代码合并的太晚,而且每次改动未经过充分的测试,代码合并时出现冲突,为了解决冲突重新修改代码,新修改的代码又有可能会引发新的问题,进入了恶性循环。
那么如何才能快速的合并代码,快速的构建,快速的测试,快速的发布高质量的代码呢?持续集成就应运而生了,它的宗旨就是多次合并代码,合并完成后在各种环境下进行多次充分的测试,保证版本的可用性和代码更改的正确性。
我们经常听到的持续工程方法有 3 个,分别为持续集成(Continuous Integration,CI)、持续交付(Continuous Delivery,CD)和持续部署(Continuous Deploy,CD)。
以上 3 个流程的本质都是为了保证每一次代码合并后都能经过一系列的验证,保证这些变更的质量。以下是 3 个持续过程的流水线示意图:
测试要尽量的充分
因为持续集成最终的目的是保证版本的可用性,而且由于多人协作,合并后的代码有可能对整个的软件都会有影响,所有一般情况下需要把所有的测试流程都走一遍,比如静态代码扫描、单元测试、功能测试、接口测试、性能测试等等;如果只是修复了一些 bug,代码改动不大的情况下,可以只做一些针对性测试。
测试的速度要尽可能的快
持续集成中每天都会有代码合并,甚至一天有好几次合并,如果测试的效率不够高的话很可能会出现一个打包的版本还测试完成,新的版本就已经出现了,甚至积压几个版本,这样的话就不能及时的发现是哪个版本出现的问题,而且开发一直是在有问题的版本上进行的修改,所以这就要求测试的速度要快,自动化测试肯定是不可或缺的,甚至还要并行或者分布式执行测试。
尽量使用和生产环境类似的环境进行测试
如果持续集成采用的测试环境和线上环境差异太大的话,测试的结果很可能是不准确的,有些线上的问题也是很难发现的,特别是关于性能测试的结果,资源和锁等问题。所以采用和线上环境完全一样的环境时最理想的,如果条件不允许的话要尽可能采用同比例缩小的环境进行测试,以保证测试结果的准确性。
Win10 + Jenkins 2.277.2 + JDK 1.8 + Maven + Git + Tomcat
1)登录官网下载安装包:官网 https://git-scm.com/download/win
2)下载完成后双击安装,如下图所示:
双击 exe 文件,一路 next 即可。
3)配置环境变量:将 Git 的 bin 目录 添加到环境变量。
4)注册 github 账号
登录 https://github.com/ 注册账号。
1)登录官网,下载 jdk 1.8
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
先选择 Accept,然后根据自己电脑 选择对应 windows 下的文件:
下载完成后的文件为 jdk-8u211-windows-x64.exe。
2)安装
单击 jdk-8u211-windows-x64.exe。
3)配置 java 环境变量
配置 JAVA_HOME:
配置 path:
新增环境变量 CLASSPATH:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib
配置完成后点击所有的确定按钮。
4)确认安装成功
启动 cmd,输入 java -version,如下结果表示安装并配置成功:
这里选择 tomcat8 为示例。
https://tomcat.apache.org/download-80.cgi
将下载后的文件解压到指定的目录,比如:D:\program2.5.3.
Jenkins 建议在 tomcat 中使用 utf-8 编码 , 配置 tomcat 下 conf 目录的 server.xml 文件:
浏览器输入:127.0.0.1:8080
接下来我们在 Jenkins 的 maven 任务中采用 Deploy war/ear to a Container 的方式,而要将 war 包到 tomcat 下,需要配置 tomcat 的配置文件 tomcat/conf/tomcat-users.xml,将名为 tomcat 的用户配上以下四个角色:admin-gui、manager-gui、manager-script 和 manager-jmx,这样才可以使用 tomcat 这个用户完成远程部署的功能。
打开 tomcat 安装目录下的 tomcat-users.xml 文件,在文件底部加入如下内容:
构建过程:
进入官网:http://maven.apache.org/download.cgi,下拉页面找到 files,如下所示:
2)解压缩
3)配置环境变量 MAVEN_HOME
maven 的安装过程中会自动添加 %M2_HOME%(Jenkins 中使用的也是 M2_HOME,所以务必添加到环境变量),并且将 %M2_HOME%\bin 加入到 path 中。但是有一些项目仍引用 MAVEN_HOME,为了保险起见,也将其配置到环境变量中。
4)验证安装成功
启动命令行,输入:mvn --version
官网链接:https://Jenkins.io/download/
向下滑动页面,可以看到有 LTS 和 Weekly 两种版本,版本建议下载 LTS 版本,Weekly 版本每周都会更新,更新频率太快。
上一步已经把 war 包放到了 tomcat 的 webapps 目录下,进入 tomcat 的 bin 目录,单击 startup.bat,启动 tomcat 后就可以直接在浏览器中访问了:http://127.0.0.1:8080/Jenkins
根据提示打开以下文件,将管理员密码粘贴到网页中:
或使用命令行:type + 文件名
弹出的页面显示离线,如下所示:
有以下两种解决方案:
A)选择跳过插件安装,进入 Jenkins 后根据需要自行安装,但是安装插件前也是需要进入到插件管理修改配置。
B)修改配置文件:
将 C:\Users\kongsh\.Jenkins\hudson.model.UpdateCenter.xml 文件中的 url 更改为如下值:https://mirrors.tuna.tsinghua.edu.cn/Jenkins/updates/update-center.json
或者更改为 http://updates.Jenkins.io/update-center.json ,即去掉 s(采用),如下:
解决方案 B 是推荐的, 可彻底解决插件安装慢问题, 不过要先安装中文插件, 可以先通过前面两种方法安装该插件(https://blog.csdn.net/qq_23483671/article/details/105337733)。
重启 tomcat,刷新页面后,显示正常:
选择默认安装插件的话,此过程需要一段时间,而且根据网络不同有些插件安装不成功,但是之后可以自己再安装即可;也可以自定义选择指定的插件。接下来我们安装推荐的插件。
单击左侧的安装推荐的插件按钮:
安装过程如下:
我们会有直接想通过 http 方式运行 Jenkins job 的需求,这样就不需要每次都进入 Jenkins 的页面了(本机的话就是 127.0.0.1)。
若之后 Jenkins 卡住,则重启 tomcat 即可。
GitHub 收到提交的代码后要主动通知 Jenkins,所以 Jenkins 所在服务器一定要有外网 IP,否则 GitHub 无法访问,解决方法:下载 ngrok,将 IP 暴露到网络(类似的工具还有 holer)。
1)下载
登录到 https://ngrok.com/download 下载 ngrok 压缩包,选 windows 版本:
2)解压缩
将 ngrok-stable-windows-amd64.zip 文件解压到指定的目录,比如:F:\ngrok-stable-windows-amd64
3)获取 ngrok 的 token
切换到官网并进行登录(可用 github 账号登录):
获取 token:
4)认证 token
切换到解压后的目录,执行命令进行认证:ngrok authtoken
5)启动 ngrok
在 ngrok 所在的目录执行:ngrok http 8080(8080 是 tomcat 的监听端口),拷贝 forwarding 指示的 ip,后续会用到(注意:cmd 的窗口不要关闭)。
注意:关机或重启后就要重新进入 ngrok 所在的目录执行 ngrok http 8080 命令生成新的 IP,同时 Jenkins 和 github 中的 webhook 对应的 ip 也要修改。
Gradle 是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于 Kotlin 语言的 kotlin-based DSL,抛弃了基于 XML 的各种繁琐配置。
Gradle 面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。
Gradle 和 Maven 两者都是项目工具,但是 Maven 现在已经是行业标准,Gradle 是后起之秀,很多人对它的了解都是从 Android Studio 中得到的。Gradle 的优点主要如下:
1) 登录官网下载解压版本
进入官网:https://gradle.org/
单击 Install Gradle 之后,下拉页面,单击如下链接,下载最新版本:
2)解压并配置环境变量:
将下载后的压缩文件解压到指定位置,并配置环境变量。如下:
3)验证安装成功:
启动命令行,输入:gradle
手机扫一扫
移动阅读更方便
你可能感兴趣的文章