Tag: Bitrise

如何使用Fastlane和Bitrise为多个iOS和tvOS应用设置CI

最近,我不得不为多个版本的iOS和tvOS应用程序设置一个持续集成(CI)管道。 由于没有找到有关如何以简单方式执行此操作的大量信息,因此决定撰写此博客文章。 用例 如果您有以下内容,则此帖子很有用: 白标应用程序(WLA),其中包含同一应用程序的多个变体; 针对多个平台的应用程序(iOS / tvOS / macOS); 而且,您不想在CI管道中重复或在管道中定义环境变量。 就我而言,我有一个通用应用程序(iOS和tvOS)两个版本(精简版和高级版),因此共有四个版本。 工具类 我使用Fastlane工具来自动化部署应用程序所需的任务。 像所有工具一样,它也有优点和缺点。 优点 : 您的管道不依赖于任何特定服务; 它可以在本地,服务或远程计算机中运行; 它取决于一个开源项目; 缺点 : 您需要时间进行配置; 您需要时间来维护它; 如果您不熟悉Fastlane,请参阅其文档。 快速通道配置 阅读fastlane的文档,使用环境变量似乎最适合我的用例。 为了为应用程序的每个版本加载不同的变量,您需要为每个版本定义一个文件。 在我的情况下,我用以下名称定义了4个文件: .env.ios .env.iosfree .env.tvos .env.tvosfree 每个文件都包含构建特定版本的应用程序所需的变量: 还需要设置Secrets以构建应用程序(FASTLANE_USER,FASTLANE_APPLE_ID,FASTLANE_PASSWORD),并验证在我的情况下选择的正确堆栈是macOS 10.13上的Xcode9.3.x。 如果您还想使用Bitrise,并且此帖子对您有所帮助,请使用我的推荐链接,以便我可以赢得Bitrise T恤😄。 结论 在此博文中,我们看到了如何使用Fastlane和Bitrise为不同平台,iOS和tvOS自动部署同一应用程序的多个版本。

如何设置Bitrise CI以运行iOS的自动Appium和Cucumber UI测试

为什么要堆叠? 在codequest中,一段时间以来,我们一直在使用Bitrise作为iOS应用程序的CI / CD工具。 最近,我们的团队不断壮大,并且我们已经获得了一个最有价值的新成员–质量检查工程师,他掌握了用Appium和Cucumber.rb(Ruby版本)编写UI测试的知识。 问题是–如何在Bitrise上进行全部设置,目前在这里只有自动化的单元测试运行并测试应用程序部署。 就像我们一样,大多数阅读此书的人可能正在寻求帮助。 令我们惊讶的是,即使是谷歌搜索也无法帮助我们找到逐步的指导。 因此,我将不涉及很多细节,也不用追逐。 我们的环境 下一步将需要一些细节。 可以这样说: 独角兽–这是我们的项目名称 Unicorn.xcworkspace –项目的工作区(我们使用Pods) 独角兽–要构建的Xcode方案名称 Unicorn.app –由构建创建的二进制文件的名称,可以在Xcode中检查(选择目标)➞构建设置➞产品名称 com.codequest.Unicorn –我们的应用程序捆绑包ID AppiumUITests / Unicorn –在git存储库中的此路径下,我们保留UI测试 我们不在git仓库中保留任何.app文件 在Bitrise中创建UI测试步骤 1.通过单击+工作流程按钮并设置名称来创建新的工作流程。

保护您在Bitrise上的秘密

保持您的秘密env vars对于所有永恒的 事物 以及属于某些应用程序的文件受到保护,以防止从 Bitrise 下载 。 从现在开始,属于您的应用程序的秘密环境变量不会默认显示,只会显示它们的列表和键(它们的名称),直到您将其设置为其他值为止。 我们还为您应用的“秘密”和“代码签名”标签添加了一项新功能:名为“受保护”的切换按钮。 这样,您就可以使您的秘密无法泄露,并且代码签名证书也无法下载。 您应将此功能用于要保密的秘密。 😎这可能是您不希望其他团队成员看到的密码,即使他们有权访问“秘密”选项卡也是如此。 或者,CTO可以设置一个API密钥并锁定它,以便开发人员无法看到或编辑它,但是构建仍可以使用它。 您可以在“秘密”标签下将新的秘密添加到您的应用中。 保存它们并刷新页面后,将出现星号而不是值。 (直到现在,这些值始终始终在此处打印。)这些值仅在单击眼睛时才会发送到前端,如果将其设置为保护状态,则仅会发送到构建计算机。 秘密密钥(及其值)不能更改,只能删除。 我们添加了一个交叉的眼睛图标,它将显示秘密并显示其价值。 下拉菜单(…)下提供了另一个新功能:您可以Make it protected 。 如果将环境变量设置为受保护,则将无法再看到该值,实际上,没有人可以再看到它,删除该值是唯一的选择。 如果单击该按钮,则会出现一个弹出窗口,警告您该操作是不可逆的。 请注意,您必须保存页面才能使环境变量受保护。 受保护的环境变量用锁指示。 “代码签名”选项卡上提供了类似的选项。 对于此处上传的所有文件,您会在下拉菜单(…)下找到“ Make protected ”: 然后出现警告,从您单击按钮的那一刻起这是不可逆的,不需要保存。 使文件受保护意味着您不能下载它,而只能删除它。 和 快乐保密! 🤐 最初发布在 Bitrise博客上 。

与Bitrise for iOS本机应用程序的持续集成

这是我第一次使用CI。 我们需要一项能够帮助我们部署本地移动应用程序的服务(我负责iOS应用程序)。 从项目的配置到管道的创建,我们发现了一项伴随您的服务……Bitrise! 它使您可以免费试用该服务30天,之后可以订阅订阅。 有关更多信息,请访问价格页面。 组态 第一种配置非常直观。 有一个向导,可让您通过链接链接Bitbucket / Github帐户,并在存储库帐户中设置SSH密钥。 Bitrise检查您的iOS项目中是否已经存在迦太基文件或Fastfile,并允许您创建适当的步骤。 开始吧! 配置完成后,您可以访问仪表板。 在“ 构建 ”选项卡中,所有都是比特率构建。 有一个“部署到Bitrise”步骤,使您可以保留所有权限。 每个构建都将用颜色标识:如果一切顺利,则为绿色;如果进行了手动中止,则为黄色;如果失败,则为红色。 “ 工作流程 ”是Bitrise的核心。 它允许您使用可以从系统可用的多种选择中选择的步骤来创建管道。 如果不适合您,则始终可以选择标识外壳程序的“脚本”步骤。 此选项卡将打开一个页面,该页面上有一个部分可加载配置文件和证书(开发,临时,生产)。 另一个页面,您可以在其中插入要在脚本中使用的环境变量 ,以用于所有工作流程或仅针对某些工作流程。 触发器允许您在存储库的分支上执行操作(推,拉,合并)时配置工作流程的激活。 如果您正在使用Bitbucket,则必须转到“ Settings / Webhoocks ”并配置由Bitrise管理的各种操作。 bitrise.yml显示了通过在工作流程中插入各个步骤而生成的.yml文件。 请举个例子吗?

令人敬畏的事情比比皆是:在Bitrise上尝试“ iOS自动配置”步骤! 🚀

是的,您没看错:iOS自动配置。 在Bitrise。 new我们新的iOS Auto Provision步骤可为Xcode项目管理iOS配置配置文件,如果您是iOS开发人员,则将使您的工作变得更加轻松。 😎 该步骤仍处于测试阶段 ,因此欢迎任何评论。 💬 要使用此功能,您将需要至少一个要用于管理代码签名文件的开发人员门户团队中的管理员角色 。 仅具有成员角色,您无权在开发人员门户上生成代码签名文件。 ⚠ 本文将指导您完成步骤设置过程,即: 在Bitrise上验证您的Apple Developer Portal帐户 为您的Bitrise项目启用Apple Developer Portal集成 替换证书和配置文件安装程序步骤 在Bitrise上验证您的Apple Developer Portal帐户 对于新的Bitrise项目: 0.照常设置您的应用 1.首次成功构建后,您会看到Your first green build! Sweet! Your first green build! Sweet! ,点击Let’s deploy 如果您错过了弹出窗口,请选择“ Click here to setup deployment to your devices! 在构建页面上。 如果您隐藏“ Click here to setup deployment to […]

比特币上的Swift-Lint危险

intราบสวัสดีพ่อแม่พี่น้องที่หลงเข้ามาอาาบทควนมแามแรกของผมด้วยนะครับในี้เนนจะมราจะมาพูดถึง กันแล้วถ้างั้นเรามาเริ่มกันเลยย〜 ขอยกคำพูดของเจ้าของบทความมาเลยละกันนะครับ Lintคือ静态代码分析เป็นเครื่rank Linามารถอ่านเพิ่มเติมได้ที่Linารู้จักกับAndroid Lint — Jedsada Tiwongvorakul 危险危险危险危险危险危险危险危险危险危险 危险会在您的CI之后发生,从而使您的团队围绕代码审查的惯例自动化。 这提供了流程中的另一个逻辑步骤,通过此Danger可以帮助您减少日常代码检查中的死记硬背任务。 您可以使用“危险”来整理团队的规范,让人们去思考更棘手的问题。 เอาเป็นว่าขอสรุปตามความเข้าใจของตัวเองก็แล้วกันนะครับ 危险危险危险危险危险 危险皮棉皮棉布好酷〜 lanรับคนที่ใช้fastlane(CI / CD工具)ในับคารทำงานอยู่แล้ว emนส่วนของ Gemfile เป็นไฟล์ที่ใช้สำหรับบอก依赖版本เช่นLibrary,Ruby包ในภาษาRubyที่เราต้องการใช้ในโปรเจคของเราให้ทำการเพิ่มgem’danger gem ‘danger’ 危险工具และgem’danger gem ‘danger-checkstyle_format’, ‘~> 0.1.1′ pluginน插件ของ危险工具ที่ใช้สำหรับการอ่านไฟล์Reportกคำสั่งากคำสั่งswiftlintในfastlaneเพื่อเอาผลลัพธ์ที่ได้ไปCommentแบบ内联代码บนGitHubนนเอง ถามารถ复制代码Textอย่างด้านล่างไปใส่ในTextEditor(เช่นSublime)แล้ว保存เป็น Gemfile Gemfileได้เลยย〜 ตัวอย่างGemfile 来源“ https://rubygems.org” 宝石’危险’ gem’danger-checkstyle_format’,’〜> 0.1.1′ fileนส่วนของ Fastfile เป็นไฟล์ที่ใช้สำหรับสร้ร้างขั้นตอนการทำงาน Fastfile ให้กับส งอย่างFastfile fastlane_version“ 2.3.12” default_platform:iosEncoding.default_external =编码:: UTF_8 Encoding.default_internal =编码:: UTF_8 平台:ios dobefore_all做 […]

如何将Bitrise构建与多个Danger文件并行化

我最近正在为我们的iOS移动应用程序并行化Bitrise构建以减少其构建时间,该时间从〜21分钟减少到不到13分钟。 我工作的主要目标是分离工作流,以减少Bitrise上的构建时间。 在分离出工作流之后,我还希望我们的机器人将每个工作流的Danger结果发布到GitHub上,以便我可以分别获得每个人的反馈。 以下步骤基于我的工作,分离了工作流程,向这些工作流程添加了两个不同的Danger文件,并让我们的漫游器发布了两个单独的消息。 如果您的团队规模较小(或有更多的并发运行),那么这些时间甚至有可能减少。 在我们的案例中,一个可能的想法是将SwiftLint分离出来。 步骤1:并行工作流程 您可以使用Bitrise Start Build使一个工作流程触发另一工作流程。 可以将其添加为工作流程的第一步。在输入变量中,您需要声明一个Bitrise访问令牌和要触发的工作流程。 在工作流程的最后,添加“ Bitrise Wait for Build步骤。 如果您不等待第二个工作流程,即使第二个工作流程失败,GitHub上的Bitrise状态也可能被标记为通过。 步骤2:运行单独的Dangerfile 每个工作流程都可以运行一个单独的Dangerfile。 我的第一个Dangerfile(我称为DangerStep01)位于~/MyApp/Danger/ 。 将Script步骤添加到您的工作流程并指定脚本内容。 只需添加–dangerfile=Danger/DangerStep01即可指定文件的位置及其名称。 对每个步骤重复一次。 我选择在第二个构建可能完成之前运行Dangerfile,以便我可以立即获得工作流程1的反馈。 第3步:让您的GitHub机器人帖子两次 您还可以通过添加一个id使您的机器人为每个Dangerfile分别发布两次不同的时间。 这样做的好处是,您的机器人只会在每个Dangerfile上发布一次,并在您触发新的构建时更新这些单独的发布,从而避免了它向您的提取请求发送垃圾邮件。 要添加ID,您必须在bundle exec danger –danger-id=appBuild的末尾添加–danger-id=appBuild 。 您可以选择所需的任何ID,它最终将显示在GitHub上。 我叫我的appBuild和appTests 。 而已!

如何设置Bitrise来构建通用的iOS框架并部署到Cocoapods

今天,我想分享我的管道,以使用Bitrise构建和部署iOS框架。 Bitrise是适用于iOS和Android应用程序的持续集成和交付(CI / CD)服务,可帮助自动完成应用程序的运输过程,包括测试,构建,配置和提交。 实际上,它可以交付应用程序,但是仍然可以使用Bitrise交付框架或库。 建立通用框架 构建框架时,它仅包含用于构建框架的平台的符号。 这意味着,如果您为iPhone设备进行构建,则它将仅包含armv7s / arm64体系结构的符号。 同样,如果您的框架是为iPhone模拟器构建的,则仅包含X86_64 / i386的符号,并且在用于设备构建时会产生undefined symbols错误。 为了提供可在模拟器和设备上运行的iOS框架,您需要通过以下两个步骤将其构建为通用框架。 为每个平台构建两个单独的框架(iphoneos / iphonesimulator) 使用lipo命令将两者合并为一个框架。 这是制作通用框架的示例脚本,可以在Bitrise工作流程的“ 脚本”步骤中执行该脚本 。 #为设备构建 xcodebuild -workspace MyFramework.xcworkspace -scheme $ target -configuration Release -derivedDataPath $ BITRISE_DEPLOY_DIR / iphoneos -sdk iphoneos ENABLE_BITCODE = YES BITCODE_GENERATION_MODE = bitcode OTHER_CFLAGS =“-fembed-bitcode”干净的版本 #为模拟器构建 xcodebuild -workspace MyFramework.xcworkspace -scheme $ target -configuration Release […]

iOS中的UI测试

简介✍️ 在本文中,我们将首先解释如何使用Xcode编写UI测试,然后如何添加可视化差异,最后解释如何在Bitrise中进行配置。 为什么要测试用户界面(UI)? 对于产品发布,要测试每个用例并确保没有回归是很痛苦的。 您可能忘记测试一个流程,或者认为您的更改不会影响代码的其他部分……但是有时会这样做。 这是在Appaloosa上为我们的iOS应用程序所发生的情况,其中一些错误逐渐消失。 例如,当发布iOS 11时,我们在导航栏中添加了约束,但是此功能在以前的版本中不可用,并且该应用在iOS 10中崩溃。 它很快被发现并修复,但是警报提醒我们采取更强有力的措施来防止此类问题。 UI测试和单元测试 使用单元测试,您可以独立测试每个小代码,并专注于代码的逻辑方面。 使用UI测试,您可以模拟用户交互和用户流。 让我们以用户尝试登录您的应用程序为例。 它将在整个过程中测试用户与我们的应用程序的不同交互。 设置📚 在Xcode上转到您的项目,单击“ +”按钮(请参见下图)并添加iOS UI测试包。 还将创建一个新目标。 您还可以在Xcode上创建项目时添加它。 样例项目 这是一个示例项目。 我们要测试多个用户流,并确保它们都能按预期工作。 您可以在github上找到完整的代码。 目的是确保我们的登录页面在不同步骤中显示正确的视图。 因此,我们将需要访问页面的不同视图以评估其在测试期间的行为。 您可以通过多种方式检索应用程序的元素: 您可以使用Xcode中的“录制”按钮,它将自动生成您的代码。 您可以在视图上添加可访问性标识符,以更轻松地访问它。 您可以手动编写代码,在这种情况下,您需要知道如何访问元素。 您可以使用LLDB中的以下命令来打印可见屏幕的详细视图层次结构: (lldb)po打印(app.debugDescription) 我更喜欢这最后一种方法,代码更具可读性。 编写您的第一个UI测试 使用无效的凭据登录: 如果用户输入无效的凭据,我们希望该应用程序显示错误消息: 让我们看看它如何转换为代码。 用户想要显示他的应用程序列表: 在这里,我们被迫等待假服务器的响应。 我们需要告诉Xcode等待,直到应用程序完成了视图的渲染。 如果不这样做,则由于目标对象尚未出现,我们的测试将失败。 为了强制Xcode等待,我对XCTestCase使用了扩展名: 用户希望查看应用程序的详细信息: 从Xcode 9开始,我们不再能够比较长度超过128个字符的字符串,因此我们不得不使用谓词:

您的代码签名文件可以吗?

在 Bitrise 上验证您的配置文件和代码签名身份, 并查看是否丢失或丢失了任何东西。 上周,我们在“代码签名”选项卡上进行了重大更改,并通过向其添加更多功能来使之更进一步。 打开应用程序的工作流程编辑器,然后单击“代码签名”选项卡。 您将在此处看到您的配置文件,或者现在可以添加一个。 您将在“显示匹配的证书,设备和功能”旁边看到文件的状态: 如果一切正常,您会看到一个绿点。 如果有需要修复的地方,您会看到一个橙色的点。 单击该按钮将弹出与上周介绍的相同的弹出窗口,但其他橙色圆圈将标记包含任何有问题的选项卡。 这些匹配的证书尚未上传: 注意:请同时在Code signing identities下的Code signing identities Code signing tab上检查配置文件的到期日期。 这些测试设备之一尚未在Bitrise上注册。 (加上从现在开始,您可以看到谁注册了该特定设备。) 我们希望此新功能可以使代码签名(以及您的生活)更加轻松。 🙂 让我们知道您的想法! 代码签名愉快! ✍ 最初发布在Bitrise博客上。