利用GitHub-Actions同步图床到对象存储
利用GitHub-Actions同步图床到对象存储
简介
本教程旨在帮助用户将存储在GitHub项目中的图床同步到阿里云等兼容S3的存储桶中。由于国内直接访问GitHub的图床速度较慢,而阿里云提供了免费的存储桶额度,因此可以通过此方法暂时将图床迁移到阿里云存储桶,以提升访问速度。
技术实现
我们将使用GitHub Actions编写一个自动化工作流,该工作流会在每次图片被push到GitHub仓库时自动运行。工作流的核心是使用rclone
命令,将GitHub仓库中的图片同步到阿里云存储桶中。
部署教程
创建GitHub Secrets
在开始编写工作流之前,需要先在GitHub仓库中设置一些敏感信息(Secrets),以便安全地存储阿里云的访问密钥和区域信息。
- 访问仓库设置:
- 打开你的GitHub仓库,点击右上角的“Settings”(设置)。
- 进入Secrets页面:
- 在左侧菜单中选择“Secrets and variables” > “Actions”。
- 添加新的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
:你的阿里云存储桶名称。
- 点击“New repository secret”按钮,依次添加以下Secrets:
为GitHub
创建GitHub Actions Workflow文件
在图床仓库下创建一个新的GitHub Actions工作流文件。
- 创建工作流文件:
- 在仓库根目录下创建一个名为
.github/workflows/sync-to-oss.yml
的文件。
- 在仓库根目录下创建一个名为
- 填写工作流内容:
- 将以下内容复制并粘贴到新创建的文件中:
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会自动触发工作流。你可以通过以下步骤验证工作流是否正常运行。
- 查看Actions页面:
- 在GitHub仓库中,点击“Actions”标签页。
- 检查工作流运行状态:
- 你应该能看到“GitHub to Alibaba OSS Sync”工作流的运行记录。点击最新的运行记录,查看详细的日志输出。
- 验证文件同步:
- 登录到你的阿里云控制台,检查目标存储桶中是否已经包含了从GitHub同步过来的文件。
友情提醒
如果需要其他对象存储照着修改相应的内容即可,记得为对象存储打开公共读权限,毕竟是要直接访问,阿里云可以打开防盗链防止图片被别人偷去使用。
本文由作者按照
CC BY 4.0
进行授权