diff --git a/.gitea/workflows/backup-volumes.yml b/.gitea/workflows/backup-volumes.yml index e6c35ec..568c699 100644 --- a/.gitea/workflows/backup-volumes.yml +++ b/.gitea/workflows/backup-volumes.yml @@ -22,12 +22,20 @@ jobs: # exclude_volumes: "temp-volume,cache-volume" fail-fast: false # Andere Server weiterlaufen lassen wenn einer fehlschlägt - name: Backup ${{ matrix.server.name }} - steps: - name: Checkout repository uses: actions/checkout@v4 + - name: Set server context + run: | + echo "SERVER_NAME=${{ matrix.server.name }}" >> $GITHUB_ENV + echo "SERVER_HOST=${{ matrix.server.host }}" >> $GITHUB_ENV + echo "SERVER_USER=${{ matrix.server.user }}" >> $GITHUB_ENV + echo "EXCLUDE_VOLUMES=${{ matrix.server.exclude_volumes }}" >> $GITHUB_ENV + echo "=== Starting backup for server: ${{ matrix.server.name }} ===" + echo "Host: ${{ matrix.server.host }}" + echo "User: ${{ matrix.server.user }}" + - name: Setup SSH run: | mkdir -p ~/.ssh @@ -37,31 +45,32 @@ jobs: - name: Upload backup script to server run: | + echo "Uploading backup script to ${{ matrix.server.name }}..." scp scripts/backup-servers/backup-docker-volumes.sh \ ${{ matrix.server.user }}@${{ matrix.server.host }}:/tmp/backup-docker-volumes.sh ssh ${{ matrix.server.user }}@${{ matrix.server.host }} \ "chmod +x /tmp/backup-docker-volumes.sh" - - name: Create backup on ${{ matrix.server.name }} + - name: Create backup on remote server run: | BACKUP_DATE=$(date +%Y%m%d_%H%M%S) echo "BACKUP_DATE=$BACKUP_DATE" >> $GITHUB_ENV - EXCLUDE_VOLUMES="${{ matrix.server.exclude_volumes }}" + echo "Creating backup on ${{ matrix.server.name }} at $BACKUP_DATE..." ssh ${{ matrix.server.user }}@${{ matrix.server.host }} \ - "BACKUP_DATE='$BACKUP_DATE' SERVER_NAME='${{ matrix.server.name }}' EXCLUDE_VOLUMES='$EXCLUDE_VOLUMES' /tmp/backup-docker-volumes.sh" + "BACKUP_DATE='$BACKUP_DATE' SERVER_NAME='${{ matrix.server.name }}' EXCLUDE_VOLUMES='${{ matrix.server.exclude_volumes }}' /tmp/backup-docker-volumes.sh" - - name: Download backups from ${{ matrix.server.name }} + - name: Download backups from remote server run: | mkdir -p backups/${{ matrix.server.name }} echo "Downloading backups from ${{ matrix.server.name }}..." - scp -r ${{ matrix.server.user }}@${{ matrix.server.host }}:~/backups/${{ env.BACKUP_DATE }} \ + scp -r ${{ matrix.server.user }}@${{ matrix.server.host }}:~/backups/$BACKUP_DATE \ backups/${{ matrix.server.name }}/ echo "Downloaded files:" - ls -lh backups/${{ matrix.server.name }}/${{ env.BACKUP_DATE }}/ + ls -lh backups/${{ matrix.server.name }}/$BACKUP_DATE/ - name: Upload backup artifacts uses: actions/upload-artifact@v3 @@ -70,9 +79,10 @@ jobs: path: backups/${{ matrix.server.name }}/${{ env.BACKUP_DATE }} retention-days: 30 - - name: Cleanup old backups on ${{ matrix.server.name }} (keep last 7 days) + - name: Cleanup old backups on remote server if: always() run: | + echo "Cleaning up old backups on ${{ matrix.server.name }}..." ssh ${{ matrix.server.user }}@${{ matrix.server.host }} << 'CLEANUP_EOF' # Lösche Backups älter als 7 Tage find ~/backups -maxdepth 1 -type d -name "????????_??????" -mtime +7 -exec rm -rf {} \; 2>/dev/null || true @@ -84,4 +94,5 @@ jobs: - name: Cleanup temporary files if: always() run: | + echo "Cleaning up temporary files on ${{ matrix.server.name }}..." ssh ${{ matrix.server.user }}@${{ matrix.server.host }} "rm -f /tmp/backup-docker-volumes.sh" || true