Coding企业版部署mkdocs文档出现404解决方法
- 2019 年 10 月 6 日
- 筆記
根据我的上一篇文章“使用Coding企业版自动部署mkdocs文档 ”来进行部署mkdocs文档,最近出现了404问题。查看部署记录没有异样。

部署日志

检查再早前的部署记录,有两次是失败的,相比上方的日志输出,多了一行:
2019/08/06 18:15:41 .nojekyll found. No build will be performed.
因此猜测是因为mkdocs部署时自动生成的.nojekyll阻止了coding进行文档部署。
查看mkdocs源码:https://github.com/mkdocs/mkdocs/blob/master/mkdocs/utils/ghp_import.py
def add_nojekyll(pipe): write(pipe, enc('M 100644 inline .nojekylln')) write(pipe, enc('data 0n')) write(pipe, enc('n'))
def run_import(srcdir, branch, message, nojekyll): cmd = ['git', 'fast-import', '--date-format=raw', '--quiet'] kwargs = {"stdin": sp.PIPE} if sys.version_info >= (3, 2, 0): kwargs["universal_newlines"] = False pipe = sp.Popen(cmd, **kwargs) start_commit(pipe, branch, message) for path, _, fnames in os.walk(srcdir): for fn in fnames: fpath = os.path.join(path, fn) fpath = normalize_path(fpath) gpath = gitpath(os.path.relpath(fpath, start=srcdir)) add_file(pipe, fpath, gpath) if nojekyll: add_nojekyll(pipe) write(pipe, enc('n')) pipe.stdin.close() if pipe.wait() != 0: sys.stdout.write(enc("Failed to process commit.n")) def ghp_import(directory, message, remote='origin', branch='gh-pages', force=False): if not try_rebase(remote, branch): log.error("Failed to rebase %s branch.", branch) nojekyll = True run_import(directory, branch, message, nojekyll) cmd = ['git', 'push', remote, branch] if force: cmd.insert(2, '--force') proc = sp.Popen(cmd, stdout=sp.PIPE, stderr=sp.PIPE) out, err = proc.communicate() result = proc.wait() == 0 return result, dec(err)
可见在上述run_import
和ghp_import
函数中,使用nojekyll
变量来标识是否要写入nojekyll文件,而该变量是写死在代码里的。因此fork一份代码,修改上述对应文件,把上述引用的代码的27行中nojekyll值改为False。
然后把Jenkinsfile中pip install mkdocs
改成安装上面fork的仓库的地址即可,如:
pip install git+https://github.com/YOUR_USERNAME/mkdocs.git@master
保存即可。
另外,如希望跟随mkdocs官方进行升级,还需自己维护该仓库。