使用Swift的Fastlane | 传递参数| CI
这篇文章假定您已经熟悉Fastlane。
在这里,您可以找到如何将参数传递到车道。
我的场景:在我的CI设置中,我将同时使用Jenkins和Fastlane。 因此,我需要将参数从命令行发送到我的车道。
经过一番努力之后,我终于知道了如何将参数从命令行传递给Fastlane。
缺少了什么?。。。文档。
我从以下几点开始调查:
https://github.com/fastlane/fastlane/issues/11747
https://github.com/fastlane/fastlane/issues/11370
https://github.com/fastlane/fastlane/pull/11401
先决条件 :
1.在MacOS上安装fastlane
2.使用以下命令进行设置:
捆绑程序执行器fastlane init swift
此时,fastlane正在项目文件夹中创建一些默认文件。
(fastlane文件夹,Gemfile和Gemfile.lock)
从这一刻起,我们需要集中精力扩展Fastfile.swift 。 为此,我更喜欢使用位于以下位置的FastlaneSwiftRunner.xcodeproj :
./fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj
在分析Fastlane的快速源文件之后,我尝试查看如何在不带&参数的情况下从命令行调用车道。
我在Fastfile.swift中定义了一些示例函数(通道):
(我已决定根据fastlane swift代码为其中一些格式提供该格式)。
Lane️车道名称匹配不区分大小写。 非常好 !
乍一看,我发现可以使用两种格式调用firstLane :
bundle exec fastlane firstLane
或将bundle exec fastlane first
下一步将是看如何将参数传递给车道。 在不涉及复杂的Fastfile的情况下,我只想发送样本[key:value]格式。
当然,对于secondLane,我们不能使用以下命令:
bundle exec fastlane secondLane
因此,在深入研究之后,我设法找出了正确的格式,原因以及如何传递参数。 从前面的控制台消息可以看出,只有3种方法被检测为通道。
//不带参数的简单车道,后缀为“车道”。
func firstLane()//带参数的泳道,作为可选参数,后缀为“ lanewithoptions:”
func thirdLane(withOptions options:[String:String]?)//带参数的泳道,为可选,后缀为“ lanewithoptions:”
func fourLaneWithOptions(_ options:[String:String]?)
即使在控制台中不够清楚,将“ lanewithoptions:”作为后缀也是将这些功能检测为通道的原因。
因此,让我们尝试查看参数是否正确发送。
对于此测试,我添加了fatalError调用以停止执行。
这样可以立即在控制台中获得反馈。
因此,thirdLane已更新为:
运行后:
bundle exec fastlane third environment:Staging
我得到以下结果(这意味着参数已正确发送):
跑步后
bundle exec fastlane third environment:Production
我得到以下结果(这意味着参数已正确发送):
结论 :
一个带参数的车道的示例(我觉得很容易理解)是:
在命令行下如何调用它的示例是:
bundle exec fastlane hockeyApp environment:Staging
资源:
https://github.com/doruvil/FastlaneSwift/tree/testing-fastlane-swift-limits
PS:
为了解决功能与可用通道列表的匹配问题,我打开了一个问题:
https://github.com/fastlane/fastlane/issues/12277
请分享您的想法,或者在设置快速通道时可能会遇到的困难/无法实现的事情。