📝 docs: add CI/CD workflow documentation
This commit is contained in:
57
.gitea/workflows/README.md
Normal file
57
.gitea/workflows/README.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# CI/CD Workflow Documentation
|
||||||
|
|
||||||
|
## Workflow Structure
|
||||||
|
|
||||||
|
The CI/CD pipeline consists of three jobs:
|
||||||
|
|
||||||
|
### 1. build-cache
|
||||||
|
- **Purpose**: Build and cache Docker build dependencies
|
||||||
|
- **Runs on**: `ubuntu-latest-ca`
|
||||||
|
- **Container**: None (runs directly on runner)
|
||||||
|
- **Outputs**: `deps_hash` and `cache_hit`
|
||||||
|
|
||||||
|
### 2. ci-pipeline
|
||||||
|
- **Purpose**: Run tests, build binaries, and update documentation
|
||||||
|
- **Runs on**: `ubuntu-latest-ca`
|
||||||
|
- **Container**: Uses cached build image from `build-cache` job
|
||||||
|
- **Services**: PostgreSQL for BDD tests
|
||||||
|
- **Steps**:
|
||||||
|
- Checkout code
|
||||||
|
- Set database environment variables
|
||||||
|
- Generate Swagger documentation
|
||||||
|
- Build all packages
|
||||||
|
- Run BDD tests with coverage
|
||||||
|
- Run unit tests with coverage
|
||||||
|
- Run code formatting
|
||||||
|
- Build binaries
|
||||||
|
- Update badges and version
|
||||||
|
|
||||||
|
### 3. docker-push
|
||||||
|
- **Purpose**: Build and push Docker images to registry
|
||||||
|
- **Runs on**: `ubuntu-latest-ca`
|
||||||
|
- **Container**: None (runs directly on runner)
|
||||||
|
- **Trigger**: Only on `main` branch or `feature/move-docker-job` branch
|
||||||
|
- **Steps**:
|
||||||
|
- Checkout code
|
||||||
|
- Login to Gitea Container Registry
|
||||||
|
- Build production Docker image
|
||||||
|
- Push image with version, latest, and commit SHA tags
|
||||||
|
- Show published images
|
||||||
|
|
||||||
|
## Key Design Decisions
|
||||||
|
|
||||||
|
### Separate Docker Push Job
|
||||||
|
The Docker push steps were moved to a separate job because:
|
||||||
|
- The CI container doesn't have Docker commands available
|
||||||
|
- Docker operations require direct access to the host's Docker daemon
|
||||||
|
- This separation allows the CI job to run in a container while Docker operations run on the host
|
||||||
|
|
||||||
|
### Job Dependencies
|
||||||
|
- `docker-push` depends on both `build-cache` and `ci-pipeline`
|
||||||
|
- This ensures Docker images are only built after all tests pass
|
||||||
|
- The dependency hash from `build-cache` is used for consistent Docker builds
|
||||||
|
|
||||||
|
### Conditional Execution
|
||||||
|
- Docker push only runs on `main` branch (and temporarily on `feature/move-docker-job` for testing)
|
||||||
|
- All jobs skip if commit message contains `[skip ci]`
|
||||||
|
- All jobs skip if actor is `ci-bot` to prevent infinite loops
|
||||||
Reference in New Issue
Block a user