From a1798d1a29c7a3c41751e805c224796bc3022892 Mon Sep 17 00:00:00 2001 From: Gertjan Koolen Date: Wed, 15 Apr 2026 21:10:12 +0200 Subject: [PATCH] Added backup workflow --- .forgejo/workflows/backup-repo.yaml | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .forgejo/workflows/backup-repo.yaml diff --git a/.forgejo/workflows/backup-repo.yaml b/.forgejo/workflows/backup-repo.yaml new file mode 100644 index 0000000..d49c28d --- /dev/null +++ b/.forgejo/workflows/backup-repo.yaml @@ -0,0 +1,39 @@ +name: Git Backup to WebDAV +on: + push: + # This ensures it runs on every branch push + branches: + - '**' +jobs: + print-content: + runs-on: debian-latest + steps: + - name: checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: archive repository + run: | + PROJECT_NAME=$(echo "${{ github.repository }}" | cut -d'/' -f2) + BRANCH_NAME=$(echo "${{ github.ref_name }}" | sed 's/\//-/g') + TIMESTAMP=$(date +'%Y-%m-%d_%H-%M') + + # Create the local variable + FINAL_NAME="${PROJECT_NAME}_${BRANCH_NAME}_${TIMESTAMP}.tar.gz" + + # CRITICAL: Save it for the next step + echo "PROJECTNAME=$PROJECT_NAME" >> $GITHUB_ENV + echo "FILENAME=$FINAL_NAME" >> $GITHUB_ENV + + # Create the archive + git archive --format=tar.gz -v -o "$FINAL_NAME" HEAD + echo "Archive created: $FINAL_NAME" + + - name: Upload via Curl + run: | + ls -lh "$FILENAME" + + curl -T "$FILENAME" \ + -u "${{ secrets.WEBDAV_USER }}:${{ secrets.WEBDAV_PASSWORD }}" \ + "${{ secrets.WEBDAV_URL }}/$PROJECTNAME/$FILENAME"