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