All checks were successful
Deploy triz-docs to 150 / build-and-deploy (push) Successful in 1h8m49s
90 lines
2.2 KiB
Markdown
90 lines
2.2 KiB
Markdown
---
|
|
sidebar_position: 4
|
|
title: "Execution & CI/CD Integration"
|
|
---
|
|
|
|
# Execution & CI/CD Integration
|
|
|
|
---
|
|
|
|
## Running Migrations Manually
|
|
|
|
To execute pending migrations locally or manually on a specific environment:
|
|
|
|
```cmd
|
|
mvn flyway:migrate ^
|
|
-Dflyway.url=jdbc:postgresql://localhost:5432/TrizTresorie ^
|
|
-Dflyway.user=postgres ^
|
|
-Dflyway.password=YOUR_PASSWORD
|
|
```
|
|
|
|
When you run this command, Flyway will:
|
|
1. Check the `flyway_schema_history` table.
|
|
2. Detect which migrations have already been executed.
|
|
3. Execute only the new, pending migrations in version order.
|
|
4. Save the execution history automatically.
|
|
|
|
---
|
|
|
|
## CI/CD Integration
|
|
|
|
In your deployment pipeline, the database migration step must occur **before** the application server (e.g., Tomcat) starts.
|
|
|
|
### Example Runner Step
|
|
|
|
```yaml
|
|
# --------------------------------------------------
|
|
# Run database migrations
|
|
# --------------------------------------------------
|
|
- name: Run database migrations
|
|
shell: cmd
|
|
run: |
|
|
cd %WORKSPACE_DIR%
|
|
mvnw.cmd flyway:migrate ^
|
|
-Dflyway.url=%DB_URL% ^
|
|
-Dflyway.user=%DB_USER% ^
|
|
-Dflyway.password=%DB_PASSWORD%
|
|
```
|
|
|
|
> [!IMPORTANT]
|
|
> Store database credentials securely using CI/CD secrets or environment variables. Do not hardcode passwords inside the repository scripts.
|
|
|
|
---
|
|
|
|
## Final Deployment Flow
|
|
|
|
A standard, safe deployment sequence utilizing Flyway should follow these steps:
|
|
|
|
1. Clone the source code.
|
|
2. Build the application.
|
|
3. Stop Tomcat.
|
|
4. Backup configuration files.
|
|
5. Deploy the new application artifacts.
|
|
6. Restore configuration files.
|
|
7. **Run Flyway migrations.**
|
|
8. Start Tomcat.
|
|
9. Clean up the workspace.
|
|
|
|
---
|
|
|
|
## Project Structure Reference
|
|
|
|
For reference, a properly configured project will have a structure similar to this:
|
|
|
|
```text
|
|
project/
|
|
│
|
|
├── src/
|
|
│ └── main/
|
|
│ └── resources/
|
|
│ └── db/
|
|
│ └── migration/
|
|
│ ├── V1__initial_schema.sql
|
|
│ ├── V2__task301_add_tables_t1_t2.sql
|
|
│ ├── V3__add_client_phone.sql
|
|
│ └── V4__fix_indexes.sql
|
|
│
|
|
├── pom.xml
|
|
└── mvnw.cmd
|
|
```
|