跳过正文

使用Github Actions自动更新Google Cloud储存桶

·1085 字·
目录
使用Google Cloud托管我的博客 - 这篇文章属于一个选集。
§ 3: 本文

(用的三星TabS9FE+,开了DEX模式很给力)

最近,由于电脑不在身边,更新博客很是麻烦,需要用ssh连接到位于我卧室的电脑,并且用远程桌面或者vim之类的进行编辑,然后hugo deploy。所以,我决定想出一个更好的解决办法。

Android平板用来编辑markdown绰绰有余,所以我一开始是想用vscode,然而,codeserver和termux上的vscode并不好用。就在这时,我在Google Play发现了一个好用的代码编辑器,名为Spck 代码器。这个编辑器写markdown足够,并且还支持git操作,实属方便。于是,问题便在于如何运行hugo --minify && hugo deploy

运行这个指令需要有完整的linux环境,并安装了最新版本的hugo和google-cloud-cli,这在termux或code-server上都不可能实现(更新 可以实现)。于是,我把目光转向了 Github Actions。现在发现,这玩意真是神器😍。

创建 Github Actions
#

进入本项目代码仓库网页,选择Actions,新建workflow

name: hugo auto deploy

# 什么时候触发 action
on:
  push:
    branches: [ main ]

# 任务的准备,用 ubuntu最新的环境
jobs:
  setup-deploy:
    name: Setup and Deploy
    runs-on: ubuntu-latest
    permissions:
      contents: 'read'
      id-token: 'write'
    steps:

# 检出main分支的代码 checkout
    - name: Checkout
      uses: actions/checkout@v4
      with:
        submodules: true
      
    - name: "google-cloud-login"
      uses: 'google-github-actions/auth@v2'
      with:
        credentials_json: '${{ secrets.GOOGLE_CREDENTIALS }}'

    - name: "setup cloud sdk"
      uses: 'google-github-actions/setup-gcloud@v2'

# 准备hugo环境
# hugo ready & build
    - name: Setup Hugo
      uses: peaceiris/actions-hugo@v3

# hugo 编译部署
    - run: hugo --minify
    - run: hugo deploy

之后,随便修改点内容,并进行git push,在网页端仓库的Actions页面下查看日志。

配置Google Cloud
#

如果您刚刚直接触发了Actions,那么不出意外日志里会报错。现在,让我们逐步修复错误。

生成Google Cloud服务密钥
#

打开Google Cloud控制台,进入IAM和管理,选择服务帐号,并创建新服务帐号

输入服务帐号名称,可以填github-actions,服务帐号ID会自动生成,点击创建并继续。创建完毕后,选择刚刚创建的帐号,并选择管理密钥
选择添加密钥,创建新密钥,并选择JSON格式。之后,会得到一个JSON文件,请务必保存好。

授予访问权限
#

权限页面,点击授予访问权限新的主帐号填写为刚刚创建的帐号,为其赋予Storage Object Admin权限。

配置Github Actions Secrets
#

返回Github,在本仓库的Settings页面,选择Secrets and variables,选择Actions子项,点击New repository secretsName项填GOOGLE_CREDENTIALSSecret项填在Google Cloud获得的JSON的内容,将JSON文件内的内容全部复制进去即可。

再次尝试Actions
#

重新运行Actions,通过。

使用Google Cloud托管我的博客 - 这篇文章属于一个选集。
§ 3: 本文