Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Host migration pages on main website instead of/as well as wiki #2108

Draft
wants to merge 10 commits into
base: main
Choose a base branch
from
11 changes: 11 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ collections:
versions:
output: true
permalink: /version/:path
migrations:
output: true
permalink: /migration-guides/:version

# Exclude from processing.
# The following items will not be processed, by default. Create a custom list
Expand Down Expand Up @@ -122,6 +125,14 @@ defaults:
type: "posts"
values:
permalink: /blog/:title/
-
scope:
type: "migrations"
values:
layout: migration-guide
toc: true
version_regex: "Migration-Guide-"
# permalink needs be defined above, with the collection definition
-
scope:
type: redirects
Expand Down
83 changes: 83 additions & 0 deletions _layouts/migration-guide.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
layout: base
---
{% assign versioned_page = page.url | startswith: '/version/' %}
{% if versioned_page %}
{% assign docversion = page.url | replace_regex: '^/version/([^/]+)/.*', '\1' %}
{% else %}
{% assign docversion = 'latest' %}
{% endif %}
{% assign docversion_index = docversion | replace: '.', '-' %}
{% comment %}
'page.path' pattern is different depending on the version
- "Main - SNAPSHOT" -> _versions/main/guides/*.adoc
- "x.x.x - Latest" -> _guides/*.adoc
=> to extract the page filename you need two different replacement tokens
{% endcomment %}
{% assign page_filename = page.path | replace: '_migrations/', '' %}
{% assign relations = site.data.versioned[docversion_index].index.relations %}
{% assign guide_url = page.url | replace_regex: '^/version/[^/]+(/.*)', '\1' %}

<section class="full-width-version-bg flexfilterbar guides">
<div class="guideflexcontainer">
<div class="docslink">
<a class="returnlink" href="{{site.baseurl}}/migration-guides/"> Back to Migration Guides</a>
</div>
</div>
</section>

<div class="guide">
<div class="grid-wrapper">
<div class="grid__item width-8-12 width-12-12-m">
{% if docversion == 'latest' or docversion == 'main' %}
<a class="editlink" href="https://github.com/quarkusio/quarkusio.github.io/edit/main/_migrations/{{ page_filename }}">{{site.data.guides.texts.edit_this_page}}</a>
{% endif %}
<h1 class="text-caps">{{page.title}} {{page.docversion}}</h1>
{{ content }}
</div>
<div class="grid__item width-4-12 width-12-12-m tocwrapper">
<div class="hide-mobile toc">{{ page.document | tocify_asciidoc }}</div>
</div>
</div>
{% if relations and relations[guide_url] -%}
<h2>{{site.data.guides.texts.related_content}}</h2>
<div class="grid-wrapper relations">
{% if relations[guide_url].sameExtensions -%}
<div class="grid__item width-6-12 width-12-12-m">
<h3>{{site.data.guides.texts.on_the_same_extensions}}</h3>
<ul class="related-content">
{% for guide in relations[guide_url].sameExtensions -%}
{% assign is_external_guide = guide.url | startswith: 'http' %}
{% if is_external_guide %}
{% assign related_guide_url = include.url %}
{% elsif docversion == 'latest' %}
{% assign related_guide_url = site.baseurl | append: guide.url %}
{% else %}
{% assign related_guide_url = site.baseurl | append: '/version/' | append: docversion | append: guide.url %}
{% endif %}
<li class="{{ guide.type }}"><a href="{{ related_guide_url }}">{{ guide.title }}</a></li>
{% endfor -%}
</ul>
</div>
{% endif -%}
{% if relations[guide_url].sameTopics -%}
<div class="grid__item width-6-12 width-12-12-m">
<h3>{{site.data.guides.texts.on_the_same_topics}}</h3>
<ul class="related-content">
{% for guide in relations[guide_url].sameTopics limit:20 -%}
{% assign is_external_guide = guide.url | startswith: 'http' %}
{% if is_external_guide %}
{% assign related_guide_url = include.url %}
{% elsif docversion == 'latest' %}
{% assign related_guide_url = site.baseurl | append: guide.url %}
{% else %}
{% assign related_guide_url = site.baseurl | append: '/version/' | append: docversion | append: guide.url %}
{% endif %}
<li class="{{ guide.type }}"><a href="{{ related_guide_url }}">{{ guide.title }}</a></li>
{% endfor -%}
</ul>
</div>
{% endif -%}
</div>
{% endif -%}
</div>
98 changes: 98 additions & 0 deletions _migrations/Migration-Guide-1.1.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
---
date: 2019-12-23
---
## Hibernate Search + Elasticsearch (Preview)

`quarkus.hibernate-search.elasticsearch.automatic-indexing.synchronization.strategy` has been renamed to `quarkus.hibernate-search.automatic-indexing.synchronization.strategy`.

If you are using our Hibernate Search + Elasticsearch extension, there's a good chance you will need to adjust your configuration.

## Neo4j (Preview)

The Neo4j driver was updated to the Final 4.0 version and they have renamed a few classes, most notably `org.neo4j.driver.reactive.RxResult.RxStatementResult` has been renamed to `org.neo4j.driver.reactive.RxResult`.

## Gradle plugin

We now recommend using Gradle 6.0.1+. Starting from this version the Gradle plugin is no longer deployed in Maven Central, therefore some minor changes in your Gradle project might be needed.

### Changes in the `settings.gradle` file

Let's start by changing the `settings.gradle` file. It should be changed from (`rootProject.name` value may vary depending on your project name):

```gradle
pluginManagement {
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
}
resolutionStrategy {
eachPlugin {
if (requested.id.id == 'io.quarkus') {
useModule("io.quarkus:quarkus-gradle-plugin:1.0.1.Final")
}
}
}
}

rootProject.name='my-project'
```
to:
```gradle
pluginManagement {
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
}
plugins {
id 'io.quarkus' version "${quarkusPluginVersion}"
}
}
rootProject.name='my-project'
```

NOTE: the `plugins{}` method is not supported in Gradle 5.x. In this case make sure to explicitly declare the plugin version in the `build.gradle` file.

### Changes in the `build.gradle` file

Change your `build.gradle` file to use the plugin DSL format, from:

```gradle
// this block is necessary to make enforcedPlatform work for Quarkus plugin available
// only locally (snapshot) that is also importing the Quarkus BOM
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath "io.quarkus:quarkus-gradle-plugin:${quarkusPluginVersion}"
}
}

plugins {
id 'java'
}

apply plugin: 'io.quarkus'
```
to:
```gradle
plugins {
id 'java'
id 'io.quarkus'
}

```

## Extension framework

### Updated configuration framework

Our configuration framework got a big update to fix a number of issues all around.

The main consequence of this change is that you will need to mark optional collections and maps as `Optional` in your config classes (that means `Optional<List<String>>` for instance).

### GizmoAdaptor

The `GizmoAdaptor` class has been renamed to `GeneratedClassGizmoAdaptor`, due to the introduction of `GeneratedBeanGizmoAdaptor`.
17 changes: 17 additions & 0 deletions _migrations/Migration-Guide-1.10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
date: 2020-10-25
---
## Hibernate ORM

* `quarkus.hibernate-orm.log.bind-param` is deprecated and has been renamed `quarkus.hibernate-orm.log.bind-parameters`. The former will be removed at a later stage.

## Hibernate Search ORM + Elasticsearch (Preview)

* You should update your Maven/Gradle dependencies: replace any occurrence of the artifact ID `hibernate-search-elasticsearch` with `hibernate-search-orm-elasticsearch`
* You should update your configuration: replace any occurrence of the prefix `quarkus.hibernate-search.` with `quarkus.hibernate-search-orm.
* Many deprecated methods and classes were removed. For more information: https://in.relation.to/2020/11/04/hibernate-search-6-0-0-CR1/#breaking_changes
* Async/reactive methods now return `CompletionStage` instead of `CompletableFuture`. To convert a `CompletionStage` to a `Future`, call `.toCompletableFuture()`.`

## MongoDB

* The name of the default client is now `<default>` instead of the previous `__default__` to be more consistent with the rest of the code base. It shouldn't have too many consequences but typically the health checks now expose the new name.
58 changes: 58 additions & 0 deletions _migrations/Migration-Guide-1.11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
date: 2021-01-20
---
## Log min-level

If you are using TRACE (or DEBUG too if using 1.11.0.Final or 1.11.1.Final - changed in 1.11.2.Final) log level, we made an important change in our logging layer: a new build-time `min-level` configuration property was introduced that sets the minimum log level you will be able to use at runtime.

So if you are logging at TRACE level for some loggers, setting `min-level` to TRACE is required.

## Non-application endpoints moved to their own namespace

[Path resolution for configurable endpoints](https://quarkus.io/blog/path-resolution-in-quarkus/) changed in this release. This transition was a little rough. There are some differences in behavior between 1.11.0.Final, when this was introduced, and 1.11.5.Final, when issues were resolved.

By default, non-application endpoints, like health and metrics, are now grouped under `/q`.

Convenience redirects from previous URLs to new namespaced URLs can be enabled and disabled by setting:
`quarkus.http.redirect-to-non-application-root-path=false`

Disable the Quarkus non-application endpoints by setting the non-application endpoint root to be the same as the http root:
`quarkus.http.non-application-root-path=${quarkus.http.root-path}`

You can customize the root used for non-application endpoints by setting `quarkus.http.non-application-root-path` to an alternative path.

As of 1.11.5.Final, leading slashes in configured paths are significant. Please see [Path resolution in Quarkus](https://quarkus.io/blog/path-resolution-in-quarkus/) for more details and examples.

## Jackson

The default `ObjectMapper` obtained via CDI and consumed by the Quarkus extensions now ignores unknown properties (by disabling the `DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES` feature).

See https://quarkus.io/guides/rest-json#jackson for more details about how to go back to the previous behavior.

## Kubernetes Client

We upgraded the Kubernetes Client to version 5. Please refer to the [Kubernetes Client migration guide](https://github.com/fabric8io/kubernetes-client/blob/master/doc/MIGRATION-v5.md) for more information.

## Hibernate Search ORM + Elasticsearch

* The default required status for Elasticsearch indexes is now `yellow`. If you have specific requirements and need to wait for indexes to be `green` on startup, set `quarkus.hibernate-search.elasticsearch.schema-management.required-status` to `green`.
* [Queries](https://docs.jboss.org/hibernate/search/6.0/reference/en-US/html_single/#troubleshooting-logging-query)
and [requests](https://docs.jboss.org/hibernate/search/6.0/reference/en-US/html_single/#troubleshooting-logging-elasticsearch-request)
are now logged at the `TRACE` level instead of the `DEBUG` level.

## MongoDB Panache

* A recent change was made to MongoDB panache to bring it in to conformity with the Hibernate Panache behavior. Public field accesses on `MongoEntity` and `ReactiveMongoEntity` types are now wrapped with the appropriate `get` or `set` methods. In general, you will like not see any difference in your application. However, if you have written a custom `get` or `set` method you may notice a change in behavior if those custom methods deviate from the standard `get`/`set` paradigm. See [this issue](https://github.com/quarkusio/quarkus-quickstarts/pull/726) for an example of something you might run in to.

## quarkus-smallrye-jwt-build

A new `quarkus-smallrye-jwt-build` extension has been introduced allowing users to generate JWT tokens without having to depend on `quarkus-smallrye-jwt` extension which is used for verifying JWT tokens.

## GraalVM 20.3

We upgraded the base container image to build native executables to GraalVM 20.3.

However, we hit a regression in the ImageIO support so if you are using ImageIO and seeing errors such as `UnsatisfiedLinkError: no awt in java.library.path`. This regression is specific to GraalVM 20.3.0 and will be fixed in GraalVM 20.3.1. Your options are:

* Go back to GraalVM 20.2 until we upgrade to GraalVM 20.3.1: `quarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-native-image:20.2.0-java11`
* Use [Mandrel](https://github.com/graalvm/mandrel/releases) in which we backported some additional ImageIO support from GraalVM master: `quarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:20.3-java11`
Loading