iOS 构建仅在通过 Jenkins 运行时才会失败

问题描述 投票:0回答:1

我们的构建设置已经使用了几年了。然而,只有当 iOS 构建通过 Jenkins 运行几天后,我们才会遇到错误。

输出设置如下。

  • CICD - Jenkin 工作
  • Jenkins 节点 - 在 iMac x86_64 上运行(Mac OS Ventura 13.6、Xcode- 15.1、iPhone SDK 17.2)
  • 代理连接 - SSH
  • 构建脚本 - 使用 Fastlane(最新版本 2.2.0)

最近没有对 Jenkins 节点或连接机制进行任何更改。

当我们执行 Jenkins 作业时,它在归档阶段出错,指示以下错误

存档失败 **

以下构建命令失败: PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/myjenkinsuser/Library/Developer/Xcode/DerivedData/PoPoc-ghliacqvmeaczodimbswpjdefbrk/Build/Intermediates.noindex/ArchiveIntermediates/PoPoc/IntermediateBuildFilesPath/PoPoc.build/Release-iphoneos/PoPoc.build /Script-9B3D469C72BEFC2B2114A431.sh(在项目“PoPoc”的目标“PoPoc”中) (1 次失败) [23:16:36]: [31m退出状态: 65[0m

有趣的是,当我们通过终端从 Jenkins 节点运行相同的构建命令时,构建会成功。此外,当通过 Xcode(在 Jenkins 节点内)构建时,它会毫无错误地完成。

尝试了以下操作:

  • 运行 Jenkins 作业之前清除工作区
  • 清除派生数据文件夹
  • Pod 分解和 POD 安装

目前,我们从 Jenkins 节点内执行 fastlane 脚本来创建构建,但这并不理想,因为仅向有限数量的人授予了对节点的访问权限。

如果有人能为我们指出调查此问题的方向,我们会很高兴,因为我们已经没有想法了。

ios jenkins fastlane
1个回答
0
投票

我们做了两件事来解决这个问题。两者可能都不需要。

  1. 将 fastlane 更新到最新的 2.220.0(我不认为这解决了问题)
  2. 我们通过在 ~/.ssh/rc 文件中添加以下行来专门打开 SSH 连接的钥匙串
#!/bin/bash
security  unlock-keychain -p YOUR_LOGIN_PASSWORD_HERE login.keychain

断开节点与 Jenkins master 的连接并重新启动连接。下一个构建成功了。

构建过程可能无法对应用程序进行签名,但错误消息根本没有意义。

© www.soinside.com 2019 - 2024. All rights reserved.