吃不上鱼的dj猫

明月如镜 高悬草原映照千年岁月


  • 首页

  • 技术

  • 感想

  • 笔记

  • 归档

  • 关于

  • 搜索
close

Github Pages最佳实践, 基于Github Actions

时间: 2022-05-01   |   分类: notes     |   阅读: 1267 字 ~3分钟

搭建本博客使用到的技术是hugo结合github page,详见hugo自建博客。博客中可以看到详细过程:将hugo写作环境推到github main分支,通过github action构建到gh-pages分支。这是目前见到的大部分方案,也有通过在其他仓库(gitee)将最终结果推送到github上的。

最佳实践

个人觉得最佳的方案,应该隐藏写作环境,即hugo最终生成静态文件依赖的模板、md文件等。否则复制一个网站的成本就太小了,有心的人只需要下载你的写作环境,本地重新build以下,即可完全仿造你的整个流程。当然编译后的静态文件总归要暴露出去,但是后续更新、批量修改都增加了仿冒的成本。

针对本博客的实现方案,最佳实践应该为 main分支隐藏,gh-pages分支继续保留。

实现方案

构想过集中方案,可以根据自己情况实施:

  • 自己有服务器的,可使用的方案很多,写作环境保留在自己服务器即可,静态文件可以存放服务器,或者推送到github pages
  • 建立两个Github仓库(注意创建顺序),写作环境保存在私有仓库,推送到另外一个公开仓库里面
  • 类似2,不过写作环境放在自己搭建的仓库更安全,或者国内gitee、国外aws gitcommit

我选择第二种方案测试了一下

创建私有仓库

由于Github 二级域名默认在账号级别创建的第一个仓库为根目录,具体实施应该为:

  • 静态文件推送到账号下第一个创建的仓库
  • 写作环境推送到账号下除第一个创建仓库以外的仓库

我的做法:将第一个仓库的内容删除,然后本地git remote add origin 第二个仓库地址

构建实现

peaceiris/actions-gh-pages 该该组件是编译好的静态文件推送到Github Pages,集成于Github Actions。详细见 hugo自建博客 Github Actions yaml文件。

- name: Deploy # 部署
  uses: peaceiris/actions-gh-pages@v3
  with:
      personal_token: ${{ secrets.PERSONAL_TOKEN }}
      publish_dir: ./public
      cname: www.d-j.fun
      external_repository: micywin/hugo-dj

注意yaml和原文章的区别,由于原文章是将构建好的静态文件推送到当前仓库的gh-pages分支,直接使用Github Actions初始化的Github_TOKEN即可,但是如果跨仓库,甚至于不通的仓库提供商,那么这里就要设置为对应的token。由于博主使用的是github的另外一个仓库,使用personal_token即满足需求。

设置Personal Token

按照上图设置好secrect之后,注意external_repository,这里是设置相对于当前仓库的另外一个仓库。

这样设置好之后,重新推送一下写作环境的代码到第二个仓库,那么没有问题情况下,第一个仓库的gp-pages分支会出现最新一版的静态文件。

拓展内容

关于peaceiris/actions-gh-pages该组件还有更多的配置选项,可以根据自己需要去配置,个人觉得比较有用的:

  • 设置full_commit_message, 让每次更新可以看到提交的相关信息
  • 如果不想部署的时候影响到在线阅读体验,可以定时在半夜部署

等,可以根据自己情况去配置。博主的Deploy的完整配置:

- name: Deploy
  uses: peaceiris/actions-gh-pages@v3
  with:
      personal_token: ${{ secrets.PERSONAL_TOKEN }}
      publish_dir: ./public
      cname: www.d-j.fun
      external_repository: micywin/hugo-dj
      full_commit_message: ${{ github.event.head_commit.message }}

总结

为了写作体验,和后续可能的问题,应该提前做好各种规划。比如本文提到的写作环境隐藏、自动给图片添加水印、还有目录的规划、文章分类的划分等。

#Github#
curl 关于服务时间性能的指标探究及应用
关于吃不上鱼的dj猫
  • 文章目录
  • 站点概览
D&J

D&J

程序员

27 日志
3 分类
17 标签
GitHub
  • 最佳实践
  • 实现方案
    • 创建私有仓库
    • 构建实现
    • 拓展内容
  • 总结
© 2009 - 2024 吃不上鱼的dj猫
Powered by - Hugo v0.124.0
Theme by - NexT 沪ICP备14008426号-3
0%