在开发中经常需要打测试包,然后上传至蒲公英等三方平台,这其中需要经历的操作为:
每一次打包上面的过程必不可少,而且都是手工的,本篇文章我们采用CD(Continuous Delivery)持续交付和CI(Continuous Integration)持续集成来进行自动化打包一键操作,解放双手,拒绝手动的重复低效率劳动。
本篇文章讲解如何使用 fastlane 自动打包
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
安装成功,查看版本

brew install fastlane
安装成功,查看版本

打开终端 cd 到工程目录下,如下图

fastlane init

终端里面让您选择,我这边是选择了 4;
中间会有很多 Continue by pressing Enter ⏎ ,需要你敲几次回车键
然后就会看到生成 fastlane 文件,如下图所示

fastlane add_plugin pgyer 或者 bundle exec fastlane add_plugin pgyer
具体查看蒲公英官方文档 使用 Fastlane 上传 App 到蒲公英
中间有一个需要 按 y 回车确认,这是第二次按照截图了,可能有些不一样

安装后 Gemfile 信息增加如下
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)
打开刚刚生成的 fastlane/Fastfile 文件,默认生成文本如下

蒲公英账号需要自己配置,如果1.3 未执行,或者没有账号,请注释或删除掉, 2.4.2 有如何获取蒲公英账号key的截图,
default_platform(:ios)
platform :ios do
desc "Description of what the lane does"
# 打包时候用的名称 例如 fastlane app
lane :app do
# add actions here: https://docs.fastlane.tools/actions
gym(
# 每次打包之前clean一下
clean: true,
# 打包出 ipa 文件的路径,我放到了桌面文件夹,你自行更改文件夹
output_directory: '/Users/hengqianjin/Desktop/APP',
# 打包的名称,可任意取
output_name: 'myApp.ipa',
# 项目的 scheme,自己项目名 .xcworkspace 前面的项目名就是
scheme: "Farm",
# 默认 Release,Release or Debug
configuration: 'Debug',
# 是否包含 bitcode
include_bitcode: false,
# 是否包含 symbols
include_symbols: true,
# 打包导出方式,包含 app-store, validation, ad-hoc, package, enterprise, development, developer-id and mac-application
export_method: 'development',
# 这个设置是为了设置 xcode 自动配置证书和配置文件,当然也可以手动配置,可以参考文档
export_xcargs: '-allowProvisioningUpdates'
)
# mac上的通知弹窗,通知打包完毕
notification(app_icon: "./fastlane/icon.png", title: "manager", subtitle: "打包成功,已导出安装包", message: "准备发布到蒲公英中……")
#配置上传蒲公英账号 蒲公英的 api_key和 user_key 用自己蒲公英账号的,别用我的!!!如果没有可删除
pgyer(api_key:'fbf25d2a525e12d5084b0ae09098ab7b', user_key: '12bba6204bd7c3e26375f653f8086358', update_description: "测试fastlane自动打包")
end
end
去自己的蒲公英账号好复制即可

fastlane XXX 或者 bundle exec fastlane xxx
这个 XXX,就是 Fastfile 文件里面,lane:后面的文字,我的名称是 app,就是 fastlane app

成功提示

mac 上成功通知

蒲公英上上传成功

你output_directory 设置的文件夹中的 myApp.ipa

我分别使用了OC创建的项目和Swift创建的项目,均能打包发布成功
请使用之前保证 Xcode 能正常打包没问题,否则会导致打包失败,亲测Swift项目无证书打包失败
由于 https://rubygems.org 部署在国外,有时候可能因为网络原因导致失败!(可能,这里是可能失败,网络好可以无视)
失败时候终端提示 bundle update,同时Gemfile不会生成Gemfile.lock文件,而且会导致后续打包失败
打开Gemfile, 进行替换源 https://rubygems.org/ 替换为 https://gems.ruby-china.com/
#source "https://rubygems.org"
https://gems.ruby-china.com/
替换后执行 bundle update
此处只是自动打包,但是依旧需要时间的,项目越大越耗时,只是节省了手动操作步骤
参考文章
最简单安装 brew 的方法
iOS 自动化打包(fastlane),真香定律
iOS 基于 fastlane 和 jenkins 的自动化打包
iOS 自动化打包发布(Fastlane + 蒲公英)
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功
默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同
我想知道是否可以通过自动创建数组来插入数组,如果数组不存在的话,就像在PHP中一样:$toto[]='titi';如果尚未定义$toto,它将创建数组并将“titi”压入。如果已经存在,它只会推送。在Ruby中我必须这样做:toto||=[]toto.push('titi')可以一行完成吗?因为如果我有一个循环,它会测试“||=”,除了第一次:Person.all.eachdo|person|toto||=[]#with1billionofperson,thislineisuseless999999999times...toto.push(person.name)你有更好的解决方案吗?