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

kra*_*vil 6 permissions macos ios jenkins

我正在用Jenkins构建一个iPhone应用程序,所以在某些时候需要使用它/usr/bin/security.不幸的是詹金斯找不到那个命令.

这是控制台日志摘录:

[workspace] $ /usr/bin/security find-identity -p codesigning -v FATAL: Cannot run program "/usr/bin/security" (in directory "/Users/jenkins/.jenkins/jobs/Obfuscated iOS/workspace"): error=2, No such file or directory java.io.IOException: Cannot run program "/usr/bin/security" (in directory "/Users/jenkins/.jenkins/jobs/Obfuscated iOS/workspace"): error=2, No such file or directory

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

此外,当我/usr/bin/security find-identity -p codesigning -v从终端尝试它工作得很好.

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

更多信息:

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

[workspace] $ /usr/bin/xcodebuild -version Xcode 6.4 Build version 6E35b Fetching marketing version number (CFBundleShortVersionString) from project. [workspace] $ /usr/bin/agvtool mvers -terse1 Found marketing version (CFBundleShortVersionString): 4.0.0. Marketing version (CFBundleShortVersionString) found in project configuration: 4.0.0. Fetching technical version number (CFBundleVersion) from project. [workspace] $ /usr/bin/agvtool vers -terse

更多关于权限:

ls -le 产量

-rwxr-xr-x  1 root   wheel    224032 Aug  1 20:43 security
Run Code Online (Sandbox Code Playgroud)

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

詹金斯道

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

在构建步骤中运行有效!

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

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

kra*_*vil 1

由于“构建输出目录”中使用的值而发生问题:

在此输入图像描述

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