Tag: fastlane

亚搏体育app CI iOS

GitLab CI非常易于使用,作为一个单独的开发人员,您不再需要构建Jenkins服务器,因此GitLab CI就是为您准备的。 让我们看一下我将要介绍的项目,以及GitLab CI如何帮助我们。 今天的演示项目是BowlingGame,其中包含单元测试和UI测试,CI部分我们使用xcodebuild进行测试,xcsummary用于XCtest报告生成,并使用fastlane进行testflight上传,因此您需要在开始之前安装xcodebuild和fastlane。 第1部分设置fastlane和.yml: 初始化Fastlane:按照Fastlane的说明,可以指导您完成信息,包括app_identifier,apple_id,itc_team_id,team_id…等,也可以在路径/ yourProject / fastlane / Appfile中进行检查。 设置Fastfile:我们只使用upload_to_testflight函数,因此请确保方案正确 desc“将新的Beta版本推送到TestFlight” 车道:beta do build_app(方案:“ TDD-BowlingGame”) upload_to_testflight 结束 3.设置.yml文件:此文件告诉GitLab CI做什么,应该完成哪些步骤。 阶段: -CreateDirectory -UIAndUnitTesting -生成报告 -ArchiveAndUploadToItuneConnectvariables: LC_ALL:“ en_US.UTF-8” LANG:“ en_US.UTF-8”创建: 阶段:CreateDirectory 脚本: -rm -rf〜/ Myproject / -mkdir〜/ Myproject / Test: 阶段:UIAndUnitTesting 脚本: #将iPhoneX_iOS1131更改为您的真实设备名称 -rm -rf / Users / i_HankTseng / Library / Developer […]

将Fastlane集成到iOS项目:第1课

在使用Fastlane之前,它需要完成以下安装。 安装Ruby版本管理器(RVM) Fastlane由Ruby编写,建议安装Ruby Version Manager(RVM),以帮助您管理ruby路径,价值和配置问题。 安装指南参考RVM安装指南。 安装mpapis公钥 gpg-密钥服务器hkp://keys.gnupg.net-接收密钥409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB 使用Ruby安装稳定的RVM \ curl -sSL https://get.rvm.io | bash -s稳定–ruby 安装Xcode 在Mac中打开您的App Store应用,搜索Xcode并下载。 如果要下载其他版本,请检查Beta版本或更旧的版本。 安装Xcode命令行工具 Xcode命令行工具可帮助您为Xcode做命令行开发人员。 安装Xcode命令行工具 xcode-select-安装 安装Fastlane 通过gem安装Fastlane [sudo] gem install fastlane -NV 检查Fastlane是否已安装 哪个快车道 如果成功安装了Fastlane,它将在您的终端中显示已安装的路径。 解决UTF-8问题 Fastlane需要正确的环境才能交付构建。 请执行以下步骤来解决UTF-8问题。 cd〜/。 打开。 点击Shift + command + . 显示所有隐藏文件夹(您可以在Mac中使用它显示/隐藏隐藏文件夹)。 打开名为.bash_profile文件,将以下代码复制并粘贴到该文件中。 导出LC_ALL = zh_CN.UTF-8 出口LANG = en_US.UTF-8 下一步是什么? 下一课,我们将开始将Fastlane集成到您的iOS项目中。

使用Fastlane从疯狂中拯救您的手机

当您开始编写iOS应用程序时,通常会专注于构建和交付该应用程序。 这意味着要编写代码,也许要进行一些单元测试以确保您的逻辑能够按预期工作,并需要一个或两个脚本来在持续集成系统中构建和运行您的应用程序。 然后,如果碰巧,您的应用程序将受到青睐,您将获得很多客户。 很多很多很多客户。 也许像我们一样,您的客户将需要您的应用以自己的艺术品品牌化。 因此,您编写了一个小的Bash脚本,可以在需要时将其替换为您的图稿。 然后,您的某些客户需要其他客户不想要的特殊一次性功能。 这些客户对您的公司至关重要,因此您可以编写功能并通过特殊的属性文件与另一个启用或禁用该功能的小型Bash脚本组合来对其进行管理。 一段时间后,您的客户群将增长,您的团队将像我们一样增长,并且小型Bash脚本的规模和复杂性将会增长。 很快,其他团队成员将无法理解所有内容如何融合在一起,一个小的更改可能以意想不到的方式破坏其他内容,并且每当需要在构建中进行某些更改时,每个人都会畏缩。 使用Bash构建的复杂构建系统就是这种痛苦。 在Appian,我们的构建系统陷入了这种悲惨的境地。 在几次事件要求我们争先恐慌地修复构建系统更改以重新启用我们无意间破坏的功能之后,我们对系统的信心一直处于低位,压力水平超出了预期。 退后一步,我决定必须做些事情。 我们的构建系统需要修复。 我在团队中提出来,我们考虑使用Python,Swift或Ruby构建我们自己的系统,以便获得高级语言的好处。 我们决定不这样做,因为我们不想重新发明轮子,这将花费很长时间。 那就是我们开始寻找更好的东西的时候。 值得庆幸的是,我的一位同事找到了快车道。 我马上就知道快车道很特别。 它为安装不同版本的Xcode提供了支持; 它承诺会自动上传到TestFlight; 它使自动化测试的输出看起来如此简洁明了。 它是用高级语言Ruby编写的,它使我们能够构建模块化,可理解且可测试的构建系统。 我使用Appian的IndieTime(类似于Google的20%的时间)将整个构建系统转换为使用fastlane,结果是纯粹的欢乐 。 现在,我们可以依靠为所有不同的构建选项获得正确的结果。 我们的开发人员发现,它更易于理解和更改构建系统,而复杂的项目更改则更容易实现。 使用新系统,我们获得了很多好处。 这三个最突出: 1.使用RSpec的自测试构建系统 当我们在构建系统中使用Bash脚本时,很难确保仍正确构建所有配置。 当我们添加新功能或修改系统时,很容易犯一个错误并引入一个错误,该错误有时几个月都不会出现,直到我们需要向客户提供其自定义版本为止。 当确实出现此类错误时,可能需要很长时间才能确定根本原因,然后正确解决。 有了基于Ruby的fastlane工具集和RSpec,我就能够对整个系统进行单元测试。 现在,每当我们添加涉及对构建系统进行更改的新功能时,我们都会添加单元测试。 我们的持续集成系统运行160多个测试,以确保我们正确构建不同的iOS配置。 2.使用快速通道的简化逻辑 使用Bash,为了不破坏我们现有的构建脚本并节省时间,开发人员将复制Bash脚本并调整副本。 我们的iOS代码库最终以许多几乎相同的脚本以及晦涩,纠结和难以理解的代码为结尾。 过渡到Fastlane时,我们的一位开发人员建议将每个构建都视为自定义构建。 因此,现在,每个构建都遵循相同的自定义路径: 我们的App Store应用, 我们内部的应用程序 我们的HockeyApp 和为我们的客户定制品牌的应用程序。 这样,我们可以确保我们所有的构建工作正常进行,或者我们可以很快发现是否损坏了某些东西。 例如,这对我们有何帮助:Apple刚刚添加了一项新要求,即我们需要将iTunes图稿与应用程序捆绑在一起。 为了进行更改,我们仅添加了6行以支持所有不同的版本: 我们的产品经理无法相信为我们提供的所有构建配置支持此功能多么容易 。 3.使用Xcodeproj进行简单但复杂的项目操作 通过对自定义属性(也称为功能切换)进行运行时检查,可以轻松管理客户在应用程序中所需的一些独特功能,而其他功能则需要对项目进行更基本的更改。 有时,这些更改与我们其他客户的需求不兼容。 […]

将Fastlane集成到iOS项目:第4课

上一课,我们使用get_certificates和get_provisioning_profile action为我们的iOS应用程序下载证书和配置文件。 这次,我们将使用另一个action来生成.ipa,并将其上传到Crashlytics和Hockey App。 在接下来的课程中,我将假设您的项目名为Bookshop。 创建构建 如下所示将build_app action添加到build_app的通道中。 在此之前,我将在项目中创建一个名为Adhoc的新配置。 使用连接的电缆将应用程序构建到iDevice时使用Debug 。 通过OTA(空中服务)分发应用程序时使用AdHoc ,例如Crashlytics和Hockey App。 Release上传到TestFlight和App Store时使用Release 。 创建配置后,我们还需要更新方案。 创建或更新项目方案,将“ Run ,“ Test以Debug ,“ Profile ,“ Analyze和Archive为Adhoc 。 (将在下一课中创建发布)。 我将该方案命名为Bookshop_dev_adhoc 。 如果您具有多个环境和项目配置,那将更容易理解。 之后,更新fastfile的lane 。 车道:build_app做 //从Apple Developer获得生产证书 get_certificates( 发展:错误, 强制:false, 用户名:, team_name:, 文件名:, output_path:“ fastlane_delivery / dev / adhoc /” ) //从Apple Developer获得生产证书 get_provisioning_profile( 即席:是的, app_identifier:, […]

Fastlane Swift for iOS的第一印象

原始文章:原始文章已发布在我的个人博客XCBlog上,继续阅读 此处 以获得更好的图形。 要阅读有关iOS DevOps和iOS CI / CD的更多有趣文章,请 在此处 访问我的博客 。 Fastlane刚刚从2.69.0版开始支持Swift,这意味着iOS开发人员不再需要编写Ruby代码来在iOS或macOS项目中配置Fastlane。 Fastlane是自动执行iOS部署,发行和各种常见的iOS开发任务(如代码签名,从Apple开发人员门户网站管理预配配置文件,证书和版本)的出色工具之一。 Fastlane提供了编程实现以自动化所有这些任务,因此我们可以在任何CI服务器上设置“持续集成”和“持续交付”。 但是,iOS开发人员必须学习和编写一些Ruby代码才能在项目中配置Fastlane,这是有效使用Fastlane的障碍之一。 传统上,iOS开发人员精通Objective-C或Swift,但不精通Bash,Ruby,Python等脚本语言。 幸运的是,Fastlane宣布了对Swift的支持,因此我们可以使用Apple的Swift编程语言为iOS应用配置CI / CD设置。 在这篇文章中,我将分享使用Swift版本的Fastlane的第一印象。 Fastlane Swift入门 Fastlane在此处添加了有关如何开始使用Fastlane Swift的简要文档,但是我们将看到它的实际效果。 首先要注意的是,即使Fastlane提供了Swift支持,它仍然打包为Rubygem,您仍然必须使用Rubygem使用以下命令安装Fastlane $宝石安装fastlane 安装所有必需的依赖项可能需要几分钟。 如果您使用的是默认macOS随附的系统Ruby,则可能需要使用sudo。 安装后,我们必须确保您具有2.69.0以上的Fastlane版本才能与Swift一起使用。 我们可以使用fastlane -v命令进行检查。 现在,让我们在Xcode中创建一个单视图iOS项目FastlaneSwift-Demo。 为了检查Cocoapods的支持,让我们在Podfile中添加一些依赖项。 现在,我们将使用以下命令为该项目启动Fastlane。 $ fastlane init迅速 通过询问一些有关您的凭据,应用程序标识符,方案的问题,这将像往常一样设置我们的项目,您应该能够轻松完成设置。 一切完成后,您将看到位于以下位置的消息,提示打开Xcode项目 $ ./fastlane/swift/FastlaneRunner/FastlaneRunner.xcodeproj 这是一个附加的Xcode项目,以便在Xcode中配置Fastfile并具有所有自动完成功能和语法突出显示功能。 在这一点上,您可以使用Swift来配置通道。 但是,如果您想看看发生了什么,您可能会注意到Fastlane在fastlane目录中创建了8个目录和34个Swift文件。 使用Fastlane Swift 现在,让我们打开Xcode项目FastlaneRunner.xcodeproj,以了解其中的内容。 我们将看到这样的项目结构: 我们可以看到,所有配置(例如Fastfile)现在都是用Swift编写的。 现在我们可以使用Swift方法创建车道。 我们可以带车道直接使用所有可用的Fastlane动作。 现在,让我们配置单元测试和UI测试以与Fastlane一起运行。 如您所见,Fastfile已经创建了lane testLane()来运行我们可以直接使用执行的测试 $ […]

将Fastlane集成到iOS项目:第5课

上一课,我们演示了如何构建应用程序并将ipa,dSYM上载到Crashlytics和Hockey App。 这次,我们将使用.env文件处理多个环境。 基本上,有两种方法可以配置环境值。 通过使用其他通道交付应用 车道:build_app_dev做 get_certificates( // … ) get_provisioning_profile( // … )build_app( // … )crashlytics( // … ) upload_symbols_to_crashlytics( // … 曲棍球 // … ) endlane:build_app_testing做 //复制build_app_dev内部的动作并更新值 结束 之后,您可以运行bundle exec fastlane ios build_app_dev和bundle exec fastlane ios build_app_testing通过不同的环境设置来构建应用程序。 此方法更为严格,仅创建另一个通道并在其他通道中指定值。 如果使用此方法,则有几个缺点。 降低Fastfile可读性,您很难阅读lane确切功能和流程 容易出错,因为您需要更新lane内的所有parameters或action 越来越长的代码…。 Fastlane确实理解了这个问题,它引入了.env文件来处理该问题。 创建您的项目环境文件 转到//fastlane 创建通用的env文件,名为.env 创建环境指定的文件,名为.env__ ,例如。 env.dev_adhoc和env.testing_adhoc .env –用于放置共享环境文件 .env.dev_adhoc –用于将开发环境值与Xcode […]

Continuous Integration Server上的代码签名iOS应用扩展

添加应用扩展程序是在用户需要的地方放置应用程序功能的绝佳方法。 自Apple推出应用程序扩展名以来,将其扩展到iOS应用程序中已变得非常普遍,例如iMessages扩展名非常常见。 在开发iOS应用程序时,扩展程序必须是iOS应用程序中的单独目标,并且在将应用程序分发到应用商店时,我们必须与主应用程序一起对其进行代码签名。 Xcode具有自动对应用程序进行代码签名的新功能。 Xcode会处理所有事情,包括为所有目标下载正确的配置文件并在归档iOS应用时对它们进行代码签名,但是这种方法不适用于持续集成环境(即CI服务器)。 在CI服务器上,我们必须编写所有这些代码签名任务的脚本。 在为带有扩展名的应用程序设置连续交付时,用脚本手动编码所有扩展名的应用程序具有挑战性,但是Fastlane工具非常容易对应用程序扩展名进行代码签名。 在本文中,我们将看到如何使用Fastlane工具在CI服务器上编写符号应用扩展的代码。 应用程式额外资讯 在对带有扩展名的应用进行代码签名时,我们应该考虑以下几点。 应用程序扩展是iOS应用程序中的单独目标 应用扩展程序具有单独的捆绑包标识符和配置文件 应用扩展程序与主应用程序一起构建。 这意味着,我们必须为每个捆绑包标识符下载预配置文件,并使用脚本将下载的预配置文件应用于每个目标。 在这种情况下,让我们考虑具有包标识符com.xyz.main的主应用程序具有带有包标识符com.xyz.main.iMessage的 iMessages扩展名,以与应用程序一起进行代码签名。 叹气下载配置文件 我们必须为每个应用程序标识符下载配置文件,在我们的情况下将是两个捆绑包标识符。 Fastlane具有叹气工具,可以从Apple开发人员门户下载配置文件。 我们还可以保存配置文件,其含义是文件名,但这是可选的。 示例代码如下所示。 叹( app_identifier:“ com.xyz.main”, 文件名:“ com_xyz_main.mobileprovision”, skip_certificate_verification:正确 ) 叹( app_identifier:“ com.xyz.main.iMessage”, 文件名:“ com_xyz_main_iMessage.mobileprovision”, skip_certificate_verification:是 ) 请注意,Sigh会将配置文件下载到当前工作目录中。 成功下载预配置文件后,我们应该在项目的根目录下载两个文件com_xyz_main.mobileprovision和com_xyz_main_iMessage.mobileprovision 。 更新每个目标的配置 现在,我们已经为iOS应用程序和扩展下载了相关的配置文件。 现在是将它们应用于特定目标的时候了。 在此阶段,我们可以采取两种方法。 通过将供应配置文件设置为与我们将在CI服务器上下载的名称相同的名称,在.xcodeproj文件中应用手动代码签名 。 我们可以在源代码管理中检入该文件,以便CI服务器将查找这些文件。 这将是非常简单的方法,因为我们不需要在CI服务器上修改Xcode项目文件。 在.xcodeproj中应用自动代码签名 ,并通过使用脚本更新Xcode项目文件将其更改为手动代码 。 最好在开发人员的本地计算机上保持自动签名并在构建时更改CI上的文件,但是这需要对构建设置有深刻的了解,并需要使用脚本以编程方式更新Xcode项目 您的团队将根据技能集决定哪种方法适合他们。 两者都有其优点和缺点。 开发人员更喜欢在本地计算机上进行自动代码签名 ,因为过去在Xcode 8之前,他们可能曾经历过整理证书和置备配置文件的痛苦。为了CI失去它。 […]

自动构build,部署与Fastlane曲棍球

我正在研究自动构build和部署。 我发现了fastlane并试图用于部署曲棍球。 https://github.com/fastlane/examples/blob/master/Artsy/eidolon/Fastfile https://github.com/fastlane/examples/blob/master/Wikipedia/Fastfile 但是,我不熟悉脚本。 如果我有2个configuration 1)debugging 2)发布 2scheme 1)触摸 – 发展 2)触摸 – 生产 2曲棍球键 52da9f2b3da50cf8b6d4aac15f06ae9b ZXz1tdfaDLfb4hY8SagCfX4RJNMhJVsxET95sHf9 我应该如何修改脚本? 我修改后需要运行什么命令? 虽然我已经完成了“fastlane init”。

Xcode UI Test截图文件在哪里?

我感兴趣的是如何find在我的应用程序的UItesting期间创build的截图的位置。 我想了解Fastlane Snapshot如何抓住这个截图。 经过几个小时的研究,我找不到这些截图的位置。

如何使用.env文件覆盖fastlane的应用程序文件中的值

在某些情况下,我们有必要覆盖fastlane的appfile中的值,例如使用不同的苹果账户来发布应用程序,但是没有文档化的官方方式。