当前位置: 首页 > 科技观察

一个让程序员变懒的工具:Jenkins+Dandelion

时间:2023-03-22 14:09:15 科技观察

关于懒惰我经常看到很多博文说“懒惰”是优秀程序员的良好品质。充满了重复劳动。或许正是因为这个原因,大部分程序员逐渐变懒了,不变懒的慢慢灭绝了~~~。至于“懒”这个词,我们不能曲解它的意思。不是对工作的懒惰和压抑,而是当程序员遇到重复性的工作时,懒惰的程序员首先想到的就是我要开发一个工具来自动化这些工作。为什么需要工具当UI妹子给你一大堆图片都没有给你加@2x后缀,看着妹子那可怜巴巴的眼神,我怎么忍心让妹子返工,懒惰的程序员在想,我勒个去?重复劳动,何不写个脚本自动给每张图片的文件名加上@2x后缀,分分钟搞定,然后准时下班赴约。...所以很久以前,我的第一个开源工具dSYM分析工具就是这么来的。当我继续在命令行修改几个友盟统计,在后台收集异常时,发现这是一个重复且繁琐的劳动,于是我花了两个多小时做了一个APP应用,以至于每次需要做的:1)打开应用程序,2)拖入dSYM文件3)输入异常地址,获取异常信息。而写这篇文章描述了我是如何一步步从1)手动打包->2)Jenkins打包,手动发布->3)Jenkins打包+Dandelion分发。合约分发问题的起因相信是每一位程序员小哥心中挥之不去的痛,而测试妹子也在每次都立即发出的承诺中得出了一个结论:“你是个大骗子”。于是每次测试妹子追着我去测试包,产品经理说给我安装一个正在开发的新版本,后台小哥说给我安装一个旧版本的包,让我调试。..然后每次一定不要暂停手头的工作,切换到某个版本,Archive。...最后,有一次我答应试卷妹子吃饭前给她们包,结果忙到忘记直接去吃饭了。看到妹子QQ上各种鄙夷的表情。这不是我想要的生活。必须要改变在测试妹子心中的形象,所以自动化建设提上了日程。使用Jenkins半自动化,我直接选择了成熟的Jenkins持续集成方案。至于怎么配置,就不过多介绍了。网上多了少了这样的文章。有了Jenkins,对我来说最方便的就是每次打包的时候直接在公司的Mac服务器上运行,就可以继续搞下去了,把ipa包发给测试也教测试如何从Jenkins下载打包好的ipa文件,方便我随时在手机上打开公司内网的Jenkins包。当我把这一切都告诉测试妹子时,她用意料之中的眼神看着我说,“这是真的吗……”Jenkins+Dandelion升级已经用了一段时间没有任何问题。可能是比较折腾吧。我发现每次打包Jenkins的时候,还是需要手动下载,或者让测试人员下载。测试人员拿到文件后,需要将手机连接电脑,使用iTunes或第三方工具安装文件。我想让Jenkins在打包完成后自动通知测试人员更新安装。那就太好了,之前听说过“蒲公英”这个第三方分发平台,就去蒲公英网站查了一下。很高兴他们开放了上传应用、安装应用等API。有了这个东西,我的想法就可以完全实现了:1)Jenkins打包2)打包成功后,将IPA文件上传到Tomcat服务器3)将IPA文件通过API传给Dandelion4)上传后成功,安装地址通过邮件发送给测试。5)测试直接在手机上打开地址安装。流程图大致是这样的:1.上传IPA文件到Tomcat服务器。Jenkins每次打包时,编译后的文件都放在项目根目录下的build文件夹中。会被覆盖,所以每次构建后,我都会把IPA文件通过FTP上传到Tomcat备份,同时也可以方便的提供给其他人下载。比如在发送Dandelion的安装地址给测试时,也可以同时给出IPA的下载地址。*开启MacFTP-serverMac电脑本身支持FTP服务,但系统默认是关闭的。MountainTweaks是一款可以轻松修改一些系统设置的软件,比如是否启用和打开Window动画,是否显示用户的Library文件夹,其中一个选项是是否启用系统的FTP-server功能。*配置Jenkins的FTPServerMac服务器支持FTP-server后,我在Jenkins上安装了PublishOverFTPPlugin插件。该插件可以将指定的文件发送到选定的FTP服务器。安装插件后,在Jenkins系统的设置中会多出一个PublishoverFTP设置,因为Tomcat和Jenkins在同一台电脑上,所以Hostname直接指向本地,RemoteDirectory也直接指向到Tomcat的webapps下对应的app目录下。配置完成后,可以点击TestConfiguration进行测试。如果显示success,则表示成功。*在作业设置中指定要上传到FTP的文件。Jenkins配置好FTPServer后,需要在Job中设置打包成功后上传哪些文件到指定的FTPServer。在Addpost-buildoperationsteps中有一个SendbuildartifactsoverFTP选项,这里我们首先需要选择我们之前配置的FTPServer。源文件就是我们build目录下build文件夹下的所有文件。Remove前缀设置成build是为了告诉插件在创建路径的时候不要包含build。远程目录就是我们指定的FTPServer上需要创建的目录。这里我使用Jenkins构建的版本号来创建文件夹,后面取文件的时候,路径会很容易拼接。#p#2。通过API将IPA文件传递??给Dandelion。打包成功后,文件也备份到Tomcat中,接下来就是写脚本了。脚本需要的功能有:1)上传IPA文件到Dandelion2)发送Email通知测试。这两点很容易通过脚本实现,已经放在GitHub上了。如果想把脚本应用到自己的环境中,最重要的就是下面这几行代码:uKey、file_name、_api_key、installPassword这四个值根据自己的情况进行配置。project_name的值很重要,涉及到很多地方:1)tomcat的webapps目录下必须有project_name对应的目录,因为获取ipa_file_tomcat_http_url时需要project_name,获取发送给Dandelion的IPA文件时也需要project_name知道project_name后,需要让Jenkins执行脚本。搜索Jenkins插件后,找到了一个叫做Post-BuildScriptPlug-in的插件。官方对该功能的介绍非常明确:PostBuildScript使得在构建结束时执行一组脚本成为可能。安装这个插件后,在Job的post-build运行步骤中会有Executeasetofscripts的选项。这里我只在Build步骤中配置了Executeshell,让它使用Python编译器来执行项目根目录。下面的脚本,勾选Executescriptonlyifbuildsuccess:这样当Jenkins打包成功后,就会执行这个脚本,终于达到我的目的了。最终收到的邮件大概是这样的:如果用手机打开邮件,可以直接使用第三种方式:点我直接安装,这种方式最方便,其次是第二种方式,蒲公英在线安装,***一种是下载IPA包到本地,使用工具安装。在此之前构想的一切都已实现。整个过程从开发的角度来看,只需要在Jenkins中点击BuildNow按钮,然后继续手头的工作即可!综上所述,教科书以能不能制造工具作为人与动物的根本区别。我想这也是评判一个好程序员的标准之一。优秀的程序员总是会寻找好的工具,或者自己创造一些工具。为了提高生产效率,他们利用工具将浪费在重复性劳动上的时间花在更有意义的事情上。任何工具的最初目的都是为了提高生产力。幸运的是,iOS开发圈子里有一大批先行者。他们创造并开源了很多优秀的工具,为这个环境打下了良好的基础,所以在工作或者生活中,创造更多的工具,让自己变得更懒但更有价值!