Apple CI / Xcode 服务和 Jenkins

2024-03-05

有没有办法/插件将新的 Xcode 服务和/或新的 Apple CI 与 Jenkins 集成?

Why?

通过 Jenkins 服务器 + OSX 构建从属连接的主要问题ssh就是它单元测试不起作用,因为 iOS 模拟器需要图形环境,但此配置中不存在。

我希望能够将 Xcode 服务(支持单元测试)与 Jenkins 集成。

可能使用Apple CI就足以满足我的需求,但这个问题针对的是Xcode 服务与 Jenkins 的集成.

我所做的已经知道

我有以下经验现有的 Xcode Jenkins 插件 https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin,但似乎不支持全新的Xcode服务或新的Apple CI。我特别热衷于通过 CI 进行单元测试(旧方法在 ssh 会话中无法正常工作)。

我想知道什么

我想要有关目前未与 Jenkins 合作的以下问题的信息ssh连接构建从站:

  • 无头系统上的单元测试
  • 验收测试Frank http://www.testingwithfrank.com/或类似的
  • 自动配置文件更新(Apple CI 就是这样做的)

以及目前与 Jenkins 配合良好的信息以及ssh连接了构建从属设备,并且仍然应该与 Xcode 服务集成一起使用:

  • 不同构建配置(发布、调试、TestFlight)/方案的构建
  • Automatic Build number increment
    • (使用 Jenkins,我可以将项目中的内部版本号设置为${BUILD_NUMBER},并且 Jenkins 根据其内部版本号设置此环境变量。当 Apple CI 进行构建时,它很可能会设置构建号。)
    • Jenkins 和 Apple CI 之间的内部版本号的处理/同步
  • Accessing build products of the Apple CI from different Jenkins Jobs
    • 例如将作业上传到 TestFlight
  • 备份构建
  • 自动构建 git 推送到特定分支
  • 电子邮件通知

一些额外的问题/提示

  • 我不确定是否Apple CI == Xcode service或者如果 Apple CI 只是usesXcode 服务。在后一种情况下,Xcode 服务就像一个智能构建从属设备,Jenkins 也许可以使用它来进行构建和测试,但可以自行管理构建编号和产品。
  • 我知道 Apple CI 是一个单独的 CI,将多个 CI 相互集成并不是最简单或最有用的方法。我只是担心 Apple CI 不够灵活,无法满足我的需求(见上文),并且 Jenkins 的旧方式存在一些问题(见上文)。

我相信你将不得不选择 jenkins 或 xcode 服务器,而不是两者都选择。我对 xcode 服务器不太了解,但我确实了解 jenkins 和 xcode 5。

使用不同的配置构建:

在 xcode 插件中,您可以设置要使用的方案。

自动内部版本号增量

我向我的 jenkins 作业添加了一个名为 XCODEBUILDNUMBER 的参数。每当我开始构建时,我只需从 xcode 项目中复制构建号(我手动递增它。我的看起来像 080813A)并将其粘贴到 XCODEBUILD 参数中。我用它来命名我的输出文件等。jenkins 的插件可以自动增加你的构建号,但它们不集成或与 xcode 同步。

Jenkins 和 Apple CI 之间的内部版本号的处理/同步

正如我之前所说,我不知道同步内部版本号的方法,但我只是想到了一个可能的解决方案。您可以使用命令行工具普利斯特好友 http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man8/PlistBuddy.8.html,在 info.plist 中设置构建号,作为 jenkins 作业中的构建步骤。

单元测试

我还没有成功地使用 Xcode5 进行单元测试,但我知道 jenkins 的 xcode 插件支持它。我相信项目设置中缺少“构建后测试”键可能与此有关。如果你让它发挥作用,我很想知道。 (我也热衷于完成这项工作)

验收测试

据我所知,Frank 是一个命令行工具。您可以轻松地将其集成到您的 Jenkins 工作中,并且我相信如果您的测试未通过,它将导致构建失败。

从不同的 Jenkins 作业访问 Apple CI 的构建产品

不完全确定你的意思,但使用 jenkins,你可以存档你的构建产品(.ipa),以便稍后下载并上传到 testflight 等服务。再说一次,我对 Xcode Server (CI) 不太了解。

备份构建

正如我之前所说,jenkins 可以归档你的构建产品。另外,我在构建产品目录中使用 ${BUILD_NUMBER} 变量,因此每个构建都有不同的目录。该目录也备份到我的 Time Machine,并将重要的构建复制到我的 Web 目录。

自动构建 git 推送到特定分支

使用 jenkins git 插件,您可以让 jenkins 以您指定的时间间隔轮询您的 scm,并可以在更改时触发构建。

电子邮件通知

我确信有一个插件可以做到这一点。 (当构建失败/成功时会向您发送电子邮件。事实上,这可能是内置的)

结束语

xcode CI 是一个完全独立的 CI,可能很难与 jenkins 集成。就我个人而言,我推荐詹金斯只是因为它的可扩展性。抱歉,我对 Xcode Server 不太了解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apple CI / Xcode 服务和 Jenkins 的相关文章

  • .showsPhysics 内存泄漏

    我最近花了 5 个小时尝试调试 Spritekit 应用程序中的内存泄漏 应用程序启动后 我注意到内存使用量略有上升 我花了 5 个小时中的 3 个小时挖掘参考资料 了解强与弱的关系ARC https developer apple com
  • 如何从 ContentView 外部显示 SwiftUI 警报?

    我正在构建 Swift 应用程序 并试图找出如何显示警报 我有一个单独的 swift 文件正在执行一些计算 并且在某些条件下我希望它向用户显示警报 基本上告诉他们出了问题 然而 我见过的大多数例子都要求警报在ContentView或以其他方
  • locationOfTouch 和 numberOfTouches

    你好 我有这个识别器 设置为 2 次触摸 但它只返回一个 而不是两个 CGPoint void gestureLoad UIGestureRecognizer recognizer recognizer UITapGestureRecogn
  • 将自定义数据包含到 iOS 故障转储中

    你好 堆栈溢出 有一个简单的问题要问您 当我的应用程序在用户的设备上崩溃时 是否可以将自定义错误数据嵌入到自动生成的 iOS 故障转储中 例如 我的 SQlite 数据库由于某种原因无法运行 例如 数据库文件已损坏 我无法从这个错误中恢复
  • 如何制作带有 SWIFT 图像的弹出窗口

    我想知道如何制作类似于此示例的弹出窗口 原始窗口充满了按钮 选择这些按钮后将拉出我想要使用的图像 我会简单地创建一个可重用的UIView组件以及作为子视图所需的一切 例如UIImageView为了你的形象 UILabel or a UIBu
  • 如何保护 iOS 应用程序免受任何操作系统攻击(在越狱设备上)

    我希望保护我的应用程序数据 以防任何操作系统攻击或越狱 iOS 设备上的未经授权的访问 在这种情况下 有什么方法可以检测此类威胁并保护应用程序数据 虽然我同意 jrturton 的说法 但如果您有想要保护的关键数据免受流氓应用程序 而不是用
  • CALayer边框奇怪问题

    我正在向 CALayer 添加边框 但有一些奇怪的行为 在我应用的边框之后出现模糊边框 参见屏幕截图 这是我的代码 void configureLabel self hidden YES self textAlignment NSTextA
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • npm 命令 create-react-app 失败

    我正在尝试在运行 Os X sierra 10 12 6 的计算机 mac pro 2017 上测试reactjs 我已经遵循了 Facebook 教程 确保您安装了最新版本的 Node js done 按照安装说明进行操作创建一个新项目
  • Swift,以编程方式更改 UICollectionViewCell 和 UILabel(单元格内)的宽度

    我已将单元格 UICollectionViewCell 的宽度设置为等于 UICollectionView 的宽度 并且我尝试对该单元格中包含的 UILabel 执行完全相同的操作 我认为下面的代码准确地解释了我想要实现的目标 所以我在这里
  • 如何在 Mac OSX Mavericks 中正确运行字符串工具?

    如何在 Mac OSX Mavericks 中正确运行字符串工具 我尝试按照我在网上找到的示例来运行它 strings a UserParser class 但我收到此错误 错误 Applications Xcode app Content
  • 从命令行添加 Xcode 开发者帐户

    我正在尝试使用xcodebuild allowProvisioningUpdates在我只能通过命令行访问的计算机 Azure Devops macOS 托管计算机 上 不幸的是 根据man xcodebuild为了使用 allowProv
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei
  • 在 macOS 上使用 find 时出现“非法选项”错误

    我试图列出末尾仅带有字母 R 的文件 我用了find在 macOS 终端中如下所示 find type f name R 但我收到消息说illegal option t 第一个参数find是它应该开始寻找的路径 路径 表示当前目录 find
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 在命令行上卸载 Android SDK 的选定部分

    这与 卸载旧的 Android SDK 版本 https stackoverflow com questions 15182377 uninstall old android sdk versions 除非我想在无头 Linux CI 服务
  • SpriteKit的更新函数:时间与帧率

    一般来说 我对编程和 Spritekit 很陌生 并且有兴趣探索毫秒和帧率之间的关系 以及如何使用更新函数作为两者之间的中介 帧率与毫秒 从本质上讲 帧速率和时间之间的主要区别在于时间始终一致 而帧速率则不然 由于密集的图形程序 它可能会下
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • 隐藏选项卡栏项目并对齐其他选项卡项目

    在我的应用程序中 我有 4 个选项卡栏项目 我正在 XIB 文件中添加这 4 个选项卡栏项目 最初我必须显示 3 个选项卡栏项目 同步后我必须在我的应用程序中显示第 4 个选项卡栏项目 因此 为此 我使用以下代码隐藏第四个选项卡栏项目 se

随机推荐