GitHub Workflows Documentation
This document describes the function of each GitHub workflow in this repository.
Core Workflows
1. Build, Test, and Publish (build-test-publish.yml
)
Purpose: Main CI/CD pipeline for building, testing, and publishing the library.
Triggers:
- Push to
main
branch - Pull requests to
main
branch - Tags starting with
v*
Functions:
- β Validates Gradle wrapper
- ποΈ Builds all modules
- π§ͺ Runs tests with coverage reporting
- π Generates JaCoCo coverage badges
- π¦ Creates JAR artifacts
- π Publishes releases (production and development)
- π¬ Comments coverage results on PRs
- β Fails PRs with coverage below 70%
Artifacts:
- JAR files for all modules
- Coverage reports and badges
2. Security Scan (security-scan.yml
)
Purpose: Comprehensive security analysis of the codebase and dependencies.
Triggers:
- Push to
main
branch - Pull requests to
main
branch - Weekly schedule (Monday 6 AM)
Functions:
- π‘οΈ OWASP dependency vulnerability scanning
- π CodeQL static analysis for security issues
- π TruffleHog secrets scanning
- π Uploads security reports
3. Dependency Check (dependency-check.yml
)
Purpose: Focused dependency vulnerability monitoring.
Triggers:
- Weekly schedule (Sunday midnight)
- Manual trigger
- Changes to build files or lock files
Functions:
- π Scans dependencies for known vulnerabilities
- π Generates detailed vulnerability reports
- π¨ Creates GitHub issues for critical vulnerabilities
- β Fails builds with high/critical vulnerabilities
4. License Compliance (license-compliance.yml
)
Purpose: Ensures all dependencies have compatible licenses.
Triggers:
- Push to
main
branch - Pull requests to
main
branch - Weekly schedule (Monday 2 AM)
Functions:
- π Generates license reports for all dependencies
- β οΈ Flags restrictive licenses (GPL, AGPL, etc.)
- π Additional secrets scanning
- π Creates license compliance artifacts
5. Performance Testing (performance-test.yml
)
Purpose: Runs JMH benchmarks to monitor performance.
Triggers:
- Pull requests affecting source code
- Push to
main
branch - Manual trigger
Functions:
- π Runs JMH performance benchmarks (if available)
- π Generates performance reports
- π¬ Comments benchmark results on PRs
- π Tracks performance over time
6. Dependency Updates (dependency-updates.yml
)
Purpose: Automated dependency management.
Triggers:
- Weekly schedule (Monday 3 AM)
- Manual trigger
Functions:
- β¬οΈ Updates Gradle wrapper to latest version
- π Updates dependencies to latest compatible versions
- π Regenerates lock files
- π§ Creates PR with dependency updates
7. Generate Changelog (changelog.yml
)
Purpose: Maintains project changelog using conventional commits.
Triggers:
- Push to
main
branch - Tags starting with
v*
- Manual trigger
Functions:
- π Generates CHANGELOG.md from commit history
- π·οΈ Creates release notes for tags
- π Commits changelog updates automatically
8. Deploy GitHub Pages (pages.yml
)
Purpose: Publishes documentation website.
Triggers:
- Manual trigger only (currently disabled)
- Can be enabled for docs changes
Functions:
- π Builds Jekyll documentation site
- π€ Deploys to GitHub Pages
- π Makes documentation accessible via web
Branch Protection and Code Quality
Coverage Requirements
- Minimum Overall Coverage: 70%
- Minimum Branch Coverage: 60%
- All PRs must meet these thresholds to be merged
Security Requirements
- No high or critical vulnerability dependencies
- All commits must be GPG signed
- Code must pass security scans
Testing Requirements
- Unit tests must use
@Test(groups=["small"])
annotation - All modules require test coverage (except excluded ones)
- Performance tests use JMH framework
Workflow Optimization
The workflows are designed to:
- β Run in parallel where possible
- π Share artifacts between jobs
- π¦ Cache dependencies for faster builds
- πΎ Store reports for analysis
- π« Fail fast on critical issues
Artifact Management
Development Releases (*-dev
tags)
- Stored in
.repo/dev-releases/
directory - Marked as prerelease
- Available for testing purposes
Production Releases (version tags)
- Published to GitHub Packages
- Created as GitHub releases
- Include changelog and artifacts
Manual Triggers
Most workflows support manual triggering via GitHub Actions UI:
- Go to Actions tab
- Select workflow
- Click βRun workflowβ
- Choose branch and parameters