使用初衷

公司产品版本比较多,很多版本都需要独立化部署。导致产生了每个地址需要打包,每次打包就是一件麻烦的事情,常常一下午的时间过去了却都浪费在打包这件事情上了。So…研究了下Fastlane+Jenkins+蒲公英。可以方便的发布和管理版本。爬了很多坑。写出来让大家参考下。

蒲公英也可以用fir.im代替,后续也可以持续集成webhook机器人,邮件等通知推送。

方案选择

方案很多种,看自己情况选择。

1、利用空闲苹果电脑做服务器,跑Jenkins用来自动监听,只要git合并上传,就自动打包。

2、本地安装jerkins(不建议)。

3、本地主动触发/利用Alfred编写插件执行流程。

基础名词

  • Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言

  • RVM是一个命令行工具,它允许您轻松地安装,管理和使用从解释器到多组gems多个ruby环境。

  • Gems RubyGems简称gems,是一个用于对 Ruby组件进行打包的 Ruby 打包系统。例如经常用的cocoapods就需要 gem 来管理。

  • Fastlane是Felix Krause大神写的fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包、发布等工作。

  • pgyer/fir 第三方发布测试平台。

爬坑攻略

如果你在安装期间想很顺利的话,请务必按照步骤去做,本教程只针对Mac。

此文档是二次更新的,因为第一次写的时候,就根据安装记录写出来了,第二次在别的机器上部署的时候,就出现了各种问题,所以就有了这次的更新内容。

Ruby处理

使用Mac的小伙伴都应该能感受OSX的好处,本人对Mac中毒很深,要是让我说一点什么不好的话,就是价格太高。

各种环境,系统都自带了ruby,python等等,且不会出现全家桶的问候。

Mac系统自带ruby,但是是给系统自己使用,权限很小,所以在平时使用过程中,会出现很多问题,而且版本一般都比较低,所以大多人都在自己使用RVM来管理自己使用的ruby.

参照此文档来安装 RVM使用ruby 使用RVM来管理rubyhttps://www.jianshu.com/p/c44ef74d99f9

ruby安装完成之后,来进行下一步。

Fastlane 安装初始化

  • 确保你已经安装了最新版本的Xcode命令行工具:
xcode-select --install

下方图片是已经安装则不用处理。

  • 官方文档支持三种方式安装,我使用的是ruby,刚才不是使用RVM来管理自己的ruby 么,接下来我们来安装fastlane

    gem install fastlane -NV

方法 os支持 描述
Homebrew 苹果系统 brew cask install fastlane
安装程序脚本 苹果系统 下载zip文件。然后双击install脚本(或在终端窗口中运行)。
RubyGems 带有Ruby版本> 2.0.0 gem install fastlane -NV

如果使用的是系统自带的ruby,可能会报错没有权限。

ERROR:  While executing gem ... (Gem::FilePermissionError)    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.ERROR:  While executing gem ... (Gem::FilePermissionError)    You don't have write permissions for the /usr/bin directory.

查看自己是否使用的是自己管理的ruby

 which ruby> 返回/Users/seven/.rvm/rubies/ruby-2.4.1/bin/ruby> 则说明已经使用RVM管理的Ruby了,非系统自带的。> 如果是usr/bin这个目录下的则说明还在使用系统自带的,可能会出现一系列权限的问题,请更换。

如果你非要使用系统自带的,也可以,也可能出现问题,也可能没事,跟系统版本也有关系,

下面给出系统自带问题的一些些方法。如跟我一样使用非系统自带ruby,请跳过此步骤。

> 方法一:sudo gem install fastlane -NV //提升权限,部分系统权限还是不够。> 方法二:安装到别的目录使用指定目录安装: sudo gem install -n /usr/local/bin fastlane> 方法三:还是使用RVM管理ruby
  • 初始化

安装完毕后,在终端进入到你的项目目录下。初始化fastlane

fastlane init

如果没有报错,就跳过此条继续报错Exit status of command ‘bundle exec pod install’ was 1 instead of 0. bundler: failed to load command: pod (/usr/local/bin/pod)解决方法:在项目根目录下 fastlane/Fastfile 修改文件中的cocoapods’ cocoapods(use_bundle_exec: false)’

这4个选项意思分别是:

  • 自动截屏。

  • 自动发布beta版本用于TestFlight。

  • 自动的App Store发布包。我们的目标是要提交审核到APP Store,按道理应该选这个,但这里我们先不选,因为选择了以后会需要输入用户名密码,以及下载meta信息,需要花费一定时间,这些数据我们可以后期进行配置。

  • 手动设置。(推荐)

如果选择了3 会提示让你输入账号(我选择手动配置)

按照提示输入开发者账号(付费账号) 输入Bundle Identifier 用于初始化配置,后期可在配置文件改。随便输入根据提供的信息,fastlane会自动为您生成一个配置。

您可以看到新创建的./fastlane目录,包含Appfile和Fastfile文件。

最有趣的文件是fastlane/Fastfile,其中包含分发您的应用程序所需的所有信息。

这样就完成了初始化

蒲公英插件安装

初始化完毕后直接在终端输入

//fastlane fastlane search_plugins//列出可用插件fastlane add_plugin pgyer//安装插件

插件安装成功./fastlane目录下会生成Pluginfile的一个文件。插件安装不成功,就是fastlane安装的有问题。

配置Fastlane


文件名 描述
Appfile 从 Apple Developer Portal 获取和项目相关的信息 详情
Fastfile 核心文件,存放lane任务
Deliverfile deliver的配置文件,从 iTunes Connect 获取和项目相关的信息详细
metadata 同步iTC中的元数据
screenshots 同步iTC中的截图

fastlane工具集是配置fastlane最重要的

文件名 描述
match 证书和配置文件管理工具会重置证书,推荐新项目使用。

ios持续化集成-fastlane+jenkins+蒲公英+alfred+Webhook通知企业微信相关推荐

  1. 如何搭建安卓开发持续化集成环境(Ubuntu + Jenkins + SonarQube)

    本文讲的是如何搭建安卓开发持续化集成环境(Ubuntu + Jenkins + SonarQube), 我最近换了一台新的 MacBook Pro 作为我的 Android 开发机.旧的 Mac Bo ...

  2. 撸一套持续化集成-实现RN的差分更新

    目录 一.搭建Jenkins环境 1. 下载Jenkins镜像 2. 开启Jenkins服务 3. Docker填坑 4. Jenkins填坑 二.RN的Jenkins打包脚本 1. Jenkinsf ...

  3. 第七章 移动自动化持续化集成(下)

    --------手机自动化之Appium (4)增加构建步骤,这是如何执行我们项目工程的命令,如:python src/TestSuites/OnlineTestSuite.py.构建的时候就会执行这 ...

  4. [原创]如何用CruiseControl.Net来进行持续化集成

    注:本文属jillzhang  原创,转载请注明出处 ,欢迎访问http://jillzhang.cnblogs.com/来获取最新更新 本文的目的: 本文总结了过去一年中使用CruiseContro ...

  5. Devops持续化集成

    Author: Devon -Email: devon@gotobus.com jenkins+Sonarqube+Gitlab+pipeline 一.什么是Devops? DevOps 是开发和运维 ...

  6. docker 中安装Jenkins-Jenkins持续化集成(GIT/maven/钉钉机器人)详细步骤

    Dokcker 中jenkins容器配置发布连接应用服务器 docker安装jenkins 如:192.168.86.129服务器中docker 部署jenkins >> 1. 拉取镜像 ...

  7. jenkins使用python脚本发送企业微信通知

    如果只是想实现将jenkins的构建结果发送到企业微信进行通知,最简便的方式是安装Qy Wechat Notification Plugin插件,网上教程很多就不重复写了,可参考:https://ww ...

  8. 【DevOps】Jenkins:配置jenkins 流水线/多分支流水线任务构建成功通知企业微信@相关人

    目录 视频教程 需求说明 最终效果 实现过程 安装插件 编写shell 编写jenkinsfile 测试一下 视频教程 视频教程:https://edu.csdn.net/learn/38191/60 ...

  9. RobotFramework+jenkins持续化集成及高级操作API

    一:RobotFramework高级操作API 1.窗口跳转 案例:58租房:http://bj.58.com 登录58同城>>点击租房>>选择区域>>选择租金&g ...

  10. Docker+Jenkins+GIT+Tomcat实战持续化集成

    Docker基础教程可参考:容器Docker详解 Jenkins基础知识可参考:jenkins笔记(1) Git基础知识可参考:GIT笔记 文件脚本内容参考:junsansi,可以根据实际项目具体修改 ...

最新文章

  1. 12.8 线程和信号
  2. windows 安装tensorflow2.0
  3. linux删除mysql临时文件_linux下mysql自动备份数据库与自动删除临时文件_MySQL
  4. ElasticSearch优化系列二:机器设置(内存)
  5. 施工部署主要不包括_施工部署是什么?准备工作是什么?
  6. 计算相同维度向量之间的欧氏距离
  7. github本地库及clone常用命令
  8. Atitit hi dev eff topic by use dsl sql coll op 提升开发效率sql dsl查询内存集合列表 目录 1.1. Dsl api lib 1 1.2. R
  9. MySQL锁篇-⾏级锁
  10. 戴尔r330服务器怎么用u盘装系统,怎么用U盘装系统
  11. D*(Dynamic A*) 算法详细解析
  12. 【HTML——粒子 特效】
  13. ISP 和IAP 原理与区别
  14. 人工智能实验-动物识别系统
  15. 移动端网页录音上传,服务端智能语音识别
  16. Android设备硬件序列号(SN、串号)分析
  17. 国际赛事 中国魅力——天南铜都“中国东川泥石流国际汽车越野赛”
  18. 重庆顶味香手把手教你做重庆肥肠面!几个小妙招秒杀路边面馆
  19. MV3D:Multi-View 3D Object Detection Network for Autonomous Driving(翻译)
  20. 内网(本机)IP和外网(网络)ip区别

热门文章

  1. TCR历史论文多久能发表?
  2. mysql在子查询中使用自定义变量和条件语句实现函数效果的查询语句
  3. 1.8 30 分钟完成桌球小游戏项目
  4. Flutter 环境搭建遇到的坑
  5. 【2021最后一波官方福利】七天玩转Redis | 打卡还能领周边活动开始啦
  6. 新手都能用到的140个电脑技巧
  7. 【CST】贴片天线阵列设计
  8. Android 7.1 亮度调节之BrightnessController
  9. 学生信息系统课程设计java_Java课程设计——学生信息系统(团队)
  10. pyqt5标签中的字设置不同字体_PyQt5 控件字体样式等设置的实现