5.9 KiB
Guide for maintainers of Hibernate ORM
This guide is intended for maintainers of Hibernate ORM, i.e. anybody with direct push access to the git repository.
Contributing
See CONTRIBUTING.md.
Continuous integration
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.
GitHub Actions workflows
TODO: describe the workflows available.
Jenkins main pipeline
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.
Release pipeline
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.
Releasing
Automated releases
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.
Manual releases
On main
and some maintenance branches (6.5
, ...),
automated releases are disabled.
You must perform releases by manually triggering a CI job.
Preparing the release
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.
Performing the release
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.
Announcing the release
- 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
hibernate-announce@lists.jboss.org
and CChibernate-dev@lists.jboss.org
. - Tweet about the release via the
@Hibernate
account.
Updating depending projects
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.
Updating Hibernate ORM
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.