ios - 如何让 Jenkins 使用 usr/bin/security?

标签 ios macos jenkins permissions

我正在使用 Jenkins 构建一个 iPhone 应用程序,因此在某些时候它需要使用 /usr/bin/security。遗憾的是 Jenkins 找不到该命令。

这是控制台日志摘录:

[workspace] $/usr/bin/security find-identity -p codesigning -v FATAL:无法运行程序“/usr/bin/security”(在目录“/Users/jenkins/.jenkins/jobs”中/Obfuscated iOS/workspace"): error=2, No such file or directory java.io.IOException: 无法运行程序“/usr/bin/security”(在目录“/Users/jenkins/.jenkins/jobs/Obfuscated iOS/workspace"): error=2, 没有那个文件或目录

类似这样的事情通常意味着存在权限问题,所以我尝试了 sudo chmod 777/usr/bin/security 但构建产生了相同的结果。

此外,当我从终端尝试 /usr/bin/security find-identity -p codesigning -v 时,它工作正常。

如何让 Jenkins 能够使用此工具以及它可能需要的任何其他 iOS 工具?

更多信息:

奇怪的是,其他 iOS 相关工具,如 /usr/bin/xcodebuild/usr/bin/agvtool 工作正常,如下所示:

[工作区] $/usr/bin/xcodebuild -version Xcode 6.4 构建版本 6E35b 从项目中获取营销版本号 (CFBundleShortVersionString)。 [工作区] $/usr/bin/agvtool mvers -terse1 找到营销版本 (CFBundleShortVersionString):4.0.0。 在项目配置中找到的营销版本 (CFBundleShortVersionString):4.0.0。 从项目中获取技术版本号 (CFBundleVersion)。 [工作区] $/usr/bin/agvtool vers -terse

关于权限的更多信息:

ls -le 产量

-rwxr-xr-x  1 root   wheel    224032 Aug  1 20:43 security

与 xcodebuild 等同一目录中的其他工具相比,这对我来说看起来很正常。

Jenkins 路径

我检查了 Jenkins 系统配置页面,它列出了 PATH:
/usr/bin:/bin:/usr/sbin:/sbin

在构建步骤中运行有效!

如果我使用命令 /usr/bin/security find-identity -p codesigning -v 创建一个只有构建步骤的新作业,那么它运行良好。

这表明该命令在内部由另一个进程运行。

最佳答案

问题的发生是因为“构建输出目录”中使用的值:

enter image description here

删除 ${WORKSPACE} 解决了调用/usr/bin/security 的问题。

关于ios - 如何让 Jenkins 使用 usr/bin/security?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33483193/

相关文章:

ios - Swift:可解码

ios - 如何将标准代码设置为电话号码的前缀?

linux - 如何通过屏幕中的远程机器启动 nc

Jenkins hudson.TcpSlaveAgentListener$ConnectionHandler 运行连接失败

java - 为什么我的 Sonar 包名称中包含 "src/main/java"?

ios - 在框架中查看 Controller 生命周期方法回调?

ios - 合并两个xcode项目并根据条件运行

macos - 实现自定义绘制 NSMenuItem View 的直接方法

c++ - 是否可以在 OSX 10.6 上构建在其他 OSX 10.6 系统上运行的 32 位应用程序?

macos - OS X : portable Git (aka install multiple Git versions)