@echo off REM ============================================================================ REM SLMS Project Backup Script REM Purpose: Create complete backup of project and configurations before restructure REM ============================================================================ setlocal enabledelayedexpansion echo ============================================================================ echo SLMS Project Backup Script echo ============================================================================ echo. REM Set backup directory with timestamp set TIMESTAMP=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2% set TIMESTAMP=%TIMESTAMP: =0% set BACKUP_DIR=backup_%TIMESTAMP% echo Creating backup directory: %BACKUP_DIR% mkdir "%BACKUP_DIR%" 2>nul REM ============================================================================ REM 1. Backup Project Files REM ============================================================================ echo. echo [1/3] Backing up project files... echo ---------------------------------------- REM Create project backup subdirectory mkdir "%BACKUP_DIR%\project" 2>nul echo Copying project files (this may take a few minutes)... xcopy /E /I /H /Y /EXCLUDE:backup_exclude.txt . "%BACKUP_DIR%\project" >nul 2>&1 if %ERRORLEVEL% EQU 0 ( echo [OK] Project files backed up successfully ) else ( echo [WARNING] Some files may not have been copied ) REM ============================================================================ REM 2. Export Jenkins Configuration REM ============================================================================ echo. echo [2/3] Exporting Jenkins configuration... echo ---------------------------------------- mkdir "%BACKUP_DIR%\jenkins" 2>nul REM Export Jenkinsfile if exist Jenkinsfile ( copy Jenkinsfile "%BACKUP_DIR%\jenkins\Jenkinsfile.backup" >nul echo [OK] Jenkinsfile backed up ) else ( echo [WARNING] Jenkinsfile not found ) REM Create Jenkins configuration export instructions echo Creating Jenkins configuration export guide... ( echo # Jenkins Configuration Export echo. echo ## Manual Steps Required: echo. echo 1. **Export Job Configuration:** echo - Navigate to: http://localhost:8080/job/YOUR_JOB_NAME/config.xml echo - Save the XML file to: %BACKUP_DIR%\jenkins\job-config.xml echo. echo 2. **Export Jenkins System Configuration:** echo - Navigate to: http://localhost:8080/configure echo - Or export via CLI: java -jar jenkins-cli.jar -s http://localhost:8080/ get-job YOUR_JOB_NAME echo. echo 3. **Export Credentials:** echo - Navigate to: http://localhost:8080/credentials/ echo - Document credential IDs: echo * gitea-credentials echo * educoder-credentials echo * sonarqube-token echo. echo 4. **Export Plugins List:** echo - Navigate to: http://localhost:8080/pluginManager/installed echo - Or use: java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins echo. echo ## Automated Backup: echo. echo If Jenkins CLI is available, run: echo ``` echo java -jar jenkins-cli.jar -s http://localhost:8080/ get-job SLMS ^> job-config.xml echo ``` echo. echo Backup created: %date% %time% ) > "%BACKUP_DIR%\jenkins\JENKINS_EXPORT_GUIDE.md" echo [OK] Jenkins export guide created REM ============================================================================ REM 3. Export SonarQube Configuration REM ============================================================================ echo. echo [3/3] Exporting SonarQube configuration... echo ---------------------------------------- mkdir "%BACKUP_DIR%\sonarqube" 2>nul REM Backup sonar-project.properties if exist sonar-project.properties ( copy sonar-project.properties "%BACKUP_DIR%\sonarqube\sonar-project.properties.backup" >nul echo [OK] sonar-project.properties backed up ) else ( echo [WARNING] sonar-project.properties not found ) REM Create SonarQube configuration export instructions echo Creating SonarQube configuration export guide... ( echo # SonarQube Configuration Export echo. echo ## Manual Steps Required: echo. echo 1. **Export Project Settings:** echo - Navigate to: http://localhost:9000/dashboard?id=slms echo - Go to Project Settings ^> General Settings echo - Document all custom settings echo. echo 2. **Export Quality Gates:** echo - Navigate to: http://localhost:9000/quality_gates echo - Document quality gate configuration echo. echo 3. **Export Quality Profiles:** echo - Navigate to: http://localhost:9000/profiles echo - Document active quality profiles for Java echo. echo 4. **Export Webhooks:** echo - Navigate to: http://localhost:9000/project/webhooks?id=slms echo - Document webhook URLs and configurations echo. echo 5. **Current Project Key:** slms:slms or slms echo - This will be changed to: slms echo. echo ## Automated Backup via API: echo. echo If you have SonarQube token, run: echo ``` echo curl -u YOUR_TOKEN: http://localhost:9000/api/settings/values?component=slms ^> settings.json echo curl -u YOUR_TOKEN: http://localhost:9000/api/qualitygates/show?name=YOUR_GATE ^> qualitygate.json echo ``` echo. echo Backup created: %date% %time% ) > "%BACKUP_DIR%\sonarqube\SONARQUBE_EXPORT_GUIDE.md" echo [OK] SonarQube export guide created REM ============================================================================ REM 4. Create Backup Summary REM ============================================================================ echo. echo Creating backup summary... ( echo # SLMS Project Backup Summary echo. echo **Backup Date:** %date% %time% echo **Backup Location:** %BACKUP_DIR% echo. echo ## Backup Contents: echo. echo ### 1. Project Files echo - Location: %BACKUP_DIR%\project\ echo - Contents: Complete project source code, build files, and configurations echo - Excluded: target/, build/, .gradle/, .git/ ^(see backup_exclude.txt^) echo. echo ### 2. Jenkins Configuration echo - Location: %BACKUP_DIR%\jenkins\ echo - Contents: echo * Jenkinsfile backup echo * Jenkins export guide with manual steps echo - **Action Required:** Follow JENKINS_EXPORT_GUIDE.md for complete backup echo. echo ### 3. SonarQube Configuration echo - Location: %BACKUP_DIR%\sonarqube\ echo - Contents: echo * sonar-project.properties backup echo * SonarQube export guide with manual steps echo - **Action Required:** Follow SONARQUBE_EXPORT_GUIDE.md for complete backup echo. echo ## Restoration Instructions: echo. echo To restore from this backup: echo. echo 1. **Restore Project Files:** echo ``` echo xcopy /E /I /H /Y %BACKUP_DIR%\project\* . echo ``` echo. echo 2. **Restore Jenkins Configuration:** echo - Import job configuration via Jenkins UI or CLI echo - Recreate credentials with same IDs echo - Restore Jenkinsfile to project root echo. echo 3. **Restore SonarQube Configuration:** echo - Recreate project with key: slms:slms echo - Apply quality gates and profiles echo - Reconfigure webhooks echo. echo ## Next Steps: echo. echo 1. Review this backup summary echo 2. Complete manual export steps in jenkins/ and sonarqube/ directories echo 3. Verify backup completeness echo 4. Proceed with repository restructure echo. echo ## Important Notes: echo. echo - Keep this backup until restructure is verified successful echo - Store backup in a safe location outside the project directory echo - Test restoration process if possible echo. ) > "%BACKUP_DIR%\BACKUP_SUMMARY.md" REM ============================================================================ REM 5. Create Backup Verification Checklist REM ============================================================================ ( echo # Backup Verification Checklist echo. echo Use this checklist to verify backup completeness: echo. echo ## Project Files echo - [ ] Source code backed up ^(src/, backend/, android/^) echo - [ ] Build files backed up ^(pom.xml, build.gradle, settings.gradle^) echo - [ ] Configuration files backed up ^(Jenkinsfile, sonar-project.properties^) echo - [ ] Documentation backed up ^(docs/^) echo - [ ] Scripts backed up ^(scripts/^) echo. echo ## Jenkins Configuration echo - [ ] Jenkinsfile backed up echo - [ ] Job configuration exported echo - [ ] Credentials documented echo - [ ] Plugin list documented echo - [ ] Webhook configuration documented echo. echo ## SonarQube Configuration echo - [ ] sonar-project.properties backed up echo - [ ] Project settings documented echo - [ ] Quality gates documented echo - [ ] Quality profiles documented echo - [ ] Webhooks documented echo. echo ## Verification Steps echo - [ ] Backup directory created successfully echo - [ ] All files copied without errors echo - [ ] Backup size is reasonable ^(check disk space^) echo - [ ] Manual export guides reviewed echo - [ ] Backup location is safe and accessible echo. echo ## Sign-off echo. echo Backup verified by: _______________ echo Date: _______________ echo. ) > "%BACKUP_DIR%\VERIFICATION_CHECKLIST.md" REM ============================================================================ REM Summary REM ============================================================================ echo. echo ============================================================================ echo Backup Complete! echo ============================================================================ echo. echo Backup Location: %BACKUP_DIR% echo. echo Files Created: echo - %BACKUP_DIR%\project\ (Project files) echo - %BACKUP_DIR%\jenkins\ (Jenkins configuration) echo - %BACKUP_DIR%\sonarqube\ (SonarQube configuration) echo - %BACKUP_DIR%\BACKUP_SUMMARY.md echo - %BACKUP_DIR%\VERIFICATION_CHECKLIST.md echo. echo IMPORTANT: Complete manual export steps: echo 1. Review: %BACKUP_DIR%\jenkins\JENKINS_EXPORT_GUIDE.md echo 2. Review: %BACKUP_DIR%\sonarqube\SONARQUBE_EXPORT_GUIDE.md echo 3. Complete: %BACKUP_DIR%\VERIFICATION_CHECKLIST.md echo. echo ============================================================================ endlocal pause