-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2033 from ThreeMammals/release/23.2
Release 23.2.2 with #2032 hotfix
- Loading branch information
Showing
15 changed files
with
139 additions
and
90 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,31 @@ | ||
## Documentation patch (version {0}) for [{1}](https://github.com/ThreeMammals/Ocelot/releases/tag/{1}) release | ||
> Read the Docs: [Ocelot 23.2](https://ocelot.readthedocs.io/en/{0}/) | ||
## Hotfix release (version {0}) for #2031 issue | ||
> Route path template placeholders and their validation rules | ||
This is a technical release: no other information. | ||
Special thanks to **[Guillaume Gnaegi](https://github.com/ggnaegi)** and [Fabrizio Mancin](https://github.com/Fabman08)! | ||
|
||
### About | ||
The bug is related to the [Placeholders](https://ocelot.readthedocs.io/en/latest/features/routing.html#placeholders) feature in [Configuration](https://ocelot.readthedocs.io/en/latest/features/configuration.html) and [Routing](https://ocelot.readthedocs.io/en/latest/features/routing.html). | ||
The bug was introduced in version [23.2.0](https://github.com/ThreeMammals/Ocelot/releases/tag/23.2.0) as a part of PR #1927. | ||
|
||
### Breaking Change | ||
The new [validation rules](https://github.com/ThreeMammals/Ocelot/blob/23.2.0/src/Ocelot/Configuration/Validator/FileConfigurationFluentValidator.cs#L45-L50) of the `FileConfigurationFluentValidator` class do not allow the Ocelot app to start when implicit [placeholders](https://ocelot.readthedocs.io/en/latest/features/routing.html#placeholders) are defined in custom implementations, such as middlewares, delegating handlers, and replaced services in the dependency injection (DI) container. | ||
These new rules are capable of validating explicit [placeholders](https://ocelot.readthedocs.io/en/latest/features/routing.html#placeholders) only within the `UpstreamPathTemplate` and `DownstreamPathTemplate` properties. Unfortunately, they cannot oversee implicit placeholders in custom implementations, and they do not validate early during the Ocelot app startup process. | ||
|
||
Ensure that you avoid using version [23.2.0](https://github.com/ThreeMammals/Ocelot/releases/tag/23.2.0). If you are currently on that version, upgrade to version [{0}](https://github.com/ThreeMammals/Ocelot/releases/tag/{0}) by applying this hotfix patch. | ||
|
||
### Technical info | ||
With version [23.2.0](https://github.com/ThreeMammals/Ocelot/releases/tag/23.2.0), particularly if you have overridden certain service classes or implemented custom logic that manipulates placeholders, you may encounter Ocelot app crashes accompanied by the following errors in the log: | ||
``` | ||
One or more errors occurred. (Unable to start Ocelot, errors are: XXX) | ||
``` | ||
where `XXX` are the following validation error messages: | ||
- `UpstreamPathTemplate 'UUU' doesn't contain the same placeholders in DownstreamPathTemplate 'DDD'` | ||
- `DownstreamPathTemplate 'DDD' doesn't contain the same placeholders in UpstreamPathTemplate 'UUU'` | ||
|
||
**Finally**, the [validation rules](https://github.com/ThreeMammals/Ocelot/blob/23.2.0/src/Ocelot/Configuration/Validator/FileConfigurationFluentValidator.cs#L45-L50) resulted from the incorrect assumption that placeholders are always explicit and can be validated early. Therefore, custom implementations and feature services in the dependency injection (DI) container, which rely on or manipulate placeholders, should validate the configuration JSON and appropriate options later, directly within their service implementations. | ||
|
||
### Bug Artifacts | ||
- Released in version: [23.2.0](https://github.com/ThreeMammals/Ocelot/releases/tag/23.2.0) | ||
- Introduced in: PR #1927 | ||
- Reported bug: #2031 by @ggnaegi and tested by @Fabman08 | ||
- Hotfix PR: #2032 by @raman-m |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine | ||
|
||
RUN apk add bash icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib git openssh-client | ||
|
||
RUN curl -L --output ./dotnet-install.sh https://dot.net/v1/dotnet-install.sh | ||
|
||
RUN chmod u+x ./dotnet-install.sh | ||
|
||
# Install .NET 8 SDK (already included in the base image, but listed for consistency) | ||
RUN ./dotnet-install.sh -c 8.0 -i /usr/share/dotnet | ||
|
||
# Install .NET 7 SDK | ||
RUN ./dotnet-install.sh -c 7.0 -i /usr/share/dotnet | ||
|
||
# Install .NET 6 SDK | ||
RUN ./dotnet-install.sh -c 6.0 -i /usr/share/dotnet |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# call from ocelot repo root with | ||
# docker build --platform linux/arm64 --build-arg OCELOT_COVERALLS_TOKEN=$OCELOT_COVERALLS_TOKEN -f ./docker/Dockerfile.build . | ||
# docker build --platform linux/amd64 --build-arg OCELOT_COVERALLS_TOKEN=$OCELOT_COVERALLS_TOKEN -f ./docker/Dockerfile.build . | ||
|
||
FROM ocelot2/circleci-build:8.21.0 | ||
|
||
ARG OCELOT_COVERALLS_TOKEN | ||
|
||
ENV OCELOT_COVERALLS_TOKEN=$OCELOT_COVERALLS_TOKEN | ||
|
||
WORKDIR /build | ||
|
||
COPY ./. . | ||
|
||
RUN dotnet tool restore | ||
|
||
RUN dotnet cake |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# call from ocelot repo root with | ||
# docker build --platform linux/arm64 --build-arg OCELOT_COVERALLS_TOKEN=$OCELOT_COVERALLS_TOKEN --build-arg OCELOT_GITHUB_API_KEY=$OCELOT_GITHUB_API_KEY --build-arg OCELOT_COVERALLS_TOKEN=$OCELOT_COVERALLS_TOKEN -f ./docker/Dockerfile.build . | ||
# docker build --platform linux/amd64 --build-arg OCELOT_COVERALLS_TOKEN=$OCELOT_COVERALLS_TOKEN --build-arg OCELOT_GITHUB_API_KEY=$OCELOT_GITHUB_API_KEY --build-arg OCELOT_COVERALLS_TOKEN=$OCELOT_COVERALLS_TOKEN -f ./docker/Dockerfile.build . | ||
|
||
FROM ocelot2/circleci-build:8.21.0 | ||
|
||
ARG OCELOT_COVERALLS_TOKEN | ||
ARG OCELOT_NUTGET_API_KEY | ||
ARG OCELOT_GITHUB_API_KEY | ||
|
||
ENV OCELOT_COVERALLS_TOKEN=$OCELOT_COVERALLS_TOKEN | ||
ENV OCELOT_NUTGET_API_KEY=$OCELOT_NUTGET_API_KEY | ||
ENV OCELOT_GITHUB_API_KEY=$OCELOT_GITHUB_API_KEY | ||
|
||
WORKDIR /build | ||
|
||
COPY ./. . | ||
|
||
RUN dotnet tool restore | ||
|
||
RUN dotnet cake |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# This script builds the Ocelot Docker file | ||
|
||
# {DotNetSdkVer}.{OcelotVer} -> {.NET8}.{21.0} -> 8.21.0 | ||
version=8.21.0 | ||
docker build --platform linux/amd64 -t ocelot2/circleci-build -f Dockerfile.base . | ||
|
||
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin | ||
|
||
docker tag ocelot2/circleci-build ocelot2/circleci-build:$version | ||
docker push ocelot2/circleci-build:latest | ||
docker push ocelot2/circleci-build:$version |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,14 @@ | ||
# docker build | ||
|
||
This folder contains the `Dockerfile.*` and `build.sh` script to create the Ocelot build image & container. | ||
|
||
## Account | ||
- [Ocelot Gateway Profile | Docker Hub](https://hub.docker.com/u/ocelot2) | ||
|
||
## Repositories | ||
- [circleci-build](https://hub.docker.com/r/ocelot2/circleci-build) | ||
|
||
## ocelot2/circleci-build Tags | ||
- [latest](https://hub.docker.com/layers/ocelot2/circleci-build/latest/images/sha256-981d6f9e6e5ba54f6e044bca6fcf8b5197a8f3e6ce2b3cdfa9e6704ecd2ca969?context=explore) is version 8.23.2, uploaded on Apr 3, 2024. | ||
- [8.23.2](https://hub.docker.com/layers/ocelot2/circleci-build/8.23.2/images/sha256-981d6f9e6e5ba54f6e044bca6fcf8b5197a8f3e6ce2b3cdfa9e6704ecd2ca969?context=explore), uploaded on Apr 3, 2024. It supports development SSL certificates by the command `dotnet dev-certs https`. | ||
- [8.21.0](https://hub.docker.com/layers/ocelot2/circleci-build/8.21.0/images/sha256-edb46d37ab52d39a5b27dc63895e5944d4d491d1788744ed144ecb4303b94532?context=explore), uploaded on Nov 20, 2023. It contains .NET 8, 7 and 6 SDKs. It supports builds for `net6.0`, `net7.0` and `net8.0` frameworks. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters