生成失败的原因多种多样,这些原因可能是项目独有的。 诊断生成失败的一种有效方法是将它们与正常工作的生成进行比较。 此过程可以最大程度地减少变量并确定方案的相关条件。
如果生成在本地有效,但不在 App Center 中
此问题通常是由于未提交的文件、不同的工具或未存储的依赖项。 若要检查,可以将项目的完整 git 克隆到新文件夹中。 然后使用与 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
更深入发掘
如果找不到相关的错误消息,则下一步是下载生成日志,可以从主生成页执行此操作。 打开名为 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 - [Organization-Name] -> [App-Name] -> Build ->> [Branch-Name] - [Build-Number] 来>查看提交消息&哈希
原型 URL: https://appcenter.ms/orgs/[ORG-NAME]/apps/[APP-NAME]/build/branches/[BRANCH-NAME]/builds/[BUILD-NUMBER]
在生成信息的顶部,你将看到提交的名称和缩写哈希。 在屏幕截图中:
将 Xamarin.UITest 从 3.0.5 升级到 3.0.6
提交 328ff115
单击缩写哈希将在同一提交中打开链接的存储库: https://github.com/microsoft/appcenter-Xamarin.UITest-Demo/commit/328ff115cb67280f7bdc70074ff605c8962470e4
下面是一些用于进一步研究问题的选项:
其他生成故障排除文档
StackOverflow (App Center)
开发平台文档。
登录 https://appcenter.ms/apps 并单击屏幕右下角的聊天图标。 为获得最佳结果,最好使用以下命令打开票证:
观察结果摘要
有关此问题的研究的详细信息和引文
失败生成的 URL,包括应用名称 & 生成 ID 等基本信息
传递生成的 URL 与失败 (进行比较(如果适用))