失败的生成
重要
Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。
生成失败的原因多种多样,这些原因可能是项目独有的。 诊断生成失败的一种有效方法是将它们与正常工作的生成进行比较。 此过程可以最大程度地减少变量并确定方案的相关条件。
如果生成在本地有效,但不在 App Center 中
通常,发生此问题的原因是文件未提交、工具不同或依赖项未还原。 若要检查,可以将整个项目 git clone 到新文件夹中。 然后使用与 App Center 相同的配置进行编译,以便加以比较。
- 打开终端或命令行提示符,然后键入:
mkdir appcenter-test
- 然后更改目录:
cd appcenter-test
- 使用以下代码克隆存储库:
git clone -b <branch> <remote_repo>
- 在本地 IDE 或命令行中启动新克隆的项目。
- 尝试 将 App Center 中执行的生成命令 与本地执行的命令进行比较。
- 将本地使用的工具版本与我们的云生成计算机进行比较
将忽略具有修改文件名或位置的文件
生成可能会忽略最近移动或重命名的关键文件。 尝试在生成配置中选择“ 保存 ”或“ 保存 & 生成”。 任一选项都对存储库树重新编制索引并更新生成定义。
已知原因是移动或重命名 生成脚本 & nuget.config 文件。
比较 App Center 中的不同版本
跟踪生成设置中的更改
可以通过调用以下 API 方法来记录分支配置: https://openapi.appcenter.ms/#/build/branchConfigurations_get
API 不允许直接记录过去的配置。 但是,可以使用 自定义生成脚本 运行此命令,以便生成在执行时自动记录当前配置。
跟踪 App Center 云生成计算机中的更改
与生成设置一样,可以通过查看此文档来检查当前工具:云生成计算机。
但是,可以通过在生成脚本中运行以下命令来记录哪些工具可用于特定生成:
eval cat $HOME/systeminfo.md
某些分支可正常工作,而另一些分支则失败
尝试检查分支之间的生成设置或提交的代码的差异。 此外,如果生成在同一分支上的某个提交后一直失败,则值得检查在失败提交中进行了哪些更改。
生成间歇性失败
生成可能会失败,而无需对源代码或生成设置进行任何更改。 例如:
- 不同版本的包已还原
- 外部服务未响应
- 生成中的单个任务超时
- 等等
尝试检查失败时生成的错误是否一致。
隔离和解释错误消息
自动错误突出显示
App Center Build 会自动尝试突出显示常见错误消息或有用的输出,使其更可见。 通常可以在主要错误、之前的日志记录或之后的日志记录中找到线索。 此应用由项目设置 & 生成配置签名。 因此,Android jarsigner 会记录错误:
jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size (expected 13274 but got 13651 bytes)
##[error]Error: /usr/bin/jarsigner failed with return code: 1
##[error]Return code: 1
更深入发掘
如果找不到相关的错误消息,则下一步是下载生成日志,可以从main生成页执行此操作。 打开名为 logs_n > Build
的文件夹,你将看到按数字顺序列出的单独日志文件的列表。 例如:
- 1_Intialize job.txt
- 2_Checkout.txt
- 3_Tag build.txt
- 等等
日志根据生成的主要阶段进行编号。 大多数生成失败会导致跳过阶段并省略关联的日志:
- (步骤 1-9) ...
- 10_Pre生成 Script.txt
- 11_Build Xamarin.Android project.txt
- 12_Sign APK.txt
- 15_Post生成 Script.txt
- 20_Post作业 Checkout.txt
- 21_Finalize Job.txt
首先跳过了阶段 13,因此阶段 12 是一个很好的起点。 后面的阶段也被跳过,但它们不太可能相关。
标识相关提交
在生成 UI 中,可以查看适用于当前生成的提交消息和哈希。 可以使用此功能跟踪生成结果并将其与源代码中的更改相关联。
可以通过转到 Appcenter.ms - [组织名称] - [App-Name] -> 生成> -> [Branch-Name] -> [Build-Number] 来>查看提交消息 & 哈希
在生成信息的顶部,你将看到提交的名称和缩写哈希。 在屏幕截图中:
- 将 Xamarin.UITest 从 3.0.5 升级到 3.0.6
- 提交 328ff115
单击缩写哈希将在同一提交中打开链接的存储库: https://github.com/microsoft/appcenter-Xamarin.UITest-Demo/commit/328ff115cb67280f7bdc70074ff605c8962470e4
后续步骤
下面是一些用于进一步研究问题的选项:
联系支持
登录 https://appcenter.ms/apps 并单击屏幕右下角的聊天图标。 为获得最佳结果,最好使用以下命令打开票证:
- 观察结果摘要
- 有关此问题的研究的详细信息和引文
- 失败生成的 URL,包括基本信息,如应用名称 & 生成 ID
- 传递生成的 URL 与失败 (进行比较(如果适用))