refactor: 移除废弃 sync.yml, 新建 sync-repo-to-drive.yml 宿主机 rclone 同步方案

- 删除: .github/workflows/sync.yml (wei/rclone@v1 持续报错)
- 新建: .github/workflows/sync-repo-to-drive.yml
  - 宿主机直装 rclone (apt-get install)
  - Service Account 凭证: GOOGLE_DRIVE_SERVICE_ACCOUNT
  - 目标文件夹: 1fqWdLPaZkUZYt4OT_h3fJQHnd-q5QN3G
  - 触发: push to main / 每6小时 / 手动
  - 安全: RUNNER_TEMP 存放密钥 + always() 清理

Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/c117b619-e5e6-4be9-89ae-05b0fda1b0d8
This commit is contained in:
copilot-swe-agent[bot] 2026-03-24 00:36:59 +00:00
parent 626ea48d22
commit 0edfca6f57
2 changed files with 87 additions and 23 deletions

View File

@ -0,0 +1,87 @@
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# 🪞 光湖格点库 → Google Drive 全量同步
#
# 守护: PER-ZY001 铸渊 (Zhuyuan)
# 系统: SYS-GLW-0001
# 主控: TCS-0002∞ (冰朔)
#
# 方案: 宿主机直装 rclone替代 wei/rclone 容器方案)
# 凭证: GOOGLE_DRIVE_SERVICE_ACCOUNT (Service Account JSON)
# 目标: Google Drive 文件夹 1fqWdLPaZkUZYt4OT_h3fJQHnd-q5QN3G
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
name: "🪞 光湖格点库 → Google Drive 同步"
on:
push:
branches:
- main
schedule:
- cron: "0 */6 * * *"
workflow_dispatch:
permissions:
contents: read
jobs:
sync-to-drive:
runs-on: ubuntu-latest
steps:
- name: "📦 Checkout repository"
uses: actions/checkout@v4
- name: "🔧 Install rclone"
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq rclone
rclone version
- name: "🔑 Configure rclone (Service Account)"
env:
GOOGLE_DRIVE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_DRIVE_SERVICE_ACCOUNT }}
run: |
if [ -z "${GOOGLE_DRIVE_SERVICE_ACCOUNT}" ]; then
echo "::error::GOOGLE_DRIVE_SERVICE_ACCOUNT secret is not set"
exit 1
fi
SA_FILE="$(mktemp "${RUNNER_TEMP}/gd-sa-XXXXXX.json")"
printf '%s\n' "${GOOGLE_DRIVE_SERVICE_ACCOUNT}" > "${SA_FILE}"
chmod 600 "${SA_FILE}"
mkdir -p "${HOME}/.config/rclone"
{
echo "[gdrive]"
echo "type = drive"
echo "scope = drive"
echo "service_account_file = ${SA_FILE}"
echo "root_folder_id = 1fqWdLPaZkUZYt4OT_h3fJQHnd-q5QN3G"
} > "${HOME}/.config/rclone/rclone.conf"
chmod 600 "${HOME}/.config/rclone/rclone.conf"
echo "SA_FILE=${SA_FILE}" >> "${GITHUB_ENV}"
echo "✅ rclone configured with Service Account"
- name: "🪞 Sync to Google Drive"
# 使用 copy非 sync—— 仅添加/更新文件,不删除 Drive 端已有文件(防误删)
run: |
rclone copy . gdrive: \
--exclude ".git/**" \
--exclude "node_modules/**" \
--exclude ".env" \
--exclude "*.bak" \
--exclude "*.log" \
--transfers 4 \
--checkers 8 \
--retries 3 \
--low-level-retries 10 \
--stats 30s \
--stats-one-line \
-v
- name: "🧹 Cleanup credentials"
if: always()
run: |
rm -f "${SA_FILE}"
rm -f "${HOME}/.config/rclone/rclone.conf"
echo "✅ Credentials cleaned up"

View File

@ -1,23 +0,0 @@
name: Guanghu Grid Sync
on:
push:
branches:
- main
jobs:
sync:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Sync to Google Drive
uses: wei/rclone@v1
env:
RCLONE_CONFIG_DRIVE_TYPE: drive
RCLONE_CONFIG_DRIVE_SCOPE: drive
RCLONE_CONFIG_DRIVE_SERVICE_ACCOUNT_CONTENTS: ${{ secrets.GOOGLE_DRIVE_SERVICE_ACCOUNT }}
RCLONE_CONFIG_DRIVE_ROOT_FOLDER_ID: ${{ secrets.DRIVE_MIRROR_FOLDER_ID }}
with:
args: "sync . drive:"