ci: add devops docker backup
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
name: Backup Docker Volumes
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 2 * * *' # Täglich um 2 Uhr nachts
|
||||
workflow_dispatch: # Manueller Trigger
|
||||
|
||||
jobs:
|
||||
backup:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker:latest
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
apk add --no-cache tar gzip
|
||||
|
||||
- name: Create backup directory
|
||||
run: |
|
||||
mkdir -p /tmp/backups
|
||||
BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
|
||||
echo "BACKUP_DATE=$BACKUP_DATE" >> $GITHUB_ENV
|
||||
echo "BACKUP_DIR=/tmp/backups/$BACKUP_DATE" >> $GITHUB_ENV
|
||||
mkdir -p /tmp/backups/$BACKUP_DATE
|
||||
|
||||
- name: Backup Gitea Data Volume
|
||||
run: |
|
||||
docker run --rm \
|
||||
-v devops_gitea-data:/source:ro \
|
||||
-v /tmp/backups/$BACKUP_DATE:/backup \
|
||||
alpine tar czf /backup/gitea-data.tar.gz -C /source .
|
||||
echo "Gitea data backup created: $(ls -lh /tmp/backups/$BACKUP_DATE/gitea-data.tar.gz)"
|
||||
|
||||
- name: Backup Gitea Database Volume
|
||||
run: |
|
||||
docker run --rm \
|
||||
-v devops_gitea-database:/source:ro \
|
||||
-v /tmp/backups/$BACKUP_DATE:/backup \
|
||||
alpine tar czf /backup/gitea-database.tar.gz -C /source .
|
||||
echo "Gitea database backup created: $(ls -lh /tmp/backups/$BACKUP_DATE/gitea-database.tar.gz)"
|
||||
|
||||
- name: Backup MinIO Data Volume
|
||||
run: |
|
||||
docker run --rm \
|
||||
-v devops_minio-data:/source:ro \
|
||||
-v /tmp/backups/$BACKUP_DATE:/backup \
|
||||
alpine tar czf /backup/minio-data.tar.gz -C /source .
|
||||
echo "MinIO data backup created: $(ls -lh /tmp/backups/$BACKUP_DATE/minio-data.tar.gz)"
|
||||
|
||||
- name: Backup Gitea Runner Data Volume
|
||||
run: |
|
||||
docker run --rm \
|
||||
-v devops_gitea-runner-data:/source:ro \
|
||||
-v /tmp/backups/$BACKUP_DATE:/backup \
|
||||
alpine tar czf /backup/gitea-runner-data.tar.gz -C /source .
|
||||
echo "Gitea runner data backup created: $(ls -lh /tmp/backups/$BACKUP_DATE/gitea-runner-data.tar.gz)"
|
||||
|
||||
- name: Create backup manifest
|
||||
run: |
|
||||
cd /tmp/backups/$BACKUP_DATE
|
||||
cat > manifest.txt << EOF
|
||||
Backup created: $(date)
|
||||
Backup date: $BACKUP_DATE
|
||||
|
||||
Files:
|
||||
$(ls -lh)
|
||||
|
||||
Checksums (SHA256):
|
||||
$(sha256sum *.tar.gz)
|
||||
EOF
|
||||
cat manifest.txt
|
||||
|
||||
- name: Upload backup artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: docker-volumes-backup-${{ env.BACKUP_DATE }}
|
||||
path: /tmp/backups/${{ env.BACKUP_DATE }}/
|
||||
retention-days: 30
|
||||
|
||||
- name: Cleanup old backups (keep last 7 days)
|
||||
run: |
|
||||
echo "Backup completed successfully!"
|
||||
echo "Total backup size: $(du -sh /tmp/backups/$BACKUP_DATE)"
|
||||
Reference in New Issue
Block a user