作者:朱金灿
来源:clever101的专栏
为什么大多数人学不会人工智能编程?>>>
理解CI
CI(Continuous Integration)翻译成持续集成,是指在源代码变更后自动检测、检出、构建、自动化测试到发布的过程。常见的开源CI工具有Jenkins、Hudson。商业的有TeamCity等。
持续集成的好处:
a.提高开发效率。持续集成可以把一部分工作比如软件打包、接口测试都交给CI工具。
b.快速发现并定位Bugs。持续集成首先可以快速确认代码能否编译通过,其次可以集成自动化测试快速发现软件缺陷。
c.更快速的发布更新。因为持续集成能取代编译、测试和打包等一系列原来人工手动做的工作,从而能大大节省人力。
Jenkins的安装
安装Jenkins之前必须先安装JDK, Jenkins的运行依赖于JDK。Jenkins的安装有两种方式。
- Windows安装包的方式。具体到网站上下载Jenkins的安装包,然后按照应用软件的方式一步步提示安装。这种方式本质是在Windows创建一个Jenkins长驻服务进程。
- Java命令运行war包的方式。具体到网站上下载Jenkins的war包,然后执行命令:
java -jar jenkins.war --httpPort=9090
推荐使用第二种方式,因为第一种方式一是你可能没有权限去启动一个Windows服务程序;二是具体版本的Jenkins对依赖的JDK版本有限制,如果安装了不兼容的JDK导致服务启动不起来都无法知道出错信息,而使用第二种方式一旦出错它会告诉你兼容的JDK是哪个版本。
安装完Jenkins就可以通过浏览器访问它了:
http://192.168.10.106:9090/
它是长这个样子的:
安装了Jenkins后还得安装后面用到的插件。安装插件有两种方式:
1.批量安装模式:将已有的Jenkins的安装目录下的plugins文件夹下的文件都拷贝到新安装的Jenkins的安装目录。网上也有Jenkins的插件压缩包下载。从网上下载插件压缩包,然后拷贝到Jenkins的安装目录下的plugins文件夹(Java命令运行war包的方式的是在C:\Users\username.jenkins\plugins, username就是之前安装Jenkins所用到的系统用户名)。这个是批量安装Jenkins插件的方式。
2.单个插件安装模式。就是从Jenkins官网上下载对应的插件文件然后上转到Jenkins上部署。比如我要安装一个msbuild的插件,就在官网上下载一个msbuild.hpi(用到msbuild工具都需要安装这个插件)。
然后打开Jenkins网址:http://192.168.10.106:9090/
选择Manage Jenkins:
然后选择Manage Plugins:
再上传msbuild插件:
Jenkins的使用
如上所述,我们使用Jenkins主要是为特定的软件创建一个持续构建的项目。
首先要确保持续构建的机器必须安装有完整的代码检出工具和编译环境。这次我们用到的git和VisualStudio2017就必须安装好。
其次为Jenkins的全局工具进行配置。主要是两种:代码检出工具和代码编译工具。代码检出工具现在主要用git,代码编译工具主要用msbuild (编译VisualStudio的VC工程和C#工程都需要用到msbuild)。
选择Manage Jenkins:
选择Global Tool Configuaation:
设置Git的路径:
设置msbuild的路径:
注意,这里可以项目的需要添加多个msbuild,比如一个软件既要VS2017编译也要VS2019编译,就可以添加多个msbuild了。
完成了全局工具设置后就可以创建持续构建项目了。
单击首页面板上的New Item,如下图:
输入项目名称:
输入项目描述:
设置git仓库地址:
在上图的Credentials中选择Jenkins输入git仓库的账户和密码,如下图:
选择代码签出的本地目录:
设置编译环境:
最后点击保存按钮:
现在可以运行这个持续构建项目了,单击面板中build now按钮,如下:
这时产生一个进度条:
单击进度条可以在网页上看到控制台输出,如下图:
Jenkins的后续使用设想
1.后续需要补上解算解码接口的自动化测试、软件打包步骤、软件发送到共享文件夹和代码质量检查等。这个取决于业务需要。
2.Jenkins的构建触发条件可以是有代码提交就触发构建以及每日定时构建。提交代码就触发构建好处是可以随时检查提交的代码是否能编译通过。每日定时构建简称每日构建,就是将每天提交的代码都编译成一个软件测试版本,适合于每天都有代码提交的软件。需要给不同的软件选择不同的触发条件。
版权归原作者 clever101 所有, 如有侵权,请联系我们删除。