Jenkins/SSH调用xcodebuild报‘会话已过期,请登录’错误求助
解决xcodebuild通过Jenkins/SSH执行时的DVTPortalServiceErrorDomain Code=1100问题
以下是开发者们验证过的可行解决方案:
匹配钥匙串上下文:SSH或Jenkins运行的用户可能和本地登录用户不一致,务必确保解锁的是运行构建任务的用户对应的钥匙串。另外,新版本macOS默认钥匙串是
login.keychain-db,而非旧版的login.keychain,尝试替换解锁命令中的路径:/usr/bin/security unlock-keychain -p 'mypwd' ~/Library/Keychains/login.keychain-db /usr/bin/security set-keychain-settings -t 9600 ~/Library/Keychains/login.keychain-db用应用专用密码绕开钥匙串会话:直接在xcodebuild命令中指定Apple ID和应用专用密码(需提前在Apple ID官网生成),彻底避免钥匙串会话过期问题:
xcodebuild -project YourProject.xcodeproj -scheme YourScheme archive \ -username your_apple_id -password your_app_specific_password刷新Xcode开发者会话:在SSH环境中执行以下命令重置Xcode的认证缓存,之后远程登录机器打开Xcode重新登录开发者账号一次:
defaults delete com.apple.dt.Xcode xcode-select -r验证钥匙串权限:执行
security show-keychain-info ~/Library/Keychains/login.keychain-db查看钥匙串设置,确认超时时间正确,且没有额外的强制锁定规则。
这个问题本质是无GUI环境下(SSH/Jenkins),Xcode无法访问GUI会话中的Apple ID认证缓存,或钥匙串的权限上下文不匹配。其中用应用专用密码直接传入命令行的方案稳定性最高,大部分开发者用这个解决了问题。
内容的提问来源于stack exchange,提问作者Gary Hooper
相关产品推荐
相关产品推荐

