Jenkins + fastLane iOS自动化打包

公司开始让使用自动打包,一方面使用xcode打包太浪费时间,还要时刻关注打包的进度进行上传发布等等。搞了两天终于完成了打包。下面我写一个教程,防止大家踩坑。

一. 安装Jenkins##

  1. 使用brew安装Jenkins
    $ brew install Jenkins
    此处我是碰到一个坑,brew报错: depth 0: certificate has expired (10)
    解决办法:
    (1).查看当前镜像环境 $ gem sources -l
    (2).移除淘宝镜像: $ gem sources --remove https://rubygems.org/
    (3).添加ruby-chian镜像:$ gem sources --add [https://gems.ruby-china.com/] (https://gems.ruby-china.com/)
  1. 运行Jenkins
    $ jenkins
  1. 配置Jenkins
    在浏览器输入 http://localhost:8080/ 就能看到Jenkins运行起来了
    刚开始Jenkins会让输入一个密码我们cd到红色字体的路径下面打开文件就能看到密码了
    image.png

    然后复制密码填进去就可以进入到下面这个界面了,接下来安装一些建议的插件,我们点击左边的按钮,等待把所有的插件都安装好(ps: 如果有的没有安装成功,强烈建议点击右下角的重试,直到把建议安装的都装好)
    image.png

    下面是安装界面
    image.png

    等待进度条走完之后,页面会自动跳转(如果没有跳转手动刷新下界面就行了)
    然后进入设置管理员账号密码的界面
    image.png

二. 配置 Jenkins##

  1. 安装插件
    Keychains and Provisioning Profiles Management(管理本地的keychain和iOS证书的插件)
    点击管理Jenkins -> 管理插件
    image.png

    在可选插件中搜索 Keychains and Provisioning Profiles Management 勾选安装(ps: 因为我已经安装过了,所以我的在已安装一栏中)
image.png
  1. 配置Keychains and Provisioning Profiles Management

在Manage Jenkins 中点击 Keychains and Provisioning Profiles Management


image.png

点击:选取文件->Upload->保存
依次将Jenkins所在的机器的login.keychain(/Users/管理员用户名/Library/keychains/login.keychain-db 复制一份改名成成login.keychain)上传保存
选择上传Profiles 文件


image.png

文件路径

/Users/apple/Library/MobileDevice/Provisioning Profiles/
这个一定要选对,如果选择错误,在打包的时候就会报签名有问题如果实在不知道是哪一个,可以先全都删除


image.png

然后在Xcode里面重新下载


image.png

image.png

选择你的配置文件
然后文件夹下面那个你添加的配置文件就是你需要选择的
选择完成后 保存就行了


image.png

三. 配置构建项目##

1.点击新建Item


image.png

2.然后点击第一个,创建一个自定义的项目,接下来就是配置Jenkins了

image.png

(1)接下来看自己需求,是否保留旧的构建、保持构建的天数和保持构建的最大个数(可以按自己的需要去选择填写)
image.png

(2)配置源码管理
SSH 验证方式: 因为我们公司是企业github所以用https 账号密码登录会报错,我这里选择使用SSH验证
复制项目链接(SSH链接)到 Repository URL
image.png

在 Credentials 点击添加,选择 SSH Username with private key
在红色框里添加你的SSH私钥(是私钥,不是公钥),因为公钥你是添加到github上了,只有私钥才有权限访问你的github
image.png

用户名密码方式
复制项目链接(HTTS链接)到 Repository URL
在 Credentials 点击添加,选择 Username with password
然后填写你的github的用户名和密码,点击添加就可以了
image.png

在指定分支填写你的分支名(这个我设置了,但是打包的时候还是会根据当前分支去打,可能是用fastlane执行打包命令的原因)填写源码库浏览器和项目URL
image.png

(3)构建触发器 也就是自动打包时间间隔
我这里选择的 Poll SCM 然后在日程表中添加时间间隔
我这里填写的是H 20 * * 这个意思就是H小时然后,后面跟着数字,在后面就是日月年,代表的我认为是每次都触发,也就是每天每月每年,但是Jenkins的时间不是绝对的,一般都是在随机在半点,也就是设置20点,大概会在20:30分左右会触发,如果需要两个时间,那么格式可以这样H 20,22 * * *
这里参考(作者:Alanxx)
image.png

(4)构建环境
选择 Keychains and Code Signing Identities
下面自动填充了,不用管
image.png

然后选择 Mobile Provisoning Profiles 红色框里选择刚才在配置 Keychains and Provisioning Profiles Management 中添加的配置文件
image.png

(5)构建
然后配置timeout minutes(构建超时时间)这个一定要写大一些,我原先是默认的3分钟,一直提示超时,打包比较慢的话配置的时间短会报超时
image.png

这些都完成之后我们就要写构建脚本了,我们选择 Execute shell 脚本
image.png

暂时保存接下来我们配置 fastlane

四. 安装配置fastlane##

确认是否安装ruby,版本号要大于2.0。如未安装,移步百度
$ ruby -v

确认是否安装Xcode命令行工具
$ xcode-select --install

如出现xcode-select: error: command line tools are already installed, use "Software Update" to install updates则已安装,否则会出现提示框,点击安装即可。

安装fastlane
sudo gem install fastlane

cd 进入工程根目录 ,执行命令
$ fastlane init

会出现四个选项供你选择

1.自动截屏。这个功能能帮我们自动截取APP中的截图,并添加手机边框(如果需要的话)
2.自动发布beta版本用于TestFlight
3.自动发布到AppStore
4.手动管理设置


image.png

我们选择4

全部完成后我们打开生成的fastlane文件夹下的Fastfile

填写打包脚本


platform :ios do
  desc "Description of what the lane does"

  before_all do
    # faselane中pod install的操作
    # cocoapods
  end
#-----------------------------------------------------------------------DEV配置
  lane :development_build do|options|
    currentTime = Time.new.strftime("%Y-%m-%d %H: %m: %S")
    gym(
     scheme:"app",
     configuration: "Release", #Release 或者 debug
     clean:true, #清除上次构建
     project:"app.xcodeproj", # 项目入口文件名 如果是工作控件请换成:workspace: "xxx. workspace"
     export_method:"development",  #打包的类型 ad-hoc 或者App Store等
     output_directory:"/Users/apple/Desktop/Dev_GuildChat#{currentTime}", #打包输出路径 我写的是时间,防止文件夹生成相同报错
     output_name:"Dev_GuildChat" #生成的ipa文件名
    )
    firim(firim_api_token: "9b02ebfcfc17ded9410d046472c76d04")  # token 在fir 上查看。  end

end

end

添加插件
我们是用fir上传,需要添加fir插件
gem 'fastlane-plugin-firim'
然后配置就算完成了

五. 配置Jenkins 脚本##

打开刚才的Jenkins配置页面
解释下下面的命令的意思
cd 到ios项目的根目录
然后执行fastlane 命令
development_build和fastfire文件中的 lane :development_build 名字要保持相同
然后保存


image.png

然后执行点击build now,等待执行结果


image.png

执行成功了之后会有下面的日志输出,然后就去导出文件夹和fir上查看结果吧


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355

推荐阅读更多精彩内容