44 push :
55 branches :
66 - main
7-
87jobs :
98 upload-to-b2 :
109 runs-on : ubuntu-latest
1110
1211 steps :
13- # 检出代码库
1412 - name : Checkout repository
1513 uses : actions/checkout@v3
1614
17- # 安装 B2 CLI
1815 - name : Install B2 CLI via pip
1916 run : |
2017 echo "Installing B2 Command Line Tool..."
2118 python3 -m pip install --upgrade pip
2219 pip install b2
2320 echo "B2 CLI installed successfully."
2421
25- # 准备上传目录
2622 - name : Prepare upload directory
2723 run : |
2824 echo "Creating upload directory..."
@@ -32,24 +28,64 @@ jobs:
3228 cp -r !(upload_dir) upload_dir/
3329 echo "Files copied to upload_dir."
3430
35- # 使用 B2 CLI 进行授权和差异同步
3631 - name : B2 Sync with Differential Upload
3732 env :
3833 B2_ACCOUNT_ID : ${{ secrets.B2_ACCOUNT_ID }}
3934 B2_ACCOUNT_KEY : ${{ secrets.B2_ACCOUNT_KEY }}
4035 B2_BUCKET_NAME : ${{ secrets.B2_BUCKET_NAME }}
4136 run : |
4237 echo "Authenticating with B2..."
43- b2 authorize-account $B2_ACCOUNT_ID $B2_ACCOUNT_KEY
38+ # 使用新的 account authorize 命令替代已弃用的 authorize-account
39+ b2 account authorize $B2_ACCOUNT_ID $B2_ACCOUNT_KEY
4440
4541 echo "Starting differential sync..."
4642 b2 sync upload_dir/ b2://$B2_BUCKET_NAME/
4743
4844 echo "Sync completed. Only changed files were uploaded."
4945
50- # 清理临时文件
46+ - name : Configure CORS for B2 Bucket
47+ env :
48+ B2_ACCOUNT_ID : ${{ secrets.B2_ACCOUNT_ID }}
49+ B2_ACCOUNT_KEY : ${{ secrets.B2_ACCOUNT_KEY }}
50+ B2_BUCKET_NAME : ${{ secrets.B2_BUCKET_NAME }}
51+ run : |
52+ echo "Authenticating with B2 for CORS configuration..."
53+ # 使用新的 account authorize 命令替代已弃用的 authorize-account
54+ b2 account authorize $B2_ACCOUNT_ID $B2_ACCOUNT_KEY
55+
56+ # 不再使用已弃用的 get-bucket 命令来获取 Bucket ID,因为 update-bucket 命令通常可以直接使用桶名
57+ # 创建CORS规则JSON文件
58+ cat > cors_rules.json << EOF
59+ [
60+ {
61+ "corsRuleName": "allow-all",
62+ "allowedOrigins": ["*"],
63+ "allowedHeaders": ["*"],
64+ "allowedOperations": [
65+ "s3_get", # S3兼容的获取操作
66+ "s3_put", # S3兼容的上传操作
67+ "s3_delete", # S3兼容的删除操作 :cite[3]
68+ "b2_download_file_by_id",
69+ "b2_download_file_by_name",
70+ "b2_upload_file"
71+ # 注意:b2_upload_part 是否包含在你的密钥权限中?根据你的需求添加。
72+ ],
73+ "maxAgeSeconds": 3600
74+ }
75+ ]
76+ EOF
77+
78+ # 更新存储桶的CORS规则,使用桶名而非ID
79+ b2 update-bucket --corsRules cors_rules.json $B2_BUCKET_NAME allPublic
80+ # 如果上述命令因桶名问题失败,可以尝试先获取桶ID,但注意使用新命令:
81+ # BUCKET_ID=$(b2 bucket get $B2_BUCKET_NAME --format json | jq -r '.bucketId')
82+ # 然后使用 b2 update-bucket --corsRules cors_rules.json $BUCKET_ID allPublic
83+
84+ echo "CORS rules updated to allow all origins."
85+
5186 - name : Clean up
5287 run : |
53- echo "Removing upload directory..."
88+ echo "Removing upload directory and temporary CORS file ..."
5489 rm -rf upload_dir
90+ rm -f cors_rules.json
5591 echo "Cleanup completed."
0 commit comments