文章

利用GitHub-Actions同步图床到对象存储

利用GitHub-Actions同步图床到对象存储

简介

本教程旨在帮助用户将存储在GitHub项目中的图床同步到阿里云等兼容S3的存储桶中。由于国内直接访问GitHub的图床速度较慢,而阿里云提供了免费的存储桶额度,因此可以通过此方法暂时将图床迁移到阿里云存储桶,以提升访问速度。

技术实现

我们将使用GitHub Actions编写一个自动化工作流,该工作流会在每次图片被push到GitHub仓库时自动运行。工作流的核心是使用rclone命令,将GitHub仓库中的图片同步到阿里云存储桶中。

QQ_1733247863974

部署教程

创建GitHub Secrets

在开始编写工作流之前,需要先在GitHub仓库中设置一些敏感信息(Secrets),以便安全地存储阿里云的访问密钥和区域信息。

  1. 访问仓库设置
    • 打开你的GitHub仓库,点击右上角的“Settings”(设置)。
  2. 进入Secrets页面
    • 在左侧菜单中选择“Secrets and variables” > “Actions”。
  3. 添加新的Secrets
    • 点击“New repository secret”按钮,依次添加以下Secrets:
      • ALIYUN_ACCESS_KEY_ID:你的阿里云Access Key ID。
      • ALIYUN_ACCESS_KEY_SECRET:你的阿里云Access Key Secret。
      • ALIYUN_REGION:你的阿里云存储桶所在区域,例如oss-cn-hangzhou
      • ALIYUN_BUCKET:你的阿里云存储桶名称。

为GitHub

创建GitHub Actions Workflow文件

在图床仓库下创建一个新的GitHub Actions工作流文件。

  1. 创建工作流文件
    • 在仓库根目录下创建一个名为.github/workflows/sync-to-oss.yml的文件。
  2. 填写工作流内容
    • 将以下内容复制并粘贴到新创建的文件中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
name: GitHub to Alibaba OSS Sync  

on:  
  push:  
    branches:  
      - main  
  workflow_dispatch:  

jobs:  
  sync-to-oss:  
    name: Sync to Alibaba OSS  
    runs-on: ubuntu-latest  
    steps:  
      - name: Checkout  
        uses: actions/checkout@v3  

      - name: Configure Rclone  
        run: |  
          curl https://rclone.org/install.sh | sudo bash
          echo "[aliyunoss]" > /tmp/rclone.conf  
          echo "type = s3" >> /tmp/rclone.conf  
          echo "provider = Alibaba" >> /tmp/rclone.conf  
          echo "access_key_id = $" >> /tmp/rclone.conf  
          echo "secret_access_key = $" >> /tmp/rclone.conf  
          echo "endpoint = $.aliyuncs.com" >> /tmp/rclone.conf
 
      - name: Rclone Sync  
        run: |  
          rclone --config /tmp/rclone.conf sync ./ aliyunoss:$ --no-update-modtime --transfers=8 --checkers=16 --exclude=.git/** --exclude=.github/** --exclude=README.md -v
          rm -f /tmp/rclone.conf

验证工作流

在推送更改后,GitHub Actions会自动触发工作流。你可以通过以下步骤验证工作流是否正常运行。

  1. 查看Actions页面
    • 在GitHub仓库中,点击“Actions”标签页。
  2. 检查工作流运行状态
    • 你应该能看到“GitHub to Alibaba OSS Sync”工作流的运行记录。点击最新的运行记录,查看详细的日志输出。
  3. 验证文件同步
    • 登录到你的阿里云控制台,检查目标存储桶中是否已经包含了从GitHub同步过来的文件。

友情提醒

如果需要其他对象存储照着修改相应的内容即可,记得为对象存储打开公共读权限,毕竟是要直接访问,阿里云可以打开防盗链防止图片被别人偷去使用。

本文由作者按照 CC BY 4.0 进行授权