helidon-example (probably same as docs layout)
- reactive (this is what we agreed on with coming of Níma)
- webserver
- security
- oci
- nima
- webserver
- security
- microprofile
- server
- security
- vault (API)
- metrics
- oci
- atp
- objectstorage
- vault (OCI)
- vault (HCP)
- kotlin
- webserver
- security
- microprofile
Helidon Examples should have a separate repository.
- Create the new repository (probably
helidon-examples
) - Structure examples the same way Helidon is structured
- Mostly followed by current repository, some exceptions exist where MP is used in SE section
- Create a PR for each example to the new repository
- Use the latest released version of Helidon
- Use the same version for the example itself
- Fix possible issues with the example (using SE code in MP examples and vice versa, wrong reactive code, best practices for configuration etc.)
- Merge into
main
- Once all examples are merged into the new repository (one-off process, never to be done again)
- Remove all existing examples in Helidon repository
- Create a
develop
branch frommain
branch - Change version in
develop
to latest snapshot of Helidon - create a branch
helidon-2.x
frommain
(if we migrate from 2.x, it would behelidon-3.x
if we use 3.x) - Create tag
2.4.x
(with the real version number) fromhelidon-2.x
branch (ormain
, as these should be the same commit) - From here the
Development process of Helidon
,Release
andRelease of older version
should pick up
Example:
We decide to move to examples repo when Helidon 2.4.0 is released, and current master is on 2.4.1-SNAPSHOT
.
develop
branch of examples will use Helidon2.4.1-SNAPSHOT
main
branch of examples will use Helidon2.4.0
helidon-2
branch of examples will use Helidon2.4.0
- There will be a tag
2.4.0
in Example repository pointing to the same commit asmain
andhelidon-2
Structure is expected to be:
helidon-examples (repository root)
config
config-profiles
microprofile
tracing
security
security
oidc
idcs
basic-uath
reactive
basics
main
- Examples against the latest released production version of Helidon (3.x.x)develop
- Examples against latestmaster
of Helidon repository (usingSNAPSHOT
version)develop-v.x
- Examples against latesthelidon-x
of Helidon repository (usingSNAPSHOT
version)helidon-v.x
- Examples against major versions of Helidon
Why do we need develop
branches?
Each PR in Helidon master needs to be validated. If we used the helidon-x
branch, we would need to create
a branch for each PR, change all the versions and then run it.
If we use develop
branch, we do not need to do anything with examples when building them against the snapshot version
of Helidon.
Expected branches after version 3.x is released (I do not expect to expose examples for version 1.x anymore):
main
- latest release of Helidon (same ashelidon-3
until Helidon 4.0.0 comes out)helidon-2.x
- latest release of Helidon 2.x.yhelidon-3.x
- latest release of Helidon 3.x.y (same asmain
)helidon-4.x
- latest release of Helidon 4.x.y (currently ALPHA)develop-2.x
- current last development snapshot version in the 2.x version (such as 2.4.2-SNAPSHOT)develop-3.x
- current last development snapshot version in the 3.x version (such as 3.0.1-SNAPSHOT)develop-4.x
- current last development snapshot version in the 4.x version (4.0.0-SNAPSHOT)
There will be a tag for each version that is integrated with the Helidon version as the tag name.
Expected tags after version 3.x is released (I do not expect to expose examples for version 1.x anymore):
2.4.1
3.0.0
The following steps will be carried out to release the latest version.
Let's assume version 3.0.0
- Helidon is released
- New branch
helidon-3.0.0-release
is created fromdevelop
develop
is moved to the nextSNAPSHOT
version (3.0.1-SNAPSHOT)helidon-3.0.0-release
is now worked on- Version of all example parents updated to
3.0.0
- Tests
- Fixes
- Version of all example parents updated to
helidon-3.0.0-release
is merged intomain
(nowmain
contains working examples against 3.0.0)helidon-3.0.0-release
is merged intohelidon-3.x
(orhelidon-3.x
is created from it)helidon-3.0.0-release
is deleted- Tag
3.0.0
is created fromhelidon-3.x
Example:
Release of version 3.0.0
when 2.4.1
is the previous version
Before release:
develop
branch of examples uses Helidon3.0.0-SNAPSHOT
main
branch of examples uses Helidon2.4.1
helidon-2.x
branch of examples will use Helidon2.4.1
helidon-3.x
branch does not exist
After release:
develop
branch of examples will use Helidon3.0.1-SNAPSHOT
main
branch of examples will use Helidon3.0.0
helidon-2.x
branch of examples will use Helidon2.4.1
helidon-3.x
branch of examples will use Helidon3.0.0
- There will be a tag
3.0.0
in Example repository pointing to the same commit asmain
andhelidon-3.x
The following steps will be carried out to release a non-latest version.
Let's assume Helidon is now on version 3.0.0
and we need to release 2.7.2
- Helidon
2.7.2
is released - New branch
helidon-2.7.2-release
is created from branchdevelop-2
develop-2
is moved to nextSNAPSHOT
version (2.7.3-SNAPSHOT
)helidon-2.7.2-release
is now worked on- Version of all example parents and modules updated to
2.7.2
- Tests
- Fixes
- Version of all example parents and modules updated to
helidon-2.7.2-release
is merged intohelidon-2
(nowhelidon-2
contains working examples against 2.7.2)helidon-2.7.2-release
is deleted- Tag
2.7.2
is created fromhelidon-2
Example:
Release of version 2.7.2
when 3.0.0
is the latest version
Before release:
develop
branch of examples uses Helidon3.0.1-SNAPSHOT
main
branch of examples uses Helidon3.0.0
develop-2
branch of examples uses Helidon2.7.2-SNAPSHOT
helidon-2
branch of examples uses Helidon2.7.1
helidon-3
uses Helidon3.0.0
After release:
develop
branch of examples is unchangedmain
branch of examples is unchangeddevelop-2
branch of examples uses Helidon2.7.3-SNAPSHOT
helidon-2
branch of examples will use Helidon2.7.2
helidon-3
branch of examples is unchanged- There will be a tag
2.7.2
in Example repository pointing to the same commit ashelidon-2
We need to validate the develop
branch of examples repo against the latest master
of Helidon repo.
Not sure what the possibilities are, ideally:
- You create a PR against Helidon
master
, let's assume branch3201-my-big-change
- Validation
- Is there a branch
3201-my-big-change
with PR againstdevelop
?- YES - Use this branch to validate against the PR
- NO - validate
develop
branch against the PR's code (we assume there is no change required in examples)
- Is there a branch
- If validation fails, PR against main repo cannot be merged
- If validation succeeds, PR can be merged (and the example PR should be merged as well)
We need to validate the develop-x
branch of examples repo against the latest helidon-x
of Helidon repo.
- You create a PR against Helidon
helidon-x
branch, let's assume branch4444-very-important-fix
- Validation
- Is there a branch
4444-very-important-fix
with PR againstdevelop-x
?- YES - Use this branch to validate against the PR
- NO - validate
develop-x
branch against the PR's code (we assume there is no change required in examples)
- Is there a branch
- If validation fails, PR against main repo cannot be merged
- If validation succeeds, PR can be merged (and the example PR should be merged as well)
- I am interested in examples against the latest version of Helidon
- I go to
helidon-examples
repository, clone it and use it
git clone https://github.com/helidon/examples.git cd webserver/basics mvn package java -jar target/webserver-basics.jar
- I go to
- I am interested in examples against a specific major version of Helidon
- I go to
helidon-examples
repository, clone it, switch to branchhelidon-x
and use it
git clone -b helidon-2 https://github.com/helidon/examples.git cd webserver/basics mvn package java -jar target/webserver-basics.jar
- I go to
- I am interested in examples against a specific version of Helidon
- I go to
helidon-examples
repository, clone the tagX.Y.Z
and use it
git clone -b 2.3.2 https://github.com/helidon/examples.git cd webserver/basics mvn package java -jar target/webserver-basics.jar
- I go to