我最近将一些构建步骤迁移到 Microsoft 托管的 mac 代理。
创建我的应用程序的
.dmg
(大约 10MB)后,我将其复制到 Artifacts Staging 目录中。过去,在我的自托管 Mac 代理上,这需要几秒钟的时间,但现在始终需要大约 15 分钟!
这应该是本地文件复制操作,并且应该快得多。有没有人经历过类似的事情?
这是我的 YAML,以防万一
- job: MacOSApp
pool:
name: 'Azure Pipelines' # Use Microsoft Agent
vmImage: 'macOS-14'
steps:
- task: CopyFiles@2
displayName: 'Copy App'
inputs:
SourceFolder: 'deploy/build-app/output'
Contents: 'MyApp.dmg'
TargetFolder: '$(build.artifactstagingdirectory)'
CleanTargetFolder: false
OverWrite: true
flattenFolders: true
preserveTimestamp: true
代理版
3.241.0
,图片版:20240707.1
我尝试过但没有成功:
flattenFolders
和 preserveTimestamp
选项更新:我尝试添加
ArchiveFiles@2
步骤来创建.zip,然后复制它。在这种情况下,ArchiveFiles@2
步骤会在 50 分钟后超时 (!)
我在我的组织(地理是欧洲)中对此进行了测试,并且
macOS-14
使用CopyFiles@2
任务仅花费了2秒就复制了大约12MB的文件。
您可以尝试其他图像,
macOS-13
或macOS-12
,看看是否需要很长时间。
问题似乎是由于我的
.dmg
的内容引起的,其中包含MyApp.app
和指向/Applications
的符号链接(以便用户可以拖动App进行安装)。如果删除链接,复制操作将正常运行。
我找到了一个解决方法:使用 Finder“别名”而不是符号链接。
我在
bash
步骤中运行以下命令,以在当前工作目录中创建别名:
osascript -e 'tell application "Finder"' \
-e "make alias file to (POSIX file \"/Applications\") \
at (POSIX file \"$PWD\") with properties {name:\"Applications\"}" \
-e 'end tell'
(仅供参考:我曾经这样创建符号链接:
ln -s /Applications Applications
)