使用 Github Actions 自动构建 Gitbook 并推送
浏览 281 | 评论 0 | 字数 2184
梦彗業
2021年04月24日
  • 上文中说到,《我的世界服务器搭建指南》是发布在 Github 上的,作为对开源精神的鼓励,Github 上的每个开源仓库可以享受每月 2000 小时的 Actions 运行时长。Actions 是 Github 发布的一款自动化持续集成工具,同时拥有类似 Docker hub 的官方市场,可以使用他人创建的 Actions。

    因此我们便可以通过 Actions 来自动构建 Gitbook 。

    actions.png

    在发布《我的世界服务器搭建指南》的实际过程中,我们需要实现以下需求:

    1. 自动构建 Gitbook
    2. 将构建好的 Html 文件 push 至多个 Git 仓库
    3. 对开启 Pages 的仓库保留 CNAME 文件

    当然第3个需求是我们后来发现了问题才总结出的,接下来让我们根据时间线来捋一捋当时的我们遇到了什么。

    首先根据的 ZanderZha 的 gitbook-action 配置好了 workflows,但之后我发现 Actions 自动构建出 Html 之后,没法正常的 git push 到 Html 仓库,查阅大量资料也发现具体原因,咨询了 Bryan33 了解到应该是 remote repo 和本地 commit 不一致存在冲突,必须要先 pull 下来再 merge 才能 push 回去。但是我所使用的 actions 脚本并没有预设这种情况,也就无法采取这种方案。

    于是乎我开始了我的曲线救 actions 操作,因为 Html 版仓库其实没有必要保留 commit ,因此我们只要 --force 就能让actions push 上去,再把 Pages 开到仓库的 root 下就行了,其他仓库的 push 只不过是复制粘贴一行 repo 地址的事,完美实现需求 1 和 2 。

    workflows1.png

    故事还远没有结束,众所周知我是 MonogatariCloud 的铁牌销售,所以这个教程就名正言顺的担当了帮助中心的职责。因为 Github Pages 并不能绑定多个域名,所以我们需要再新建一个 repo , 并且让 actions 也自动 push 到这里,再开一个 Pages 使用物语云帮助中心的域名 CNAME 过来。

    于是就出现了一个非常重要的问题:最初的我只是按照上述操作进行的,并且手动在 repo settings 里设置好域名,但是后来有客户反应无法访问这个 Pages 。根据排查发现,Github Pages 的域名绑定会在 root 下创建一个名为 CNAME 的文件,但之后的一次更新中, actions 构建完成后 git --force push 把这个 CNAME 文件覆盖掉了,导致域名绑定失效,从而无法访问。

    这就非常的离谱,为什么 Pages 的域名绑定是根据 repo root 下的一个文件来确定的???

    但是问题还得解决,之前我们提到根据目前的 actions 设定要保证需求 1 和 2 的实现只能采取 git --force push ,当然也就无法实现增量更新的需求。于是我再次开始了曲线操作,既然我们没法保留原本的 CNAME 文件,那我们 push 的时候把 CNAME 一块儿 push 过去不就可以了吗,我真聪明!于是我直接加了一行 wget 下来 CNAME 的 raw 的命令不就大功告成啦。

    噔噔咚,没用!

    草(一种植物),原来是新增的 CNAME 文件需要再次初始化才能被 git 认上,否则没法 push 过去。好家伙,我直接 git init ,完全OK desu!

    workflows2.png

    得到了 a39 大佬的钦定:

    骚.png

    骚!

    本文作者:梦彗業
    本文链接:https://blog.mhy278.net/p/52/
    最后修改时间:2021-04-25 13:38:57
    本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
    评论
    与本文无关评论请发留言板。首次评论需要审核,请不要发广告,谢谢。
    textsms
    支持 Markdown 语法
    email
    link
    评论列表
    暂无评论