[TASK] Phase 2 - Matrix Build Strategy for Multi-Java Releases
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 970
- Forks
- 486
- Avg merge
- 3d 33m
- Merged PRs (30d)
- 170
Description
Description
Implement matrix build strategy to enable a single release workflow run to build and deploy multiple Java version variants in parallel using GitHub Actions.
Epic: #34484 (Java Version Override Support in CI/CD)
Dependencies:
- #34586 (Phase 1 - Basic override support) - In PR review (#34612)
- #34637 (Phase 1.5 - Sequential dual release) - Pending
Background
GitHub Actions has a fundamental limitation: cannot use strategy.matrix with uses: (reusable workflows). This requires careful architectural decisions about how to implement parallel multi-Java builds.
Implementation Options
Four approaches are viable, each with different trade-offs:
| Option | Approach | Parallelism | Complexity | Effort |
|---|---|---|---|---|
| A | Job Duplication | ✅ Yes | Medium | Medium |
| B1 | Sequential Wrapper | ❌ No (~2x time) | Low | Low |
| B2 | Parallel Wrapper | ✅ Yes | Low | Low-Medium |
| C | True Matrix (Composite Actions) | ✅ Yes | High | High |
Recommended: Option B2 (Parallel Wrapper) - best balance of parallelism with minimal refactoring.
Decision Document
📄 See linked Google Doc for detailed analysis and decision gathering
Acceptance Criteria
- Architecture decision documented and approved
- Matrix configuration design finalized (2 variants max: default + alternate)
- Release workflow (
cicd_6-release.yml) supportsenable-matrixinput - Parallel execution of Java variant builds when matrix enabled
- Output aggregation for Docker tags (Slack notification)
- Shared steps run once (SBOM, plugin update, labels)
- Backward compatibility:
enable-matrix: falseworks identically to current - Optional: Extend to trunk/nightly workflows (manual dispatch)
- Optional: Label-based matrix trigger for PR workflow (
java-matrixlabel) - Documentation created (
docs/JAVA_MATRIX_BUILD_GUIDE.md)
Priority
Medium
Additional Context
Key Files to Modify
.github/workflows/cicd_6-release.yml- Add matrix inputs.github/workflows/cicd_comp_build-phase.yml- Support matrix-derived inputs.github/workflows/cicd_comp_deployment-phase.yml- Support matrix-derived inputs.github/workflows/cicd_comp_release-phase.yml- Add Artifactory version suffix.github/actions/core-cicd/deployment/deploy-jfrog/action.yml- Add version suffix input
Simplified Configuration (2 variants only)
inputs:
enable-matrix:
description: 'Enable dual Java version build'
type: boolean
default: false
alternate-java-version:
description: 'Alternate Java version (SDKMAN format)'
type: string
default: '25.0.1-open'
alternate-artifact-suffix:
description: 'Suffix for alternate Java artifacts'
type: string
default: '-java25'
Related Issues
- Epic: #34484
- Phase 1: #34586 (PR #34612)
- Phase 1.5: #34637
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the four implementation options and the linked decision document, then inspect .github/workflows/cicd_6-release.yml and the listed build, deployment, release, and deploy-jfrog files. Done means an approved architecture, parallel Java variants with aggregated Docker tags, shared steps run once, enable-matrix disabled remains backward compatible, and the Java matrix guide is created.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, java
- Domain
- build-system, ci-cd, release
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100