MacOS Jenkins节点SSH执行jpackage签名Java应用失败求助
问题:SSH无GUI环境下jpackage签名失败
环境说明
- 主Jenkins服务器部署在CentOS系统,Jenkins节点为运行Sonoma 14.2的macOS机器,主服务器通过无密码证书SSH控制该节点
- 目标:使用OpenJDK 17.0.2的jpackage工具将Java应用打包为macOS应用并完成签名、公证,以获取麦克风权限、后台运行等能力
- 团队密钥(My Team Key)已存入Keychain Access,本地终端执行签名打包命令可正常完成操作
本地可正常执行的jpackage命令
java/jdk-17.0.2.jdk/Contents/Home/bin/jpackage --verbose \ --name AppName \ --app-version 1.0.0 \ --input ./app \ --type app-image \ --mac-package-identifier "com.identifier.appname" \ --mac-package-name "App Name" \ --main-jar myJar.jar \ --runtime-image java/jdk-17.0.2.jdk \ --mac-sign \ --mac-signing-key-user-name "My Team Key" \ --java-options "-Djava.net.preferIPv4Stack=true" \ --java-options "-Dfile.encoding=UTF-8" \ --mac-entitlements /var/root/sipsocket/entitlements.plist
SSH执行时的错误信息
Warning: unable to build chain to self-signed root for signer "Developer ID Application: ...." app/oneOfAppFileInSubfolder: errSecInternalComponent
已尝试但无效的方法
- 将用户加入root组,使用sudo执行命令
- 启用root用户并以root身份执行
- 执行
/usr/bin/codesign --remove-signature app/oneOfAppFileInSubfolder尝试移除现有签名 - 尝试无GUI环境下的密钥分区配置命令,未生效
- 在Jenkins任务中尝试带/不带-t选项的SSH命令,例如:
ssh -i id_rsa -t user@serverIP 'zsh -c "cd ./Developer && sudo ./run"'
疑问
怀疑问题源于SSH执行时的无GUI环境,请问是否有解决方法,或是我遗漏了什么关键点?
内容的提问来源于stack exchange,提问作者Arttu
相关产品推荐
相关产品推荐

