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:
parent
626ea48d22
commit
0edfca6f57
|
|
@ -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"
|
||||||
|
|
@ -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:"
|
|
||||||
Loading…
Reference in New Issue