chore: Archive 7 unused workflows and consolidate to SSOT pipeline
Merge to Main - Full Pipeline / Stage 1: Fast Gates (push) Failing after 3s
Merge to Main - Full Pipeline / Stage 2: Critical Gates (push) Has been skipped
Merge to Main - Full Pipeline / Stage 3: Integration Tests (push) Has been skipped
Merge to Main - Full Pipeline / Stage 4: Build and Package (push) Has been skipped
Merge to Main - Full Pipeline / Stage 5: Deploy to Production (push) Has been skipped
Merge to Main - Full Pipeline / Pipeline Summary (push) Successful in 1s
Merge to Main - Full Pipeline / Stage 1: Fast Gates (push) Failing after 3s
Merge to Main - Full Pipeline / Stage 2: Critical Gates (push) Has been skipped
Merge to Main - Full Pipeline / Stage 3: Integration Tests (push) Has been skipped
Merge to Main - Full Pipeline / Stage 4: Build and Package (push) Has been skipped
Merge to Main - Full Pipeline / Stage 5: Deploy to Production (push) Has been skipped
Merge to Main - Full Pipeline / Pipeline Summary (push) Successful in 1s
Reorganized .gitea/workflows/ to reduce duplication and noise: - Archived 7 unnecessary workflows to .archived/ subdirectory: - auto_backup_schedule.yml - backup.yml - calibration_backlog.yml - kis_data_collection.yml - qualitative_sell_strategy.yml - snapshot_admin.yml - wbs_9_3_null_policy_ci_gate.yml Active workflows (5 total): - merge-to-main.yml (SSOT 5-stage pipeline) - ci.yml (PR validation) - deploy-prod.yml (manual deployment) - fast-validation.yml (PR fast checks) - _common/build-and-test.yml (reusable component) Rationale: Phase 2 deployment infrastructure is complete. Legacy workflows are no longer needed, reducing CI/CD maintenance burden and improving clarity. Archived workflows remain available for reference if rollback is needed. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,172 +0,0 @@
|
||||
name: Auto Backup - WBS-9.7
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# 매일 자정 (UTC)
|
||||
- cron: '0 0 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
daily-backup:
|
||||
runs-on: ubuntu-latest
|
||||
name: Daily Backup
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Python
|
||||
run: |
|
||||
python --version
|
||||
|
||||
- name: Run Daily Backup
|
||||
run: |
|
||||
python tools/backup_recovery_manager_v1.py
|
||||
|
||||
- name: Cleanup Old Backups
|
||||
run: |
|
||||
python -c "
|
||||
from tools.backup_recovery_manager_v1 import BackupRecoveryManager
|
||||
manager = BackupRecoveryManager(retention_days=30)
|
||||
result = manager.cleanup_old_backups()
|
||||
print(f'Cleanup: {result}')
|
||||
"
|
||||
|
||||
- name: Log Backup Result
|
||||
if: always()
|
||||
run: |
|
||||
echo "Backup completed at $(date)"
|
||||
ls -lh backups/ | tail -5
|
||||
|
||||
weekly-full-backup:
|
||||
runs-on: ubuntu-latest
|
||||
name: Weekly Full Backup
|
||||
|
||||
# 매주 월요일 1:00 UTC
|
||||
schedule:
|
||||
- cron: '0 1 * * 1'
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Python
|
||||
run: python --version
|
||||
|
||||
- name: Create Weekly Full Backup
|
||||
run: |
|
||||
python -c "
|
||||
from tools.backup_recovery_manager_v1 import BackupRecoveryManager
|
||||
from pathlib import Path
|
||||
|
||||
manager = BackupRecoveryManager()
|
||||
result = manager.create_weekly_full_backup()
|
||||
print(f'Weekly backup: {result}')
|
||||
|
||||
# 신뢰성 테스트
|
||||
if 'backup_name' in result:
|
||||
integrity = manager.test_backup_integrity(result['backup_name'])
|
||||
print(f'Integrity: {integrity}')
|
||||
"
|
||||
|
||||
- name: Backup to Cloud (Optional)
|
||||
continue-on-error: true
|
||||
run: |
|
||||
# 원격 백업 서버로 동기화 (설정 필요)
|
||||
# rsync -av backups/ admin@BACKUP_SERVER_IP:/backup/data_feed/
|
||||
echo "Cloud sync would run here if configured"
|
||||
|
||||
- name: Notify Completion
|
||||
if: success()
|
||||
run: |
|
||||
echo "Weekly backup completed successfully"
|
||||
df -h | grep -E "Filesystem|data"
|
||||
|
||||
backup-health-check:
|
||||
runs-on: ubuntu-latest
|
||||
name: Backup Health Check
|
||||
|
||||
# 매일 12:00 UTC
|
||||
schedule:
|
||||
- cron: '0 12 * * *'
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Check Backup Integrity
|
||||
run: |
|
||||
python -c "
|
||||
from tools.backup_recovery_manager_v1 import BackupRecoveryManager
|
||||
from pathlib import Path
|
||||
|
||||
manager = BackupRecoveryManager()
|
||||
|
||||
# 가장 최근 백업 확인
|
||||
backups = sorted(Path('backups/').glob('*'), key=lambda p: p.stat().st_mtime, reverse=True)
|
||||
|
||||
if backups:
|
||||
latest = backups[0].name
|
||||
print(f'Latest backup: {latest}')
|
||||
|
||||
integrity = manager.test_backup_integrity(latest)
|
||||
print(f'Status: {integrity.get(\"status\")}')
|
||||
|
||||
if integrity.get('database_integrity') != 'ok':
|
||||
print('WARNING: Database integrity issue detected')
|
||||
else:
|
||||
print('ERROR: No backups found')
|
||||
"
|
||||
|
||||
- name: Log Backup Statistics
|
||||
run: |
|
||||
echo "=== Backup Statistics ==="
|
||||
find backups/ -type f -name "metadata.json" | wc -l
|
||||
du -sh backups/ | awk '{print "Total size: " $1}'
|
||||
|
||||
test-recovery:
|
||||
runs-on: ubuntu-latest
|
||||
name: Monthly Recovery Test
|
||||
|
||||
# 매월 1일 2:00 UTC
|
||||
schedule:
|
||||
- cron: '0 2 1 * *'
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Test Recovery Procedure
|
||||
run: |
|
||||
python -c "
|
||||
from tools.backup_recovery_manager_v1 import BackupRecoveryManager
|
||||
from pathlib import Path
|
||||
import tempfile
|
||||
|
||||
manager = BackupRecoveryManager()
|
||||
|
||||
# 가장 최근 백업에서 복구 테스트
|
||||
backups = sorted(Path('backups/').glob('*'), key=lambda p: p.stat().st_mtime, reverse=True)
|
||||
|
||||
if backups:
|
||||
test_backup = backups[0].name
|
||||
|
||||
# 임시 디렉토리에 복구
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
result = manager.restore_from_backup(test_backup, tmpdir)
|
||||
print(f'Recovery test: {result.get(\"status\")}')
|
||||
print(f'Recovery time: {result.get(\"recovery_time_seconds\")}s')
|
||||
|
||||
if result.get('status') == 'SUCCESS':
|
||||
print('Recovery procedure validated')
|
||||
else:
|
||||
print('ERROR: Recovery test failed')
|
||||
"
|
||||
|
||||
- name: Document Recovery Capability
|
||||
run: |
|
||||
echo "Monthly recovery test completed"
|
||||
echo "Recovery time target: < 1 hour"
|
||||
echo "Success rate target: 99%"
|
||||
Reference in New Issue
Block a user