From fe9a3cce2ead84c59e9a5f0bf3e14daa4b3a6b67 Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Mon, 18 Nov 2024 13:36:36 -0600 Subject: [PATCH] HHH-18861 - Improve GitHub release announcement body for automated releases --- MAINTAINERS.md | 18 +++--- ci/release/Jenkinsfile | 7 ++- release-announcement.adoc | 112 -------------------------------------- release_notes.md | 89 ++++++++++++++++++++++++++++++ 4 files changed, 105 insertions(+), 121 deletions(-) delete mode 100644 release-announcement.adoc create mode 100644 release_notes.md diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 87dddb4601..dd4b34e38e 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -103,15 +103,9 @@ and the documentation to [docs.jboss.org](https://docs.jboss.org/hibernate/orm/) 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 +After the job succeeds: -* Blog about release on [in.relation.to](https://github.com/hibernate/in.relation.to). - Make sure to use the tags "Hibernate ORM" and "Releases" for the blog entry. - Use [release-announcement.adoc](release-announcement.adoc) as a starting point. * Update [hibernate.org](https://github.com/hibernate/hibernate.org) if necessary: * If it is a new major or minor release, add a `_data/projects/orm/releases/series.yml` file and a `orm/releases//index.adoc` file. @@ -119,6 +113,14 @@ and the documentation to [docs.jboss.org](https://docs.jboss.org/hibernate/orm/) * Depending on which series you want to have displayed, make sure to adjust the `status`/`displayed` attributes of the `series.yml` file of the old series. * Push to the production branch. +* Check that 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. +* Make sure a GitHub release got created and that everything looks ok. + + +#### Announcing the release + * Send an email to `hibernate-announce@lists.jboss.org` and CC `hibernate-dev@lists.jboss.org`. * Tweet about the release via the `@Hibernate` account. @@ -137,7 +139,7 @@ If you just released the latest stable, you will need to update other projects: In any case: -* Reset [release-announcement.adoc](release-announcement.adoc). +* Reset [release_notes.md](release_notes.md). **If it is a new major or minor release**: diff --git a/ci/release/Jenkinsfile b/ci/release/Jenkinsfile index 210759fc39..e972622d23 100644 --- a/ci/release/Jenkinsfile +++ b/ci/release/Jenkinsfile @@ -147,7 +147,12 @@ pipeline { env.RELEASE_VERSION = releaseVersion.toString() env.DEVELOPMENT_VERSION = developmentVersion.toString() - env.SCRIPT_OPTIONS = params.RELEASE_DRY_RUN ? "-d" : "" + + def matchingFiles = findFiles(glob: "/release_notes.md") + env.SCRIPT_OPTIONS = " --notes=${matchingFiles[0]}" + if ( params.RELEASE_DRY_RUN ) { + env.SCRIPT_OPTIONS += " -d" + } // Determine version id to check if Jira version exists sh ".release/scripts/determine-jira-version-id.sh ${env.JIRA_KEY} ${releaseVersion.withoutFinalQualifier}" diff --git a/release-announcement.adoc b/release-announcement.adoc deleted file mode 100644 index 652e55c6f6..0000000000 --- a/release-announcement.adoc +++ /dev/null @@ -1,112 +0,0 @@ -= Hibernate 7.0.0.Beta2 -Steve Ebersole -:toc: -:toclevels: 2 -:awestruct-tags: ["Hibernate ORM", "Releases"] -:awestruct-layout: blog-post - -:family: 7.0 - -:docs-url: https://docs.jboss.org/hibernate/orm/{family} -:javadocs-url: {docs-url}/javadocs -:migration-guide-url: {docs-url}/migration-guide/migration-guide.html -:intro-guide-url: {docs-url}/introduction/html_single/Hibernate_Introduction.html -:user-guide-url: {docs-url}/userguide/html_single/Hibernate_User_Guide.html -:ql-guide-url: {docs-url}/querylanguage/html_single/Hibernate_Query_Language.html - -The Hibernate ORM 7.0 Beta2 release has just been published. Here are some highlights... - - -[[jpa-32]] -== Jakarta Persistence 3.2 - -7.0 migrates to Jakarta Persistence 3.2 which can be fairly disruptive. See the link:{migration-guide-url}#jpa-32[Migration Guide] for details. - -See https://in.relation.to/2024/04/01/jakarta-persistence-3/[this blog post] for a summary of the changes in 3.2 - -- https://ci.hibernate.org/view/ORM/job/hibernate-orm-tck-3.2/job/wip%252F7.0/24/[TCK Results] with Java 17 -- https://ci.hibernate.org/view/ORM/job/hibernate-orm-tck-3.2/job/wip%252F7.0/25/[TCK Results] with Java 21 - -[[java-17]] -== Java 17 - -Version 3.2 of Jakarta Persistence requires Java 17. Hibernate 7.0 therefore baselines on Java 17 whereas previous versions baseline on Java 11. - -[[model-validations]] -== Domain Model Validations - -7.0 does much more validation of an application's domain model and especially its mapping details, e.g. - -* illegal combinations such as `@Basic` and `@ManyToOne` on the same attribute -* misplaced annotations such as an annotated getter method with FIELD access -* stricter following of JavaBean conventions - -See the link:{migration-guide-url}#annotation-validation[Migration Guide] for details. - -[[mapping-xml]] -== mapping.xsd - -Hibernate 7.0 provides a new XSD that represents an "extension" of the Jakarta Persistence orm.xsd weaving in Hibernate-specific mapping features. The namespace for this extended mapping is `http://www.hibernate.org/xsd/orm/mapping` - -For applications using Hibernate's legacy `hbm.xml` format, we provide a tool to help with the transformation. -See the link:{migration-guide-url}#hbm-transform[Migration Guide] for details. - - -[[hibernate-models]] -== Hibernate Models - -7.0 migrates from https://github.com/hibernate/hibernate-commons-annotations/[Hibernate Commons Annotations] (HCANN) to the new https://github.com/hibernate/hibernate-models[Hibernate Models] project for low-level processing of an application domain model, reading annotations and weaving in XML mapping documents. - -See the link:{migration-guide-url}#hibernate-models[Migration Guide] for details. - -[[json-and-xml-functions]] -== JSON and XML functions - -Support for most of the JSON and XML functions that the SQL standard specifies was added to HQL/Criteria. -The implementations retain the SQL standard semantics and will throw an error if emulation on a database is impossible. - -New functions include: - -* construction functions like `json_array()`, `json_object()`, `xmlelement()` and `xmlforest()` -* query functions like `json_value()`, `json_query()` and `xmlquery()` -* aggregation functions like `json_agg()`, `json_object_agg()` and `xmlagg()` -* manipulation functions like `json_set()`, `json_mergepatch()` -* any many more - -NOTE: The functions are incubating/tech-preview and to use them in HQL, -it is necessary to enable the `hibernate.query.hql.json_functions_enabled` and `hibernate.query.hql.xml_functions_enabled` configuration settings. - -[[set-returning-functions]] -== Set-returning Functions - -A set-returning function is a new type of function that can return rows and is exclusive to the `from` clause. -The concept is known in many different database SQL dialects and is sometimes referred to as table valued function or table function. - -Custom set-returning functions can be registered via a `FunctionContributor`. -Out-of-the-box, some common set-returning functions are already supported or emulated - -* `unnest()` - allows to turn an array into rows -* `generate_series()` - can be used to create a series of values as rows -* `json_table()` - turns a JSON document into rows -* `xmltable()` - turns an XML document into rows - - -[[any-discriminator]] -== @AnyDiscriminatorImplicitValues - -The new `@AnyDiscriminatorImplicitValues` offers 2 related improvements for the mapping of discriminator values -for `@Any` and `ManyToAny` associations. - -First, it allows control over how Hibernate determines the discriminator value to store in the database for -implicit discriminator mappings. Historically, Hibernate would always use the full name of the associated -entity. - -Second, it allows mixing of explicit and implicit value strategies. - -See the link:{user-guide-url}#associations-any[User Guide] for details. - - -[[cleanup]] -== Clean-up - -A lot of deprecated contracts and behavior has been removed. See the link:{migration-guide-url}#cleanup[Migration Guide] for details. \ No newline at end of file diff --git a/release_notes.md b/release_notes.md new file mode 100644 index 0000000000..b34ec135f7 --- /dev/null +++ b/release_notes.md @@ -0,0 +1,89 @@ + +### Jakarta Persistence 3.2 + +7.0 migrates to Jakarta Persistence 3.2 which can be fairly disruptive. +See the [Migration Guide](https://docs.jboss.org/hibernate/orm/7.0/migration-guide/migration-guide.html#jpa-32) for details. + +See [this blog post](https://in.relation.to/2024/04/01/jakarta-persistence-3/) for a summary of the changes in 3.2 + +- [TCK Results](https://ci.hibernate.org/view/ORM/job/hibernate-orm-tck-3.2/job/wip%252F7.0/24/) with Java 17 +- [TCK Results](https://ci.hibernate.org/view/ORM/job/hibernate-orm-tck-3.2/job/wip%252F7.0/25/) with Java 21 + +### Java 17 + +Version 3.2 of Jakarta Persistence requires Java 17. +Hibernate 7.0 therefore baselines on Java 17 whereas previous versions baseline on Java 11. + +### Domain Model Validations + +7.0 does much more validation of an application's domain model and especially its mapping details, e.g. + +* illegal combinations such as `@Basic` and `@ManyToOne` on the same attribute +* misplaced annotations such as an annotated getter method with FIELD access +* stricter following of JavaBean conventions + +See the [Migration Guide](https://docs.jboss.org/hibernate/orm/7.0/migration-guide/migration-guide.html#model-validation) for details. + + +### mapping.xsd + +Hibernate 7.0 provides a new XSD that represents an "extension" of the Jakarta Persistence orm.xsd weaving in Hibernate-specific mapping features. +The namespace for this extended mapping is `http://www.hibernate.org/xsd/orm/mapping` + +For applications using Hibernate's legacy `hbm.xml` format, we provide a tool to help with the transformation. +See the [Migration Guide](https://docs.jboss.org/hibernate/orm/7.0/migration-guide/migration-guide.html#hbm-transform) for details. + + +### Hibernate Models + +7.0 migrates from [Hibernate Commons Annotations](https://github.com/hibernate/hibernate-commons-annotations/) (HCANN) to the new [Hibernate Models](https://github.com/hibernate/hibernate-models) project for low-level processing of an application domain model, reading annotations and weaving in XML mapping documents. +See the [Migration Guide](https://docs.jboss.org/hibernate/orm/7.0/migration-guide/migration-guide.html#hibernate-models) for details. + + +### JSON and XML functions + +Support for most of the JSON and XML functions that the SQL standard specifies was added to HQL/Criteria. +The implementations retain the SQL standard semantics and will throw an error if emulation on a database is impossible. + +New functions include: + +* construction functions like `json_array()`, `json_object()`, `xmlelement()` and `xmlforest()` +* query functions like `json_value()`, `json_query()` and `xmlquery()` +* aggregation functions like `json_agg()`, `json_object_agg()` and `xmlagg()` +* manipulation functions like `json_set()`, `json_mergepatch()` +* any many more + +> The functions are incubating/tech-preview - to use them in HQL it is necessary to enable the `hibernate.query.hql.json_functions_enabled` and `hibernate.query.hql.xml_functions_enabled` configuration settings. + + +### Set-returning Functions + +A set-returning function is a new type of function that can return rows and is exclusive to the `from` clause. +The concept is known in many different database SQL dialects and is sometimes referred to as table valued function or table function. + +Custom set-returning functions can be registered via a `FunctionContributor`. +Out-of-the-box, some common set-returning functions are already supported or emulated + +* `unnest()` - allows to turn an array into rows +* `generate_series()` - can be used to create a series of values as rows +* `json_table()` - turns a JSON document into rows +* `xmltable()` - turns an XML document into rows + +### @AnyDiscriminatorImplicitValues + +The new `@AnyDiscriminatorImplicitValues` offers 2 related improvements for the mapping of discriminator values +for `@Any` and `ManyToAny` associations. + +First, it allows control over how Hibernate determines the discriminator value to store in the database for +implicit discriminator mappings. Historically, Hibernate would always use the full name of the associated +entity. + +Second, it allows mixing of explicit and implicit value strategies. + +See the [Migration Guide](https://docs.jboss.org/hibernate/orm/7.0/userguide/html_single/Hibernate_User_Guide.html#associations-any) for details. + +### Clean-up + +A lot of deprecated contracts and behavior has been removed. +See the [Migration Guide](https://docs.jboss.org/hibernate/orm/7.0/migration-guide/migration-guide.html#cleanup) for details. +