This guide is intended for maintainers of Hibernate ORM, i.e. anybody with direct push access to the git repository.
See CONTRIBUTING.md.
Continuous integration is split across two platforms:
- GitHub Actions at https://github.com/hibernate/hibernate-orm/actions
- a self-hosted Jenkins instance at https://ci.hibernate.org.
TODO: describe the workflows available.
https://ci.hibernate.org/job/hibernate-orm-pipeline/
This job takes care of testing additional DBs for:
- Primary branch builds
- Pull request builds
It is generally triggered on push, but can also be triggered manually, which is particularly useful to test more environments on a pull request.
See Jenkinsfile for the job definition.
https://ci.hibernate.org/job/hibernate-orm-release/
This job takes care of releases. It is triggered manually.
See ci/release/Jenkinsfile for the job definition.
See Releasing for more information.
On select maintenance branches (6.2
, 6.4
, ...),
micro releases (x.y.1
, x.y.2
, ...) are performed as soon as you push to that branch.
Make sure to assign fix versions properly before merging pull requests.
No announcements are expected for such releases: neither through X, blog posts, or email.
On main
and some maintenance branches (6.5
, ...),
automated releases are disabled.
You must perform releases by manually triggering a CI job.
In any case, before the release:
- Check that everything has been pushed to the upstream repository.
- Check that the CI jobs for the branch you want to release are green.
- Check Jira Releases:
- Check that the release you are about to publish exists in Jira.
- Check there are no outstanding issues assigned to that release.
- Check there are no resolved/closed issues in the corresponding "work-in-progress version"
(e.g.
6.6
,6.6-next
, ... naming convention may vary); if there are, you might want to assign them to your release.
If it is a new major or minor release, before the release:
- Reset the migration guide to include only information relevant to the new major or minor.
If it's a .CR
or .Final
release, before the release:
- Check that the migration guide is up to date. In particular, check the git history for API/SPI changes and document them in the migration guide.
Once you trigger the CI job, it automatically pushes artifacts to the OSSRH Maven Repository, and the documentation to docs.jboss.org.
- Do not mark the Jira Release as "released" or close issues, the release job does it for you.
- Do not update the repository (in particular changelog.txt and README.md), the release job does it for you.
- Trigger the release on CI:
- Go to CI, to the "hibernate-orm-release" CI job.
- Click the "run" button (the green triangle on top of a clock, to the right) next to the branch you want to release.
- Be careful when filling the form with the build parameters.
Note only
RELEASE_VERSION
is absolutely necessary. - Note that for new branches where the job has never run, the first run may not ask for parameters and thus may fail: that's expected, just run it again.
- After the job succeeds, check the artifacts are available on Maven Central: https://repo1.maven.org/maven2/org/hibernate/orm/hibernate-core/. They should appear after a few minutes, sometimes a few hours.
- Blog about release on in.relation.to. Make sure to use the tags "Hibernate ORM" and "Releases" for the blog entry. Use release-announcement.adoc as a starting point.
- Update hibernate.org if necessary:
- If it is a new major or minor release, add a
_data/projects/orm/releases/series.yml
file and aorm/releases/<version>/index.adoc
file. - Adjust the release file in
_data/projects/orm/releases
: use a meaningful summary and setannouncement_url
to the blog post, if any. - Depending on which series you want to have displayed,
make sure to adjust the
status
/displayed
attributes of theseries.yml
file of the old series. - Push to the production branch.
- If it is a new major or minor release, add a
- Send an email to
[email protected]
and CC[email protected]
. - Tweet about the release via the
@Hibernate
account.
If you just released the latest stable, you will need to update other projects:
- Approve and merge automatic updates that dependabot will send (it might take ~24h):
- In the test case templates.
- In the demos.
- If it's a
.Final
release, upgrade the Hibernate ORM dependency manually:- In the Quarkus BOM.
- In any other relevant project.
In any case:
- Reset release-announcement.adoc.
If it is a new major or minor release:
- Reset the migration guide on the
main
branch if you forgot about it when preparing the release. - Create a maintenance branch for the previous series, if necessary; see branching.