Skip to content

master分支和preview分支构建失败详解

yilinzeng edited this page Apr 6, 2021 · 12 revisions

概述

本文讲述了在发布Rancher开源版文档流程中,drone里面常见的报错及处理方法。我近期对文档进行了拆分和重构。过程中最让人困扰的事情并不是内容拆分,而是完成拆分之后,跑流水线的时候出现报错。只差临门一脚就完成更新上线的感觉太不好了。遇到的报错多了,也就自然知道每个报错对应的解决方式。鉴于以后发版可能还会碰到类似的报错,现在先整理一份处理报错的心得,以后遇到报错的时候可以翻出来看看。

构建流程

首先,我们需要了解构建的流程,以便于后续了解报错出现在流程中的哪一个步骤。Rancher文档的构建流程分为两大步骤:合入master(clone --> build ),上传阿里云OSS(clone --> build--> preview/master)。下文的常见报错出现于上传阿里云OSS中的“preview/master”阶段。当然,在合入master阶段也有可能报其他的错误,由于这些错误可以在本地运行 yarn run start 进行排查,如果运行成功则表示这个阶段没有引起报错的问题(可能会有其他 “不会引起报错的问题”,例如导航栏中有遗漏 --->需要去检查sidebars.js;或文档首页有遗漏 --->需要去检查metadatas.js)。如果在合入master build 阶段出现报错,则意味着你的sidebars.js或metadata.js有问题。大多数是因为 sidebars.js 和 metadata.js的引用关系出现错误,或 index.md 与 metadata.js的引用关系出现错误。后续我会考虑再开一篇wiki专门讲这部分的内容,暂且称之为“Invisible Errors”。  

常见报错及解决方法

Malformed XML

  • 报错信息:ErrorMessage="The XML you provided was not well-formed or did not validate against our published schema."
  • 出现报错的场景:每次大幅更新文档结构和内容时,都会触发 “Malformed XML”报错。
  • 现象:流水线显示报错,而已作出的改动可以更新到现网。
  • 排查:这个报错信息出自阿里云OSS,官方的解释如下:"XML格式非法,请求中XML非法,请根据具体请求排除参考接口:DeleteObjects、CompleteMultipartUpload、PutBucketLogging、PutBucketWebsite、PutBucketLifecycle、PutBucketReferer、PutBucketCORS。"官方的解释显然没有给我们定位问题提供任何思路方法。
  • 解决方法:经过 Rancher中国社区支持工程师 @kingsd041 的多次尝试, 这个报错的最优解是清空阿里云OSS中的所有文件,然后重新上传一遍。代价是文档网站会有一段时间(~30mins)不可用。我们推测出现这个报错的原因是:由于更新前后后文档网页的数量和内容变化巨大,阿里云OSS无法正确对比变化,误认为有错。

mode is not defined

  • 报错信息:ReferenceError: mode is not defined
  • 出现报错的场景:<br/></br>常见于表格内,用于另起一行描述。在Rancher英文文档中常见。由于中文文档的框架不兼容这个玩意,在翻译过程中,遗留的<br/></br>会触发报错。
  • 解决方法:全局搜索 <br/></br>,删除后 add、commit、push -f,重新跑一遍流水线就好了。

Page unavailable

  • 报错信息:Sorry, the page you are looking for is currently unavailable. Please try again later
  • 出现报错的场景:常见于网络连接不稳定的场景,并不是因为文档本身有问题,而是因为网络连接不稳定(科学上网)导致文档上传OSS断断续续的时候,会触发这个报错。
  • 解决方法:出现该报错信息后,单击drone右上方的 “restart”按钮重新开始(重启大法好)。如果重启之后还有报错的话,出问题的地方就是科学上网工具,可以考虑换个节点试试看。  

总结

  1. 首先看报错信息,一般来说报错信息虽然不会明确告诉你错误出现在哪个文件的哪一行,但是至少会告诉你错误的类型。
  2. 如果报错信息没有提供有用的东西,则可以去看看官方文档。再不行的话就去看看Google、StackOverflow、CSDN等网站。
  3. Last Resorts:重启和删库重来

References