Fastlane+蒲公英+Jenkins一键打包

这里主要记录下我自己在实现一键自动打包完整过程中遇到的一些问题,仅供参考

安装Fastlane及所需的其他工具

fastlane文档
1、安装ruby
2、安装xcode命令行工具,执行命令行

xcode-select --install

3、安装Fastlane,执行命令行

sudo gem install fastlane

我在这一步遇到了问题,报错无法安装Fastlane,提示ruby2.4之类的信息(当时忘了截图),我的ruby是很久以前安装的,看了下版本是2.3,于是乎升级到了2.4,可能我升级的方式不对,我升级之后mac里有两个ruby,一个2.3,一个新的2.4,然后把默认的ruby环境切到2.4版本这个,再安装Fastlane就可以了

查询已经安装的 ruby

rvm list

设置ruby的默认版本

rvm use 2.2.0 --default

rvm命令文档

4、安装Bundler,Bundler是管理Gem(管理Ruby库和程序的标准包)相依性的工具

sudo gem install bundler

这里需要注意一点的是,xcode的命令行工具,如果你电脑装了多个xcode,如果你需要用指定的xcode路径,要不用默认的xcode路径
可以切换路径 > sudo xcode-select -switch /Applications/Xcode10.1.app/其中“/Applications/Xcode10.1.app/”是xcode的路径,这里路径可以在xcode的偏好设置找到,如图所示:


11379581-2375fdaca1d1d1c4.png

Fastlane初始化

cd到你的工程目录,执行 fastlane init
会出现选择,这里选择4,手动管理,如图:

11379581-fd6d1a3ff6d613b8.png

选择4之后就执行完了,工程目录里多了fastlane目录和Gemfile

配置Appfile文件和Fastfile文件,安装蒲公英插件

因为我是要上传到到蒲公英的,所以这里我们先安装蒲公英的插件,执行命令行 fastlane add_plugin pgyer
这里我遇到的问题是 大概意思是说我电脑的上某个依赖工具无法直接安装Fastlane的蒲公英插件(忘记截图了),然后会有提示告诉你怎么做,我记得有4个选项,我选择配置蒲公英插件git地址的这个,选择之后,直接输入插件的git地址:https://github.com/shishirui/fastlane-plugin-pgyer.git 确认,之后fastlane目录会多一个Pluginfile文件
这里其实只是先配置了插件的下载地址,还没真正下载,要等第一次执行脚本打包时,Fastlane会去检查如果还没插件才去自动下载

下面这些文件的配置,都要通过终端修改保存,用vim filename就可以,不要直接打开文件修改,否则执行脚本会有莫名其妙的报错(没有截图,报错的形式大概是说脚本运行到某一行出错了,但也没说具体为啥出错)

配置Appfile文件
设置app_identifier和apple_id,app_identifier就是你的APP的Bundle identifier,apple_id是你的开发者账号

配置Appfile文件

配置Fastlane文件

default_platform(:ios)

platform :ios do
  desc "Description of what the lane does"
  lane :adhoc do
    # add actions here: https://docs.fastlane.tools/actions
  gym(
    configuration:"Release",
    clean:true,
    scheme: "demoname",   #工程下要打包的项目,如果一个工程有多个项目则用[项目1,项目2]
    export_method: "ad-hoc", #打包的方式, development/adhoc/enterprise/appstore
    output_directory: '/Users/yourname/Desktop/TestProject/ipa',  #指定ipa最后输出的目录
    )
  pgyer(api_key: "883834jsjkkd9399349394323", user_key: "239329dhdjdjdjd399393", update_description: "update by fastlane")
  end
end

复制上面的到fastlane文件,更改一下参数

    lane :adhoc  ----  adhoc名可以更改,最后用来执行打包脚本的命令;

    scheme:"MyAPP"  ----  MyAPP是你的项目名称,而不是APP名称;

    export_method:"enterprise"  ----  enterprise是打包的方式,我这里打的企业包,还有appstore, ad-        hoc, package, enterprise, development, developer-id;

    output_directory:"/Users/saj-king/Desktop/APP"  ---- 这里是导出打包路径;

    api_key  ---- 蒲公英的api_key;

    user_key  ---- 蒲公英的user_key;

    update_description  ---- 蒲公英的api更新描述;

蒲公英的key要到你蒲公英的账户下查找

执行脚本打包

cd到你的工程目录下,执行 fastlane adhoc ,adhoc对应你Fastlane文件中配置的 lane: adhoc do
打包过程需要时间,终端不断在刷新文件数据,最终如图表示打包成功导出并上传蒲公英成功:

打包上传成功啦

工程配置上遇到的问题:
我项目工程证书这块用的全自动模式,脚本打包选择的是adhoc,这样打包是日志会报错说因为找不到对应的证书,我是通过更改证书配置来解决的,Debug使用自动模式,Release是手动模式,默认选择了AdHoc的描述文件

温馨提示:如果有多个项目需要打包,直接拷贝 fastlane目录、Gemfile和Gemfile.lock文件 放在项目目录下,然后修改一下 Appfile和Fastfile文件 ,然后执行fastlane “XX”打包就行了,亲测有用!

到这里基本已经实现自动打包了,拉完代码,执行一行命令fastlane adhoc,但真正要实现一键打包,还得借助Jenkins,Jenkins做的事情是自动拉取代码并执行脚本

安装及配置Jenkins

安装Jenkins及Jenkins插件的步骤
偷个懒,大家直接见这个链接

我这里主要说下安装后的配置
1、首页点击新建,选择一个Freestyle的任务

创建Jenkins任务

2、点击刚创建的任务,然后再点击配置,然后看到如下图,Discard old builds这里默认是没有勾选的,可以勾上,参考我的配置,不是必要的
旧的构建任务的保留策略

3、源码管理配置,选择Git,输入git远程仓库的地址,我的是HTTP的地址,选择要拉取代码的分支,这时下面会有红色报错
屏幕快照 2020-06-30 下午10.50.19.png

这里要配置下Credentials,点击“添加”按钮
默认是Username with password类型,输入你用来拉取代码的用户名密码然后点击添加即可
屏幕快照 2020-06-30 下午11.04.43.png

也可以选择SSH Username 类型,随便输入一个Username,填写Private Key,怎么找这个私钥,前往文件夹 ~/.ssh/id_rsa,打开这个文件,复制里面的所有内容到Private Key中
屏幕快照 2020-06-30 下午11.05.38.png

然后选择你刚创建的Credential,配置没问题的话报错就消失
提示:如果还是一直报错,看下是不是因为你的网络不能访问这个代码地址

4、构建
到构建下面点击“增加构建步骤”,选择“Execute shell”,cd到你工程目录下,执行fastlane打包命令


屏幕快照 2020-06-30 下午7.14.32.png

好了,终于都配置完了,开始构建任务......
如果顺利,过一会你收到蒲公英的邮件发布成功,你觉得终于舒服了......
.
.
.
.
.
.
然而当你高兴地从蒲公英下载之后,错愕地发现这个包的代码只是本地代码不是远程仓库的最新代码!!!
为什么???这时候去看构建任务的日志输出,拉取代码正常......看下我们前面的构建配置,先cd到你的工程目录下,然后执行打包命令,是的,这里出问题了,代码是拉取了但是我们cd的目录里的代码没更新,因为Jenkins拉取代码是把最新的分支代码拉取到Jenkins自己的目录下了,而不是把代码更新到我们本地工程目录下,Jenkins拉取的最新代码在这里 /Users/xiaoming/.jenkins/workspace/ProjectName,所以我们要把Jenkins构建命令改一下,cd到这个目录下
提示:这个目录是在Jenkins第一次任务触发后才自动创建的

我被这个问题搞了一天,去看别人的帖子,构建命令这里全都是cd到自己的工程目录,所以一直以为是拉取代码出问题了,贼TM坑......不知道是不是可以设置让Jenkins直接更新本地工程目录的代码,如果可以欢迎留言告诉我,不胜感谢

参考文章如下:
iOS+Jenkins+git+蒲公英
10分钟学会fastlane自动打包
Fastlane+Jenkins

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