MQL5-Google-Onedrive/.github/workflows/onedrive-sync.yml
Cursor Agent ea03dd5356 feat: Conditionally enable OneDrive sync based on config
Co-authored-by: genxdbxfx3 <genxdbxfx3@gmail.com>
2025-12-27 06:22:19 +00:00

64 lines
1.9 KiB
YAML

name: Sync to OneDrive (rclone)
on:
workflow_dispatch:
push:
branches:
- main
permissions:
contents: read
concurrency:
group: onedrive-sync-main
cancel-in-progress: false
jobs:
sync:
runs-on: ubuntu-latest
env:
# Required secrets:
# - RCLONE_CONFIG_B64: base64 encoded rclone.conf (contains your OneDrive remote)
#
# Optional:
# - ONEDRIVE_REMOTE: remote name in rclone.conf (default: onedrive)
# - ONEDRIVE_PATH: destination path (default: Apps/MT5/MQL5)
ONEDRIVE_REMOTE: ${{ secrets.ONEDRIVE_REMOTE || 'onedrive' }}
ONEDRIVE_PATH: ${{ secrets.ONEDRIVE_PATH || 'Apps/MT5/MQL5' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check OneDrive sync configuration
env:
RCLONE_CONFIG_B64: ${{ secrets.RCLONE_CONFIG_B64 }}
run: |
if [[ -z "${RCLONE_CONFIG_B64:-}" ]]; then
echo "RCLONE_ENABLED=false" >> "$GITHUB_ENV"
echo "Skipping OneDrive sync: missing secret RCLONE_CONFIG_B64."
exit 0
fi
echo "RCLONE_ENABLED=true" >> "$GITHUB_ENV"
- name: Install rclone
if: env.RCLONE_ENABLED == 'true'
run: |
sudo apt-get update
sudo apt-get install -y rclone
- name: Configure rclone
if: env.RCLONE_ENABLED == 'true'
env:
RCLONE_CONFIG_B64: ${{ secrets.RCLONE_CONFIG_B64 }}
run: |
mkdir -p "$HOME/.config/rclone"
echo "$RCLONE_CONFIG_B64" | base64 -d > "$HOME/.config/rclone/rclone.conf"
rclone config show >/dev/null
- name: Sync mt5/MQL5 to OneDrive
if: env.RCLONE_ENABLED == 'true'
run: |
SRC="mt5/MQL5"
DEST="${ONEDRIVE_REMOTE}:${ONEDRIVE_PATH}"
echo "Syncing: ${SRC} -> ${DEST}"
rclone sync "${SRC}" "${DEST}" --checksum --create-empty-src-dirs --delete-excluded