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_importghp_import函数中,使用nojekyll变量来标识是否要写入nojekyll文件,而该变量是写死在代码里的。因此fork一份代码,修改上述对应文件,把上述引用的代码的27行中nojekyll值改为False。

然后把Jenkinsfile中pip install mkdocs改成安装上面fork的仓库的地址即可,如:

pip install git+https://github.com/YOUR_USERNAME/mkdocs.git@master

保存即可。

另外,如希望跟随mkdocs官方进行升级,还需自己维护该仓库。