目标:使用 Amazon EC2 和 Jenkins 管道自动执行 macOS 应用程序公证。
问题陈述:
EC2 macOS AMI 仅在这些 AMI 中预安装了 Xcode 命令行工具,我无法Xcode.app通过 ssh/命令行将其安装到 EC2 计算机上。要安装 Xcode,必须通过 Apple App Store,首先使用 GUI 登录。需要Xcode.app公证。
尝试/实验
我已经尝试过mas cli不再支持从命令行登录。https://www.funkyspacemonkey.com/use-the-mac-app-store-from-the-command-line
在 macOS High Sierra (10.13) 中,Apple 从 StoreFoundation 私有 Apple 框架中删除了 -[ISAccountService signInWithContext:replyBlock:] 方法,该应用程序依赖该框架通过登录命令对用户进行身份验证。我已经进行了大量的挖掘和调试,但还没有找到另一个可以通过 Mac App Store 对用户进行身份验证的 API。
运行较旧 macOS 版本 (10.9-10.12) 的用户不受影响。
您需要有 xcode.app 才能不进行公证https://developer.apple.com/forums/thread/126350 该文档似乎足够清楚:
“准备用于公证的软件 公证需要 Xcode 10 或更高版本。构建新的公证应用程序需要 macOS 10.13.6 或更高版本。装订应用程序需要 macOS 10.12 或更高版本。”
看来'altool'用于xcode12的公证。我尝试将 altool 从我的开发机器复制到 Jenkins 机器/Library/Developer/CommandLineTools/usr/bin,但在运行时出现此错误。
dyld: Library not loaded: @rpath/ITunesConnectFoundation.framework/Versions/A/ITunesConnectFoundation
Referenced from: /Library/Developer/CommandLineTools/usr/bin/altool
Reason: image not found
zsh: abort xcrun altool
Run Code Online (Sandbox Code Playgroud)
即使otool -L没有显示altool与 xcode 有任何链接。
/Library/Developer/CommandLineTools/usr/bin/altool:
@rpath/ITunesConnectFoundation.framework/Versions/A/ITunesConnectFoundation (compatibility version 1.0.0, current version 1.0.0)
@rpath/AppStoreService.framework/Versions/A/AppStoreService (compatibility version 0.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 1122.24.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1775.109.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1775.109.0)
/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 59754.100.88)
Run Code Online (Sandbox Code Playgroud)
xcode-install是一个在命令行上安装、更新和管理 Xcode 版本的漂亮工具。也可以与 Ansible 等自动化工具配合使用。它使用fastlane从 Apple Developer Portal 下载 Xcode、模拟器。这意味着您需要一个 ADP 帐户。
安装:
$ gem install xcode-install
Run Code Online (Sandbox Code Playgroud)
您还需要设置环境变量XCODE_INSTALL_USER(
XCODE_INSTALL_PASSWORD使用您的 ADP 登录名)。如果您的 ADP 账户没有启用 2FA,您SPACESHIP_SKIP_2FA_UPGRADE=1还需要设置 。如果您的 ADP 帐户启用了 2FA,请参阅此问题。
$ xcversion list
Run Code Online (Sandbox Code Playgroud)
列出所有可用的 Xcode 版本。例如,要安装 13.2.1,请运行:
$ xcversion install 13.2.1
Run Code Online (Sandbox Code Playgroud)
确保您至少有 30 GB 的可用磁盘空间。否则 Xcode 存档解压失败。如果您需要增加 EBS 卷的大小,请参阅AWS 文档中的这篇文章,了解如何在 Mac 上执行此操作。
当然,也可以使用屏幕共享(VNC)通过GUI安装Xcode。要在 AWS 上启用屏幕共享:
如果您尚未设置用户密码,请设置:
$ sudo passwd ec2-user
Run Code Online (Sandbox Code Playgroud)
启用屏幕共享:
$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
-activate -configure -access -on \
-restart -agent -privs -all
Run Code Online (Sandbox Code Playgroud)
在本地计算机上启动 SSH 隧道:
$ ssh -L 5900:localhost:5900 -i /path/my-key-pair.pem ec2-user@my-instance-public-dns-name
Run Code Online (Sandbox Code Playgroud)
通过连接到 ,从本地计算机使用Screensharing.app连接到您的 AWS Mac localhost:5900。
| 归档时间: |
|
| 查看次数: |
3596 次 |
| 最近记录: |