36 lines
1.2 KiB
YAML
36 lines
1.2 KiB
YAML
name: Sync changed files to Google Drive
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
sync:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Upload changed files
|
|
env:
|
|
BEFORE: ${{ gitea.event.before }}
|
|
AFTER: ${{ gitea.event.after }}
|
|
GDRIVE_FOLDER_ID: ${{ vars.GDRIVE_FOLDER_ID }}
|
|
GDRIVE_SERVICE_ACCOUNT_JSON: ${{ secrets.GDRIVE_SERVICE_ACCOUNT_JSON }}
|
|
run: |
|
|
curl -fsSL https://rclone.org/install.sh | sudo bash
|
|
key=$(mktemp)
|
|
config=$(mktemp)
|
|
trap 'rm -f "$key" "$config"' EXIT
|
|
printf '%s' "$GDRIVE_SERVICE_ACCOUNT_JSON" > "$key"
|
|
printf '[gdrive]\ntype = drive\nscope = drive\nroot_folder_id = %s\nservice_account_file = %s\n' "$GDRIVE_FOLDER_ID" "$key" > "$config"
|
|
if test "${BEFORE//0/}"; then
|
|
git diff --name-only --diff-filter=ACMRT -z "$BEFORE" "$AFTER"
|
|
else
|
|
git ls-files -z
|
|
fi | while IFS= read -r -d '' file; do
|
|
case "$file" in build|build/*) continue ;; esac
|
|
rclone copyto --config "$config" "$file" "gdrive:$file"
|
|
done
|