我们的自动构建在Jenkins上运行.构建本身在从属服务器上运行,从服务器通过SSH执行.
我收到一个错误:
00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.
Run Code Online (Sandbox Code Playgroud)
我已经尝试了迄今为止我在其他帖子中看到的所有建议:
在所有情况下,我都会得到同样的错误.
为了诊断问题,我尝试在我的本地终端上运行"security unlock-keychain"命令,发现它实际上并没有解锁钥匙串 - 如果我查看Keychain Access,锁定符号仍然存在.无论我是在命令行上传递密码还是让它提示我,都是这种情况.使用GUI解锁相同的钥匙串将提示我输入密码然后解锁.另外,如果我运行"security lock-keychain",我会在运行命令后立即看到键锁.这让我觉得解锁钥匙串实际上并不起作用.我在Lion(我们用于构建奴隶)和Mavericks(我正在开发)上遇到相同的行为.
接下来,我尝试将-v添加到所有安全命令:
list-keychains "-d" "system" "-s" "/Users/tester/.secret/App.keychain"
Listing keychains to see if it was added: ((
"/Library/Keychains/System.keychain"
))
unlock-keychain "-p" "**PASSWORD**" "/Users/tester/.secret/App.keychain"
build/App.app: User interaction is not allowed.
Run Code Online (Sandbox Code Playgroud)
从这看起来,列表 - 钥匙链似乎是不起作用的.也许都不行.:/
这里有一个类似的问题.解决方案很有趣 - 在launchctl中将"SessionCreate"设置为true.但我不是在master上构建 - 我的构建过程是从一个slave构建机器上的SSH启动的.也许有一种命令行方式可以在运行"SessionCreate"时执行launchctl正在执行的操作?
我在这方面找不到任何东西(也许我只是使用了错误的搜索条件......):
我们正在努力为我们的应用程序构建合理的持续集成设置.为了实现真正合理的实现,构建服务器应该能够从apple自动刷新使用的配置文件.与X-Code组织器的功能类似,但通过命令行自动完成.
任何线索,如果可能的话?
我使用xcodebuild命令创建了一个签名的.xcarchive文件.
.xcarchive里面是一个.app文件..app内部是一个名为archived-expanded-entitlements.xcent的文件.这个文件是我的问题的关键.
我运行一个不同的xcodebuild命令,从.xcarchive创建一个.IPA文件.
创建IPA失败,因为缺少archived-expanded-entitlements.xcent文件.问题是,xcodebuild正在创建一个临时目录,它通过我的.app文件进行复制,而在THAT .app文件中,没有archived-expanded-entitlements.xcent文件.
除了这个之外,所有其他文件都在那里.
我运行的命令如下:
这会创建xcarchive:
xcodebuild -project diplomat.xcodeproj -scheme schemeName archive -archivePath /Path/To/Archive/name.xcarchive -configuration AppStore CODE_SIGN_IDENTITY="identity" PROVISIONING_PROFILE=provProfile
Run Code Online (Sandbox Code Playgroud)
这创造了IPA:
xcodebuild -exportArchive -exportFormat IPA -archivePath /Path/To/Archive/name.xcarchive -exportPath /Path/To/Archive/name.ipa
Run Code Online (Sandbox Code Playgroud)
尽管指定了.xcarchive的位置,但它会创建一个临时目录,但不包含重要文件.请注意,archived-expanded-entitlements.xcent文件是在.xcarchive进程(第一个运行的命令)期间创建的,并且在第二个命令运行期间无法复制到临时目录中.
这是确切的错误.谷歌和StackOverflow已经产生了类似的错误,但没有解决这个实际问题.
Checking original app
+ /usr/bin/codesign --verify -vvvv /var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541- 42128-00007ED35037747A/name.app
Program /usr/bin/codesign returned 1 :
[/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app: a sealed resource is missing or invalid
file missing:
/private/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app/archived-expanded-entitlements.xcent
]
Codesign check fails :
/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app: a sealed resource is missing or invalid
file missing:
/private/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app/archived-expanded-entitlements.xcent
Done checking the original app
Run Code Online (Sandbox Code Playgroud) 我刚刚更新了我的xcode安装以使用xcode 6.0.1,以便开始为ios8设备编译我的应用程序.出于某种原因,我无法正确签署使用以下内容生成的应用程序文件:
xcodebuild -project GrantM/GrantM.xcodeproj -configuration Release
Run Code Online (Sandbox Code Playgroud)
它编译代码,看起来很好,但运行:
/usr/bin/codesign --verify -vvvv GrantM/GrantM.app
Run Code Online (Sandbox Code Playgroud)
给我吗:
Program /usr/bin/codesign returned 1 : [GrantM/GrantM.app: resource envelope is obsolete]
Codesign check fails : GrantM/GrantM.app: resource envelope is obsolete
Run Code Online (Sandbox Code Playgroud)
使用以下命令检查代码是否已签名:/ usr/bin/codesign -dv GrantM/GrantM.app
收益:
Executable=Documents/GrantM/GrantM/GrantM.app/GrantM
Identifier=com.grantapps.GrantM
Format=bundle with Mach-O universal (armv7 (16777228:0))
CodeDirectory v=20200 size=647 flags=0x0(none) hashes=23+5 location=embedded
Signature size=4336
Signed Time=24 Sep 2014 12:54:53 pm
Info.plist entries=34
TeamIdentifier=N3KKU46JLY
Sealed Resources version=2 rules=5 files=55
Internal requirements count=1 size=180
Run Code Online (Sandbox Code Playgroud)
有没有其他人在OSX 10.9.5和xcode 6.0.1上遇到类似的问题?或者我只是有点愚蠢并做一些明显错误的事情?
另外,我能够找到在xcode中生成的应用程序的调试版本,并且可以成功签名,但它是一个调试版本,它不适用于distrobution.我甚至无法手动签署xcodebuild生成的应用程序文件.
感谢您提前提供的任何帮助或建议.
我正在尝试为稳定的iPhone应用程序设置持续构建/集成.
我有:
最大的问题是代码签名和钥匙串.
我们代表客户的开发者身份创建代码,因此我们有几个开发人员身份,我们将添加更多.
我想将Mini放在一个黑暗的房间里,从不看它,但是第一次使用开发者身份构建时,会弹出一个GUI对话框,询问您是否要始终允许codesign访问开发者身份.
假设您这样做,该对话框修改了钥匙串访问控制列表(ACL),以便允许使用代码签名.
您可以通过打开Keychain Access,扩展证书,选择私钥,右键单击,选择"获取信息",然后切换到"访问控制"选项卡来查看此信息."处女"密钥只在其"始终允许"应用程序列表中具有Keychain Access.您在对话框中使用和确认的一个也将具有编码.
这个框提供了一种添加应用程序的方法,除了你得到标准的Finder文件选择器,它隐藏了Unix文件夹.没有办法导航到/ usr/bin/codesign.所以手动添加是不可能的!
有没有人知道这方面的方法?
我知道有一种方法使用"安全导入"的-T开关,但是当你首先导入密钥时必须指定ACL,因此在Keychain GUI中添加的任何键都必须被抛出并重新导入.不是很好.
xcode ×3
codesign ×2
ios ×2
iphone ×2
xcodebuild ×2
code-signing ×1
ios8 ×1
jenkins ×1
keychain ×1
macos ×1
provisioning ×1
ssh ×1
terminal ×1
xcode6 ×1