项目开发笔记(十四)
最近几个月发生很多的事(工作之外),很多很多的事。工作上比较重要的事情还是需要好好记录,接下来说说Jenkins的配置流程(拖了几个月了其实),Jenkins在工作中给予我很大的帮助,到今天为止 Jenkins 已经帮我打包了200+个版本。每打包一个版本就相当于节省我20分钟的人力时间和沟通时间。自从有了Jenkins,我和公司的测试策划基本零交流,什么时候版本出来了一个邮件自动发送到他们的邮箱中。接下来他们爱测不测我不管。
我配置 Jenkins 的基本信息
- 工具信息 Download - https://jenkins.io/ Version - 2.32.2 OS - Win1064 desktop - 项目信息 version - Unity534 OS - PC/Android/iOS
下载Jenkins的时候请注意有两个版本Long-term Support (LTS)和Weekly,我们普通玩家就下载Long-term Support (LTS)即可。
安装Jenkins
如下图,需要注意的一点就是必须找到安装文件中的initialAdminPassword填写后方可继续。
安装插件
Jenkins提供了各种丰富的插件,但是必须用户自己安装,安装插件过程中可能需要翻墙。列出几个必须的插件:
- Publish Over FTP Plugin(自动上传版本)
- Email Extension Plugin(自动发送邮件)
- Subversion Plug-in(源码管理)
- Git plugin(源码管理)
以上四个插件 是我用得比较多的,或者说是必备的,当然如果服务器是linux的话 还可能需要一个ssh插件,在这个地方你可以找到官方提供的全部插件 – 传送门
如果在插件安装页面没找到Publish Over FTP Plugin,不用紧张,先把其他安装好了,然后启动Jenkins,再去 系统管理-管理插件-可选插件 中找到它,然后直接安装即可。其他插件也是一样的。
插件配置
这是最重要的部分,jenkins本身最强大的地方,在于拥有各种插件,这让我很想了解它的项目结构呢。
首先随意创建一个项目就叫JProject好了,我们随意选择一个风格。
0x00. 源码管理
这里可以进行代码仓库设置,例如我的SVN
上图中 Repository URL 表示的是仓库链接。
上图中 Credentials 表示的是账号密码。
上图中 Local module directory 表示的是checkout到本地的文件夹名字。
0x01. 构建触发器
触发器,就是定时器,如果配置了定时器,则Jenkins会按照你配置的规则定时打包,例如我们让它每天早上9点打包一次,如下图的配置
第一行 表示 每天9点帮打包一次
第二行 表示 每天16点帮打包一次
第三行 表示 每天20点打包一次
如果还需要更详细的定时器 可以去了解一下具体的语法。甚至可以配置在某天的某个时间执行构建打包。
0x02. 构建环境
这里主要设置一些构建之前的工作,可以把 Delete workspace before build starts 选上,这样每次构建都会清空工作文件夹,就是上面所说的 Local module directory。
0x03. 构建
这一步是构建版本的关键,Jenkins只是一个协助工具,他并不能真正的帮你编辑代码,编译代码还是要借助编译器来做,但是Jenkins可以让你配置执行 bat 执行Shell 执行ANT等等,那就足够了。例如我的项目是通过bat脚本便宜C#项目代码的,那么我仅需要配置一下Jenkins让他执行一个bat脚本即可。
如图所示,第一步 我执行 BuildDll.bat 去编译项目逻辑代码,第二步 我执行 APK_Jenkins.bat 去打包Unity项目生成APK文件。
如何通过bat脚本编译打包Unity项目,我们下篇分解。
0x04. 构建后操作
构建后,一般这个步骤就代表已经打包完毕了,可以发版本了。我们通过什么方式发呢?我设计了两个步骤:
- 邮件通知所有项目参与者
这一步需要设置邮件插件,需要设置几个地方:
第一个是 系统管理-系统设置-Extended E-mail Notification
第二个是 系统管理-系统设置-邮件通知
第三个是 你建的项目里-构建后操作-E-mail Notification
如果在构建成功后要发送邮件给大家,则需配置触发器
在这里可以自定义邮件的各种信息,包括标题,内容,收信人等等。这里邮箱服务器的配置需要特别注意,密码并不是填真正的密码,而是邮箱的转发授权码,拿QQ邮箱来说,这个授权码如下获取:
进入QQ邮箱网页版-设置-帐户-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务-生成授权码,同时在 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 项中需要确保开启 POP3/SMTP服务。
- 把版本通过ftp上传到指定位置,让大家去拿(这个步骤可以更丰富,例如把apk或者ipa文件自动上传到蒲公英等分发平台,测试同学打开链接自动安装)
如图
系统管理-系统设置-Publish over FTP中设置,如果找不到Publish over FTP,说明没有安装在这个插件,按前文所说的方式安装即可。安装插件可能需要翻墙哟。
项目-构建后操作-中设置
一个FTP Publishers下可以设置N个FTP Server,一个下可以设置N个Transfers,在这个Transfers中值得注意的地方是:
Source files 指源文件,就是你要上传什么东西到服务器,我这里直接用星号,代表上传这个文件夹下的所有东西
Remove prefix 代表上传到服务器后 忽略的文件夹路径,例如我这里的 :
源文件:v1.0.0/APP/Android/Release/
忽略文件夹:v1.0.0/APP/Android
那么FTP插件就会根据FTP服务器上是否有Release文件夹,如果没有则创建,有则直接把文件上传到这个地方,而不是上传到 v1.0.0/APP/Android/Release/,路径v1.0.0/APP/Android被忽略了。
- 全部操作完毕后,清理现场
如图
勾选如图中的选项之后,每次完成版本发布,就会清理现场,删除一切文件。这是最干净的方式,防止文件干扰下次构建。如果构建不成功怎么办?放心 构建不成功Jinkens会发一封邮件给你(注册账号输入的那个邮箱) 然后暂停构建保留现场的。
0x05. 环境变量配置
在系统设置中,可以设置各种全局变量,例如安卓SDK路径的配置:
其他工具的路径配置也是一样的。
Jinkens配置暂时说到这里。下一篇说一说脚本编译和打包Unity工程项目(囊括所有平台)。
-EOF-
再推荐几个常用Jenkins plug-in如下:
“Extended Choice Parameter plugin”,“HTML Publisher Plugin”,“EnvInject Plugin”,“Build User Vars Plugin”,“Build Name Setter Plugin”.
另外,既然做了自动化编译,干脆把自动化测试丢进去咯,手机上的自动化测试库实在太多了,Monkey测健壮,Appium模拟测UI逻辑,CppUnit测单元,PC上的自动化测试QTP,AutoIT也可以尝试找下手机版。
然后,绑个Jira,连整个fix bug流程都顺道搞了。
话说……好久没看到QQ的邮箱了…………好诡异的感觉。
附带,最近弄了段MONO的东西,感觉确实很不错。对C#越来越有爱了,但是Unity还是有不少点让我不满。
我看下情况,必要的时候改个私有版的Unity用下。
got it!