spring-projects / spring-projects/spring-boot

Reconsider our approach to OSS vs. commercial builds

Open
#49,354 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

for: team-attention type: task
Dominant language
Java
Stars
81.5k
Forks
42.7k
Avg merge
2d 4h
Merged PRs (30d)
65

Description

We've tried to setup our CI so that it is as close as possible between OSS builds and enterprise support builds, using a single spring.build-type switch.

After a lot of iterations, the build itself seems to work (although it could break without us noticing until the next branch enters commercial support). However, CI never did.

Promote release requires "sync to maven central" to complete but it will not with a commercial build:
https://github.com/spring-projects/spring-boot/blob/3754efb40791baaf327254f87044fd51464f3232/.github/workflows/release.yml#L82-L86

Same for the publication of the release notes that depends on a number of steps that must be skipped for commercial builds:
https://github.com/spring-projects/spring-boot/blob/3754efb40791baaf327254f87044fd51464f3232/.github/workflows/release.yml#L160-L168

Diffing .github between 3.3.x and 3.4.x can adapt CI pretty easily. Yes, it is a manual step but it also helps with long maintenance and simplify the build greatly.

I think we should revisit our decision. Introducing consistent variables and secrets could help reducing the noise to a bare minimum.

Here is an example where the if/else dance could go away with a consistent variable name:
https://github.com/spring-projects/spring-boot/blob/3754efb40791baaf327254f87044fd51464f3232/.github/workflows/release.yml#L92

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with .github/workflows/release.yml, especially the referenced lines around Maven Central synchronization, release notes publication, and the example near line 92. Compare the .github directories between 3.3.x and 3.4.x; done means commercial and OSS release workflows use consistent variables or secrets while skipping steps that do not apply to commercial builds.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions
Domain
build-system, ci-cd, release
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.