如何将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上。 我叫我的appBuildappTests

而已!