部署 teedoc 生成的网站到 github pages
因为 github
提供免费的 pages
服务, 我们只需要将html
页面提交到gh-pages
分支, 然后在项目设置里面开启pages
服务即可.
同时, 我们也将页面构建和推送做了自动化, 每次向仓库提交代码/文档, 都会触发github action
自动构建并推送到gh-pages
页面, 十分简单方便可靠!
克隆模板仓库
这里使用 teedoc 官网的源码作为模板, 访问 https://github.com/teedoc/template 或者 https://github.com/teedoc/teedoc.github.io
点击 Use this template
然后填写新的仓库名称(如果你不准备自定义域名,则仓库名字最好是teedoc.github.io
将teedoc
替换成你的用户名或者组织名)和描述,基于这个仓库新建一个你自己的仓库,现在你获得了和 teedoc
官网一模一样的仓库了
会发现有一个
.github/workflows
的目录,这个就是github action
的配置文件,我们利用这个功能来实现:
当我们更新仓库的源文件时,github action
自动根据这个配置文件的命令构建生成静态网页,然后推送到这个仓库的gh-pages
分支
其中
sync_code_to_gitee.yml
和sync_pages_to_gitee.yml
是用来将代码同步到gitee
的, 可以将他们删除, 需要时请自行研究
自动触发构建
仓库每提交一次修改,会自动触发构建,构建完成后gh-pages
分支就会出现生成的html
页面, 可以在Actions
栏看到进度和日志
如果是绿色的勾, 就代表成功了,否则就是失败了,可以点进去看构建日志报了什么错,一般都是前面的值填错了
设置 pages 服务
然后在设置里面找到 pages
服务设置,打开即可,然后访问对应的域名,可以勾选 Enforce HTTPS
来使能HTTPS
(推荐)
比如这里是https://teedoc.github.io/
注意如果根路径不是
/
,而且没有自定义域名(自定义域名见后面的介绍),比如https://teedoc.github.io/my_site/
, 则需要在site_config.json
中配置"site_root_url":"/my_site/"
Pages 服务自定义域名
部署好后会有一个默认的域名,比如teedoc.github.io
, 如果想使用自己的域名,比如teedoc.neucrack.com
,即需要自定义域名。
在site_config.json
文件中设置了网站根目录映射的文件目录,比如这里是pages/index/zh
目录:
"pages": {
"/": "pages/index/zh",
"/en/": "pages/index/en"
},
在这个目录新建一个文件,取名CNAME
注意没有后缀,然后写入自定义的域名比如teedoc.neucrack.com
保存文件,提交即可
你可能在设置里面看到了
custom domain
的设置,但是需要像这里说的设置CNAME
文件才能保持一直生效,不然下次提交自定义域名就失效了
自动构建进阶配置
在.github/workflows/publish.yml
文件中配置了构建的流程, 主要包含了构建文档, 和推送文档到gh-pages
分支, 可以根据情况修改脚本.
推送文档到gh-pages
分支用了, github-pages-deploy-action 这个 github actioin
插件, 更多进阶的用法请阅读这个插件的文档
一般用上面的方式就足够了, 甚至不用配置任何参数就可以使用, 另外, publish.yml
底部提供了不用插件的推送写法, 如果你需要, 可以复制到上面使用, 使用时可能需要用到以下知识点:
- 生成 ssh 密钥
在本地生成一对key
(windows下需要先安装相关软件,请自行安装(安装git就会有))
ssh-keygen -t rsa -f key.txt
得到了key.txt
和 key.key.pub
两个文件
- 设置密钥
到文档项目的设置里面设置ssh
密钥, 添加一个ssh
密钥, 拷贝 key.txt.pub
中的内容,注意是pub
文件,即公钥,选中允许写入权限, 名字随便取
然后点击Secrets
,设置秘密键值对, 需要设置的变量有:
ACCESS_KEY
: 复制key.txt
中的内容GIT_EMAIL
: 设置一个git
提交邮箱,设置你的github
邮箱即可GIT_NAME
: 设置一个git
提交名字,设置你的github
名字即可REPO
: 仓库地址, 设置为组织名/仓库名
或者用户名/仓库名
,比如teedoc/teedoc.github.io
即可
当然, 这些变量也可以通过优化脚本直接从提交记录中获得(除了ACCESS_KEY
), 有兴趣可以优化, 也欢迎提交 PR