Hugo的整个构建流程需要搭配GitHub Action使用 ,但是GitHub网络在大陆访问并不是很好

大部分地区无法打开,国庆回家想把博客仓库拉下来,更新一篇文章,拉了几次都失败了

渐渐意识到了多端备份的重要性,在搜索引擎找了一圈基本上都是腾讯云Oss的教程,没有找到自己想要的

我比较喜欢使用阿里云Oss,于是打算自己写一个,期间也遇到点问题,不过还好有ChatGpt帮忙

试了下效果不错,分享出来并作备份

创建阿里云oss Bucket

登录阿里云控制台,搜索oss,创建一个新的Bucket,按照以下配置即可

image-20241006160517132

操作完此步骤后,请记录你创建好的Bucket名称和Endpoint域名

创建阿里云 AccessKey

访问以下地址创建自己的AccesKey值,并做记录

https://ram.console.aliyun.com/profile/access-keys

Github仓库配置

以上几个步骤所记录的值都是一些敏感的数据,暴露在GitHub仓库是非常危险的

我们将其保存为GitHub Action Secret,这样流水线在工作的时候会自动读取配置好的值

setup-secrets

对于Bucket的访问你需要在仓库上配置以下四个数据:

OSS_BUCKET : Bucket的名称

OSS_ENDPOINT : 上面让保存的Endpoint值

OSS_ACCESS_KEY_ID : AccessKey的ID

OSS_ACCESS_KEY_SECRET : AccessKey的Secret

GitHub Action创建文件

Github Actions是Github推出的自动化工作流工具,主要用来完成CI/CD

它的工作流是通过yaml文件定义的,放在仓库的.github/workflow目录下

这里我把文件命名为aliyun-backup.yml,这里作一下配置文件说明

因为备份没必要提交一次commit备份一次,备份周期设置的每周日的凌晨0点自动备份

采用的是增量备份模式,只有文件修改或新增才上传,缩短了上传时间


name: 备份到阿里云oss

on:
  schedule:
    - cron: "0 0 * * 0" # 每周日的00:00执行一次
  workflow_dispatch: # 手动触发工作流

concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: 下载代码
        uses: actions/checkout@v4
        with:
          submodules: true
          fetch-depth: 0

      - name: 配置阿里云OSS
        uses: manyuanrong/setup-ossutil@v3.0
        with:
          endpoint: ${{ secrets.OSS_ENDPOINT }}
          access-key-id: ${{ secrets.OSS_ACCESS_KEY_ID }}
          access-key-secret: ${{ secrets.OSS_ACCESS_KEY_SECRET }}

      - name: 增量上传资源(排除 public 文件夹)
        run: |
          # 查找所有文件,排除 public 文件夹
          find . -path ./public -prune -o -type f -print | xargs -I {} ossutil cp {} oss://${{ secrets.OSS_BUCKET }}/{} --update