使用私有仓库发布 GitHub Pages
验证私有库发布文章
相信已经成功使用github建站的朋友们肯定会有一个想法, 就是可不可以将文章仓库私有也能实现建站的功能呢?
答案是可以的, 本文就是一个将一个公共仓库站点私有化后的例子. 并将过程总结一下, 方便大家参考使用.
站点私有化过程的的变与不变
首先,使用github pages建站, 项目名就固定死了,必然是<用户名>.github.io
其次,如果有域名的话,像域名配置等一些配置也是需要放到 外露站点下的.
除此之外, 其他的内容就就是可以变的了.因为github.io站点最终暴露的就是一个编译好的web静态网站.
至于源码是不是在这里,无所谓的.之所以源码与静态站点放到一起,核心还是方便github的 action自动编译.
好了, 了解了这些核心要素, 我们可以操作的部分也就有了.
就像我们正常的开发流程一样,我们可以把整个网站的发布流程拆分为两部分: 打包 与 发布.
其中打包可以在我们的私有仓库中进行, 然后将打包后的静态网站 发布到github.io公仓中.
这里就用到了github的 action 自动编译功能. 其会在我们提交代码的时候触发一个操作,
调用一段脚本命令执行.
而这段脚本的核心就是通过git 将编译后的静态站点push 到github.io公仓中.
流程如下:
操作步骤
- 先在github上创建一个私有仓库: private_repo.
- 将github.io的源码迁移到新的仓库中.
- 准备github跨仓库git 提交代码权限, 参考下一节github申请person token
- 在private_repo 的action 中创建打包脚本, 脚本内容参考附录1
github申请person token
第一步, 获取token
- 个人设置里找到入口
- 找到开发者设置
- 创建token
这一步一定要记住创建好的token, 因为后面要用,而且这个页面刷新后就没了.
其实有过使用ssh经验的朋友们应该已经意识到了, 这一步其实就是一个创建ssh公钥的过程. 只不过这个公钥是放到github服务器上了.
第二步, 私有库配置
有了token, 正常来说就能提交代码了. 但是要知道这个东西是放到脚本里的, 明文暴露还是不太安全.
所以我们要在私有库里将这个token配置成一个环境变量,通过环境变量引用的方式使用,这样就安全多了.
- 找到private_repo, 配置token环境变量
- 配置完后, 我们就可以在脚本里通过环境变量来使用token了.
1 |
|
最后
可以尝试在私有库private_repo里提交文章了.
同时你会发现, github.io公仓里的内部全部被静态网站内容覆盖了. 不用担心,这是正常的.
附录1 : 完整脚本
1 |
|
- 将上面的your_name,your_email,anything 替换成自己的内容
- YOUR_REPO_SECRET_NAME 替换成privat_repo的secret_token_name
- YOUR_GITHUB_IO_REPO 替换成自己的github.io公仓
附录2 : github action 脚本简介
在github的action模块里创建了一个脚本后, 就会在项目的.github/workflows里创建一个对应的文件.
通过workflow 大致可以理解这个模块的功能, 就是一个工作流.
在一些操作执行(通常是提交代码)后, 触发一系列的后续自动化操作, 这些操作可以是并行的,也可以是串行的.
而这些后续操作是通过一些action脚本组织起来的. 整体上看,一个action由以下部分组成.
- jobs: 任务. 最大的逻辑单元. 可以有多个. jobs 默认是并行运行,可以通过 needs 关键字来设置依赖的其他 jobs。
- steps: 步骤. job的执行步骤. 顺序执行. 可以job可以有多个步骤.
- runs: 操作. 也可以理解为指令(bash命令等). 通常一行脚本就是一个操作. 并非所有步骤都会运行操作,但是操作都是在步骤中运行的
无论是job,还是step, 都可以理解一组指令集合. 他们都是可以配置id的. 可以通过id来互相依赖, 互相调用.
其他的可以参考里的官方文档.