在开发的时候,每一个版本结束之后都要将工程代码打包成ipa文件,然后分发给测试团队进行测试,每次改一个小bug都要打一次包,实在是效率太低了,为了解决这个问题,于是想通过配置jenkins与蒲公英平台实现全自动的打包化,从此之后开发人员就不用再关注打包这种繁琐而没有意义的事情上,可以更专心的开发工作,最终要实现以下目标:
当开发人员将代码改好上传到svn或者git仓库管理器上之后,jenkins会自动的去查询是否有代码的改动,如果代码有改动就会将目标工程进行打包,打包之后再将包文件上传到蒲公英平台,再通过邮件的形式告知所有测试人员,邮件中包含蒲公英的下载链接,点击便可安装,这样一来开发人员就不必去关心打包工作,只需要将修改的代码上传到svn或者git就好。

主要步骤:

1 jenkins的安装

有两种方法来安装jenkins,分别是:
方式1: 通过去官网下载pkg包安装;
方式2: 通过homeBrew命令行安装:

brew install jenkins

通过两种方式安装有几点不同:
1 安装的目录不一样;
2 卸载的方式不一样,如果是方式一安装的则需要到目录下找到uninstall程序点击卸载,如果方式2安装的则直接在命令行执行:

brew uninstall jenkins

极力推荐第二种方式,方便快捷。

在安装过程中按照提示一步一步执行便可;成功之后,直接在浏览器地址栏中输入:localhost:8080即可;
第一次进入的时候需要设置账号密码之类的信息,设置完成之后便可以通过账号密码登录进去。

如果需要退出jenkins直接在端口后面添加exit,重启添加restart,重新加载reload;

2 Fastlane

是一套使用Ruby写的自动化工具集,目的是为了简化安卓与IOS的部署过程,自动化工作流。

1 安装xcode命令行工具

xcode-select --install

如果是直接在mac上使用了xcode工程的话一般都是默认装好的,就可以直接进行第二步;

2 安装Fastlane

sudo gem install fastlane -NV 或者 brew cask install fastlane

建议使用gem安装,安装执行

fastlane --version

便可确认是否安装完成和当前使用的版本号。不过在这个过程中可能会遇到一些问题,比如JDK版本过高或者过低,此时就要下载对应的版本下载,总之遇到具体问题具体分析,通常看到提示都是能够解决的。

3 初始化fastlane
通过终端命令cd+目录,直接跳到工程目录,执行:

fastlane init

成功之后工程文件中会多出几个文件,如下图:

其中Fastfile则是我们应该操作的文件,在文件中编写:

platform :ios dodesc "Description of what the lane does"lane :custom_lane do# add actions here: https://docs.fastlane.tools/actionsendlane :beta dobuild_app(export_method: "ad-hoc")pgyer(api_key: "f9467c727eb065b322341c6c49f22aac", user_key: "fa31dbf8cd6bcc6ef0d6c1b01bce1788")end
end

其中ad-hoc指的是包的格式,同时还设置了蒲公英的api_key和user_key,这两个值直接到蒲公英官网实名注册一下就可以获得了。

在执行beta do都命令时可能会经历很多次失败,但是不要放弃,从log中寻找失败的原因,然后再一步一步的解决这个问题,可能是因为没添加证书,插件版本过低等,耐心的一个一个解决即可。

想要上传到蒲公英还需要安装它的插件,执行命令行:

fastlane add_plugin pgyer

为了避免每次新建项目都要执行fastlane init命令,可以将固定的几个文件和工程文件一起上传到svn中,这样一来就不用每次都执行fastlane init命令了。

3 配置jenkins

基础工作基本已经搭建完成之后,就要进行实际的操作了,登录到localhost:8080

1 新建一个任务,选择自由风格的软件项目即可;

2 进入系统管理-系统设置

通过全局属性中的环境变量,设置好将来可以接受邮件的邮箱地址和将来工程的目录地址,这里可以设置很多参数,只要是在多处用到的都可以在这里设置。

设置好系统管理员的邮件地址,这里要注意一个问题就是,如果是qq邮箱的话可能会遇到第三方的授权码问题,那么此时简单的设置邮箱密码是不能够发送邮件成功的。

这里设置好发送邮件和密码,也就是发件人的账户密码,而且必须正确,不然会发送邮件失败,不同的邮箱都要不同的STMP server,具体问题具体分析,此处是163的,所以设置smtp.163.com即可。

系统配置到这里就差不都了,不过这里的东西很多,我只是简单的配置了一下,如果要想实现更复杂的功能就要配置更多了,以后有机会可以更详细的研究一下。

4 配置我的任务

进入我的任务-配置

因为我使用的是svn,所以选择subversion,Repository URL是svn上对应项目的地址,选择svn-Edit-Copy URL复制出工程的地址,Credentials是svn获取代码的账户与密码,也必须正确才行,不然拉取不到代码。

通过轮训来检查svn对应工程的代码是否有改变,如果有改变就执行构建动作,H/3….表示三分钟检查一次,具体格式可以点击右侧的问号查询。

执行终端命令行,首选cd到具体工程目录下,然后执行fastlane beta命令,直接执行先前设置好的打包成具体格式,如ad-hoc类型的包,然后上传到蒲公英平台上去。

最后便是构建后操作,此处可以设置构建后的具体操作,可以通过邮件的形式将结果发送给具体的人员,比如成功之后便可以将成功格式的数据发送给开发和测试人员,失败之后便只将结果发送给开发人员等等,这里的设置很多,扩展性也很大,看自己的需求了。

邮件的内容需要自己编写,此处选择的是html格式,如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${PROJECT_NAME}-第${BUILD_NUMBER}次构建日志</title>
</head>  <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"  offset="0">  <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">  <tr>  <td>(本邮件是程序自动下发的,请勿回复!)</td>  </tr>  <tr>  <td><h2>  <font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>  </h2></td>  </tr><tr><td><h4>  <font color="#0000FF">内网测试安装地址:http://www.pgyer.com/pxw_ios_inner</font>  </h4></td>  </tr>
<tr><td><h4>  <font color="#0000FF">iOS用户版V5.11.1 .ipa文件SVN目录: svn://192.168.1.200/ios/xw-ios-ipa/xw-customer-ipa/V5.11.1</font>  </h4></td>  </tr>  <tr>  <td><br />  <b><font color="#0B610B">构建信息</font></b>  <hr size="2" width="100%" align="center" /></td>  </tr>  <tr>  <td>  <ul>  <li>项目名称 : ${PROJECT_NAME}</li>  <li>构建编号 : 第${BUILD_NUMBER}次构建</li>  <li>SVN版本 : ${SVN_REVISION}</li>  <li>触发原因: ${CAUSE}</li>  <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>  <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>  <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>  <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>  </ul>  </td>  </tr>  <tr>  <td><b><font color="#0B610B">Changes Since Last  Successful Build:</font></b>  <hr size="2" width="100%" align="center" /></td>  </tr>  <tr>  <td>  <ul>  <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>  </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="    %p"}  </td>  </tr>  <tr>  <td><b>Test Informations</b>  <hr size="2" width="100%" align="center" /></td>  </tr>  <tr>  <td><pre  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">Total:${TEST_COUNTS,var="total"},Pass:${TEST_COUNTS,var="pass"},Failed:${TEST_COUNTS,var="fail"},Skiped:${TEST_COUNTS,var="skip"}</pre>  <br /></td>  </tr>  <tr>  <td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>  <hr size="2" width="100%" align="center" /></td>  </tr>  <tr>  <td><textarea cols="80" rows="30" readonly="readonly"  style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>  </td>  </tr>  </table>
</body>
</html>  

在邮件中通过蒲公英的网址通过二维码扫描便可以下载app进行安装了。

至此,jenkins的配置也算是基本完成了,不过这些只是很简单的配置,如果想要实现更多功能则需要更深入的研究了,在整个过程中每一步都有可能遇到问题,此时不要放弃,耐心的查找问题的来源和解决方案,到最后一定可以成功的。

如何利用jenkins与蒲公英实现全面自动化打包相关推荐

  1. Jenkins+Gradle+Python进行Android自动化打包

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.本文要讲的内容是通过Jenkins进行Andr ...

  2. Windows10windows server 2012r2作为slave 用jenkins部署微信小程序自动化打包

    背景 微信小程序的测试发布在没有 CI/CD 等相关工具的情况下,存在着如下的问题: 小程序开发助手中,同一个开发者只能显示一个开发版本 测试同事.产品经理.UI设计师找开发要二维码,或者本地拉取代码 ...

  3. 利用Jenkins实现JavaWeb项目的自动化部署

    修改代码,打包,上传,重启... 大把的时间花费在这些重复无味的工作上.笔者与当前主流的价值观保持一致:我们应该把时间花费在更有意义的事情上.我们可以尝试借助一些工具,让这些重复机械的工作交给计算机去 ...

  4. jenkins+Xcode+蒲公英实现ipa自动打包发布全攻略

    http://www.jianshu.com/p/ed124917d6c6 蒲公英:https://www.pgyer.com/udid/ 一步快速获取 iOS 设备的 UDID 请使用 iPhone ...

  5. Android jenkins 自动化打包

    前言:前段时间因项目需要捣拾了一下Jenkins自动化打包,过程中遇到了很多的坑,在此记录一下.因为这篇博客是之后写的,所以有些具体的坑就不能回显了. 一,实现的功能 选择版本号,git 分支,渠道, ...

  6. Xcode + cocoapods + jenkins + fastlane + git + 蒲公英自动化打包 上传

    Xcode + cocoapods + jenkins + fastlane + git + 蒲公英自动化打包 上传 构建自动化步骤为: 1. Xcode 有Xcode 内部提供的打包命令来打包完成代 ...

  7. Java利用jenkins做项目的自动化部署

    本地的jekins密码 2722e8ea873b4cf08884c22dff732bab 这篇文章主要介绍了Java利用jenkins做项目的自动化部署,小编觉得挺不错的,现在分享给大家,也给大家做个 ...

  8. android自动发布,Jenkins + Android 自动化打包 发布到蒲公英

    写在前面 近期Android的小伙伴们也开始要发测试版本了,由于之前搭建了Jenkins + fastlane自动化打包iOS应用 ,所以这次就想一起解决Android的问题 最先想到的方案当然就是跟 ...

  9. Android Jenkins + gradle 实现自动化打包流程并上传至蒲公英平台全过程

    最近在windows上尝试了jenkins持续集成环境搭建,把自己的写的app进行了自动化打包上传的一套流程,下面把我的经验分享给大家. 本文大纲: 说明:本文以windows为例 环境准备 jenk ...

最新文章

  1. python 定制类
  2. 灵光一现的创造——霍夫曼编码
  3. 【深入浅出WF】——令牌环的变身—书签
  4. centos7 zookeeper3.5.6单点部署
  5. abstract类中可以有private的成员_C++|static成员与单例模式
  6. python-turtle库-01
  7. Markdown绘制UML图
  8. 常用代码块:java使用系统浏览器打开url
  9. [bzoj2190][SDOI2008]仪仗队
  10. springzuul本地路由和跨服务器路由问题
  11. android js桥接,一种JavaScript和原生APP之间数据交互方法与流程
  12. 本特利3500软件组态指导
  13. Unity资源替换工具,旧模型替换新模型,替换GUID,替换meta文件,文件丢失等问题
  14. eric python mysql_joson 、python和mysql的使用
  15. 计算机如何安装cpu风扇,新手装电脑入门二:手把手学习如何安装CPU及散热风扇...
  16. C++:设计模式之命令模式(例子)
  17. 内网穿透工具(永久免费、永不限速、开源)、一键启动、页面操作(支持window,mac),自定义二级域名
  18. 建立arm linux运行环境,构建 arm-linux 仿真运行环境 (skyeye + arm-linux + NFS)
  19. 消费者洞察:数据化闭环洞察消费者
  20. el-popover的使用

热门文章

  1. apkparser.php类部分apk读不出来,使用composer构建PHP框架之引入apk包解析类库(八)
  2. 关于WAS的Log和Diagnose
  3. 中班有关夏天社会教案
  4. 王者服务器正在维护中是什么意思,王者营地转移系统维护中是什么意思
  5. Android最新开源框架大全
  6. mac osx下配置apache
  7. c语言日历软件下载显示农历的,系统时间显示农历(KClock)
  8. RTSP 协议分析 (一)
  9. 什么是MVC?什么是三层架构?
  10. onDestroy 延时10s调用