Deployment
CI/CD
Continuous integration and release workflows for LAREX.
CI/CD
LAREX uses GitHub Actions workflows in .github/workflows/.
Workflows
| Workflow | File | Purpose |
|---|---|---|
| CI | .github/workflows/ci.yml | Build/test checks on pushes and pull requests |
| Release | .github/workflows/release.yml | Versioned release, image publishing, and version sync |
CI Workflow (ci.yml)
Triggers
- Push to
mainanddev - Pull requests targeting
main
Jobs
backend(Backend Tests)
- Uses PostgreSQL
17-alpineservice - Runs with JDK 21 (Temurin)
- Executes
./gradlew test - Builds JAR via
./gradlew build -x test - Uploads backend test reports as artifact
frontend(Frontend Checks)
- Uses Node 20 + pnpm 10
- Installs dependencies in
frontend/ - Runs
pnpm build - Note: lint/typecheck steps are currently present but commented out in workflow
keycloak-theme(Keycloak Theme Build)
- Uses Node 20 + pnpm 10
- Installs dependencies in
keycloak-theme/ - Runs
pnpm run build-keycloak-theme - Uploads generated theme artifact (
build_keycloak/)
docker-build(PR-only build test)
- Runs only on pull requests
- Builds backend and frontend Docker images with Buildx
- Does not push images
Release Workflow (release.yml)
Triggers
- Push to
mainwhenVERSIONchanges - Manual dispatch (
workflow_dispatch) with optionalskip_tests
Pipeline
version
- Reads and normalizes
VERSION - Exposes it as workflow output
test
- Reuses
ci.yml - Skipped when
skip_tests=true
build-and-push
- Builds and pushes backend/frontend images to
ghcr.io - Runs after successful tests (or when tests are skipped manually)
- Adds Docker metadata tags
create-release
- Creates GitHub release
v<version> - Uses generated release notes
sync-versions
- Runs
scripts/version-sync.sh - Commits and pushes version-sync changes if needed
Image Tags
Release images are tagged with Docker metadata rules, including:
<version><version>-<sha>latest(default branch only)sha-<sha>
Registry and Auth
- Registry:
ghcr.io - Authentication:
GITHUB_TOKENviadocker/login-action
Local Validation
Useful local commands before pushing:
task test
task build