主页关于链接归档相册

连夜撤出 Cloud Studio 转向自动化部署之 GitHub Actions

代码

2022-04-22:Cloud Studio 推出了新付费模式。


原先应该是每日 4 小时工作空间免费时长,现在改成了每个月1000分钟,用完免费额度后根据机型扣费,最低规格机型是 0.1 元/分钟。
我超坑爹呢?照我这个用法,一天轻轻松松三小时往上,0.1*60*3=18 元,我都能出去吃碗面再加两罐啤酒了。
姑且又用了一个星期看看情况,现在看起来确实不够用。 这一个星期的用量

该怎么润

既然 Cloud Studio 不好使了,就得找替代品了。
最初我使用 Cloud Studio 就是图个方便,打开网页就可以直接进行开发创作,不需要再在本地配置环境等乱七八糟东西的。而且程序的源码、主题、文章和各种数据都可以保存在 Cloud Studio 上,也能起到一个备份的作用。(听起来跟 Typecho 和 WordPress 一样)

移动硬盘

可以实现我需求的有很久以前的 PortableHexo 这种项目,预先配置好环境后转入移动硬盘、U盘等,可以随意转移设备使用。但是不纳入考虑范围,一是这个项目已经很久没人更新了,二是我觉得带个硬盘U盘也是麻烦事。

持续集成

那么另一种,在前几年已经被人玩腻了的东西。利用 GitHub Actions 来自动化部署 Hexo。大致就是我们将源码推到仓库,由 Actions 来检测并自动运行 hexo d -g。也就是说把造成我们无法在陌生设备的环境配置这个步骤推给 Actions 来做了。

有什么好

  1. 开发和编辑直接在网页上就能进行,写文章甚至只需要在仓库页里点一下 "Add file"
  2. 可以直接当作一个备份,还附带有版本控制。
  3. 新玩意儿,好玩,多玩点。

GitHub Actions

都已经是被玩烂的东西了,而且也很简单,但我更推荐你搜百度教程而不是看我第一次接触写出来的教程。

密钥

进入 Github→Settings→Developer settings→Personal access tokens 生成一个 token,直接全部勾选就行了。
进入你要设置 Actions 的仓库→Settings→Secrets→Actions 新建一个密钥, NameValue 分别填写你刚刚生成的token的 Note 和 ghp 开头的密钥

配置

直接在根目录创建 .github/workflows/*.yml 就会被 GitHub 自动识别到配置文件并运行。

name: Build

on:
  push:
    branches:
      - hexo
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js 14
        uses: actions/setup-node@v2
        with:
          node-version: 14
          cache: npm
      - name: Install Dependencies
        run: npm install
      - name: Fix File Modify Date
        run: |
          git ls-files | while read filepath; do touch -d "$(git log -1 --format='@%ct' $filepath)" "$filepath" && echo "Fixed: $filepath"; done
      - name: Build Site
        run: npm run build
      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: public
          cname: 你的域名
          publish_branch: 生成文件要部署到的分支

上面这段的大致内容是:检测到 hexo 分支下有新的push则开始运行 workflow。

  1. jobs 运行在最新的 ubuntu 中
  2. 安装 Nodejs
  3. 安装依赖
  4. 更正文件的时间(不重要而且效果一般,可以删去)
  5. 生成文件(就是 hexo g
  6. 部署到 GitHub Pages 所在的分支

部署

在本地修改完后直接三连把源码推送到仓库的 hexo 分支下就会自动部署了。

git add .
git commit -m "commit"
git push

后记

关于像 RSS 这类插件的问题,在 package.json 中写入就会自动安装了。如:

{
  "name": "hexo-site",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    //...
  },
  "hexo": {
    "version": "6.1.0"
  },
  "dependencies": {
    //...
    "hexo-generator-feed": "^3.0.0",
    "hexo-generator-sitemap": "^3.0.1",
    //...
  }
}

GitHub 最近还有个新功能,直接在仓库页按下键盘上的 . 就会进入 Web VS Code,可以直接编辑并提交。遗憾的是貌似没有调试功能。
实际上更推荐你使用两个不同的仓库,一个设置为私有放源码,一个做 GitHub Pages,而不是直接两个放到一起。我个人用的不是 GitHub Pages,而是托管在了 Vercel,而我的 Vercel 又是自动拉取 Github,所以才把 GitHub 仓库设置为私有放到一起的。

文章最后编辑时间好像会乱掉,暂时没啥好的解决方法。


参考

the end.