From 2ccc61a84a498b071d704d7ce3ff7e82970b0877 Mon Sep 17 00:00:00 2001 From: Antanina Vertsinskaya Date: Thu, 15 Jan 2026 14:47:08 +0000 Subject: [PATCH 1/7] Add GB docs page for 1.19.0 release --- docs-gb/SUMMARY.md | 3 +- .../release-highlights/release-1.19.0.md | 51 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 docs-gb/reference/release-highlights/release-1.19.0.md diff --git a/docs-gb/SUMMARY.md b/docs-gb/SUMMARY.md index 2d90c62ce4..559cea1dac 100644 --- a/docs-gb/SUMMARY.md +++ b/docs-gb/SUMMARY.md @@ -209,7 +209,8 @@ spec: wrapper ``` * [Release Highlights](reference/release-highlights/README.md) - * [Releases 1.8.0 and later](reference/release-highlights/later-releases.md) + * [Release 1.19.0 Highlights](reference/release-highlights/release-1.19.0.md) + * [Releases 1.8 - 1.18](reference/release-highlights/later-releases.md) * [Release 1.7.0 Hightlights](reference/release-highlights/release-1.7.0.md) * [Release 1.6.0 Hightlights](reference/release-highlights/release-1.6.0.md) * [Release 1.5.0 Hightlights](reference/release-highlights/release-1.5.0.md) diff --git a/docs-gb/reference/release-highlights/release-1.19.0.md b/docs-gb/reference/release-highlights/release-1.19.0.md new file mode 100644 index 0000000000..eab636b405 --- /dev/null +++ b/docs-gb/reference/release-highlights/release-1.19.0.md @@ -0,0 +1,51 @@ +# Seldon Core Release 1.19.0 (Draft Release) + +A summary of the main contributions to the [Seldon Core release 1.19.0](https://github.com/SeldonIO/seldon-core/releases/tag/v1.19.0-rc.1). + +### Overview +This release focuses on platform maintenance, security hardening, and ecosystem modernization. The main themes are extensive CVE remediation, a broad upgrade to Python 3.12 across images and tooling, dependency and base image refreshes, CI and workflow improvements, alongside documentation cleanup and migration work. No major new end-user features are introduced, but the release materially improves security posture, test coverage, and long-term maintainability. + +### Security and CVE Fixes +- Multiple CVEs addressed across Go, Python, and container images, including the operator, executor, alibi-detect server, python-builder, and core builder images. +- Go runtime updated to a newer patch release to address known vulnerabilities. +- Autoscaling dependencies updated to remediate CVEs in the KEDA library. +- RClone upgraded and base images refreshed to address container-level CVEs. + +### Dependency and Runtime Upgrades +- Python upgraded to Python 3.12 across: + - Prepackaged servers + - Alibi Detect and Alibi Explain servers + - Python wrappers +- Conda base images migrated from Miniconda to Miniforge(OSS). +- UBI base images aligned and refreshed (UBI 9.7 where applicable). +- Protobuf, gRPC, Poetry, and other build-time dependencies updated. +- Kubernetes compatibility testing expanded to include Kubernetes 1.35 (1.23.x to 1.35.x). + +### Images and Build System +- SBOM generation added to Docker image builds for improved license and supply-chain visibility. +- Deprecated GPU-related Docker images for the Python wrapper and both Alibi servers. + +:warning: Note: Be aware of the changes to the [Bitnami public catalog](https://github.com/bitnami/charts/issues/35164) as they impact few examples in the documentation. + +### Licensing and Compliance +Regeneration and cleanup of license metadata. + +### Helm, Operator, and Configuration Changes +- Deprecated analytics Helm chart excluded from build workflows. +- Keda dependency upgraded to 2.17.3 and forward-compatible with 2.18.3(latest). + +### Documentation +Documentation was migrated to GitBook. Can be found [here](https://docs.seldon.ai/seldon-core-1). + +### Deprecations and Cleanup +- GPU-related files formally deprecated. +- Several examples and charts removed or disabled including: + - "MLOps with Seldon and Jenkins Classic" notebook + - "End-to-end MLOps with Seldon Core and Jenkins X" notebook + - GPU examples and notebooks + - Legacy Alibi Detect and Explain examples + +### Backward Compatibility +- No intentional breaking API changes introduced in this release candidate. +- Users should validate custom images and notebooks against Python 3.12. +- Operators upgrading from older releases should review image and base-OS changes. From 2ee7ce20a18273d1045776a12f03ad0b5a810de6 Mon Sep 17 00:00:00 2001 From: Antanina Vertsinskaya Date: Thu, 15 Jan 2026 15:00:27 +0000 Subject: [PATCH 2/7] Add "Upgrading to 1.19" section to GB docs --- docs-gb/upgrading.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/docs-gb/upgrading.md b/docs-gb/upgrading.md index 07ac32141c..60dbc346fb 100644 --- a/docs-gb/upgrading.md +++ b/docs-gb/upgrading.md @@ -4,7 +4,40 @@ This page provides with instructions on how to upgrade from previous versions. E If you were running our Openshift 0.4.2 certified operator and are looking to upgrade to our 1.1 certified operator, you will also need to follow the "upgrading process" steps in the "Upgrading to 0.5.2 from previous versions" section. -Make sure you also [read the CHANGELOG](./changelog.html) to see the detailed features and bug-fixes in each version. +Make sure you also [read the CHANGELOG](../CHANGELOG.md) to see the detailed features and bug-fixes in each version. + +## Upgrading to 1.19 + +**Python 3.12 Adoption** +All core Python components—including prepackaged servers, Alibi Detect/Explain servers, wrappers, notebooks, and E2E tests—now target Python 3.12. + +What this means: +- Wheels or dependencies not yet compatible with Python 3.12 may fail at runtime. +- Custom inference images built against older Python versions must be rebuilt and tested. + +**Deprecated and Removed Components** +- Analytics Helm chart is no longer built. +- GPU-related files deprecated. +- OpenVINO references removed (except for deprecated charts). + +Impact: +- Users relying on deprecated components should plan migration. +- No supported upgrade path for removed experimental artifacts. + +**Kubernetes Compatibility** +- Operator tests validated against Kubernetes 1.23 to 1.35. +- No removal of older supported Kubernetes versions announced, but forward compatibility is improved. + +**Operator** +It is primarily a hardening and modernization release, not a feature-driven one. + +**Autoscaling (KEDA)** +- KEDA was upgraded to align with Go dependencies. +- While tests pass, clusters running older KEDA installations may behave differently. + +**Helm Value Drift** +Operator config maps were aligned with Helm values. + ## Upgrading to 1.18 From 69def112853237b22f86eb261ce42d24a26d65a0 Mon Sep 17 00:00:00 2001 From: Antanina Vertsinskaya Date: Thu, 15 Jan 2026 15:36:17 +0000 Subject: [PATCH 3/7] Update page with images --- docs-gb/reference/images.md | 63 +++++++++++++++---------------------- 1 file changed, 25 insertions(+), 38 deletions(-) diff --git a/docs-gb/reference/images.md b/docs-gb/reference/images.md index 928e8c6105..13bb9fc5f0 100644 --- a/docs-gb/reference/images.md +++ b/docs-gb/reference/images.md @@ -3,60 +3,57 @@ ## Core images -| Description | Image URL | Stable Version | Development | -|-------------|-----------|----------------|-------------| -| [Seldon Operator](../workflow/install.md) | [seldonio/seldon-core-operator](https://hub.docker.com/r/seldonio/seldon-core-operator/tags/) | 1.18.0 | 1.19.0-dev | -| [Seldon Service Orchestrator (Go)](../graph/svcorch.md)| [seldonio/seldon-core-executor](https://hub.docker.com/r/seldonio/seldon-core-executor/tags) | 1.18.0 | 1.19.0-dev | +| Description | Image URL | Version | +|-------------|-----------|--------------| +| [Seldon Operator](../workflow/install.md) | [seldonio/seldon-core-operator](https://hub.docker.com/r/seldonio/seldon-core-operator/tags/) | 1.19.0 | +| [Seldon Service Orchestrator (Go)](../graph/svcorch.md)| [seldonio/seldon-core-executor](https://hub.docker.com/r/seldonio/seldon-core-executor/tags) | 1.19.0 | ## Pre-packaged servers | Description | Image URL | Version | |-------------|-----------|---------| -| [MLFlow Server](../servers/mlflow.md) | [seldonio/mlflowserver](https://hub.docker.com/r/seldonio/mlflowserver/tags/) | 1.18.0 | -| [SKLearn Server](../servers/sklearn.md) | [seldonio/sklearnserver](https://hub.docker.com/r/seldonio/sklearnserver/tags/) | 1.18.0 | -| [XGBoost Server](../servers/xgboost.md) | [seldonio/xgboostserver](https://hub.docker.com/r/seldonio/xgboostserver/tags/) | 1.18.0 | +| [MLFlow Server](../servers/mlflow.md) | [seldonio/mlflowserver](https://hub.docker.com/r/seldonio/mlflowserver/tags/) | 1.19.0 | +| [SKLearn Server](../servers/sklearn.md) | [seldonio/sklearnserver](https://hub.docker.com/r/seldonio/sklearnserver/tags/) | 1.19.0 | +| [XGBoost Server](../servers/xgboost.md) | [seldonio/xgboostserver](https://hub.docker.com/r/seldonio/xgboostserver/tags/) | 1.19.0 | ## Language wrappers -| Description | Image URL | Stable Version | Development | -|-------------|-----------|----------------|-------------| -| [Seldon Python 3 (3.8) Wrapper for S2I](../python/python_wrapping_s2i.md) | [seldonio/seldon-core-s2i-python3](https://hub.docker.com/r/seldonio/seldon-core-s2i-python3/tags/) | 1.18.0 | 1.19.0-dev | -| [Seldon Python 3.7 Wrapper for S2I](../python/python_wrapping_s2i.md) | [seldonio/seldon-core-s2i-python37](https://hub.docker.com/r/seldonio/seldon-core-s2i-python37/tags/) | 1.18.0 | 1.19.0-dev | -| [Seldon Python 3.8 Wrapper for S2I](../python/python_wrapping_s2i.md) | [seldonio/seldon-core-s2i-python38](https://hub.docker.com/r/seldonio/seldon-core-s2i-python38/tags/) | 1.18.0 | 1.19.0-dev | -| [Seldon Python 3.7 GPU Wrapper for S2I](../python/python_wrapping_s2i.md) | [seldonio/seldon-core-s2i-python37-gpu](https://hub.docker.com/r/seldonio/seldon-core-s2i-python37-gpu/tags/) | 1.18.0 | 1.19.0-dev | -| [Seldon Python 3.8 GPU Wrapper for S2I](../python/python_wrapping_s2i.md) | [seldonio/seldon-core-s2i-python38-gpu](https://hub.docker.com/r/seldonio/seldon-core-s2i-python38-gpu/tags/) | 1.18.0 | 1.19.0-dev | +| Description | Image URL | Version | +|-------------|-----------|----------------| +| [Seldon Python 3 (3.12) Wrapper for S2I](../wrappers/python/python_wrapping_s2i.md) | [seldonio/seldon-core-s2i-python3](https://hub.docker.com/r/seldonio/seldon-core-s2i-python3/tags/) | 1.19.0 | +| [Seldon Python 3.12 Wrapper for S2I](../wrappers/python/python_wrapping_s2i.md) | [seldonio/seldon-core-s2i-python312](https://hub.docker.com/r/seldonio/seldon-core-s2i-python312/tags/) | 1.19.0 | ## Server proxies -| Description | Image URL | Stable Version | +| Description | Image URL | Version | |-------------|-----------|----------------| | [SageMaker proxy](https://github.com/SeldonIO/seldon-core/tree/master/integrations/sagemaker) | [seldonio/sagemaker-proxy](https://hub.docker.com/r/seldonio/sagemaker-proxy/tags/) | 0.1 | -| [Tensorflow Serving proxy](../servers/tensorflow.md) | [seldonio/tfserving-proxy](https://hub.docker.com/r/seldonio/tfserving-proxy/tags/) | 1.18.0 | +| [Tensorflow Serving proxy](../servers/tensorflow.md) | [seldonio/tfserving-proxy](https://hub.docker.com/r/seldonio/tfserving-proxy/tags/) | 1.19.0 | ## Python modules | Description | Python Version | Version | |-------------|----------------|---------| -| [seldon-core](https://pypi.org/project/seldon-core/) | >3.4,<3.9 | 1.18.0 | -| [seldon-core](https://pypi.org/project/seldon-core/) | 2,>=3,<3.7 | 0.2.6 (deprecated) | +| [seldon-core](https://pypi.org/project/seldon-core/) | >3.4,<3.13 | 1.19.0 | -## Incubating +## Other images -### Language wrappers +:warning :note: The following images play examplary roles only and are not production ready. -| Description | Image URL | Stable Version | Development | -|-------------|-----------|----------------|-------------| -| [Seldon Python ONNX Wrapper for S2I](../python/python_wrapping_s2i.md) | [seldonio/seldon-core-s2i-python3-ngraph-onnx](https://hub.docker.com/r/seldonio/seldon-core-s2i-python3-ngraph-onnx/tags/) | 0.3 | | -| [Seldon Java Build Wrapper for S2I](../java/README.md) | [seldonio/seldon-core-s2i-java-build](https://hub.docker.com/r/seldonio/seldon-core-s2i-java-build/tags/) | 0.1 | | -| [Seldon Java Runtime Wrapper for S2I](../java/README.md) | [seldonio/seldon-core-s2i-java-runtime](https://hub.docker.com/r/seldonio/seldon-core-s2i-java-runtime/tags/) | 0.1 | | -| [Seldon R Wrapper for S2I](../R/README.md) | [seldonio/seldon-core-s2i-r](https://hub.docker.com/r/seldonio/seldon-core-s2i-r/tags/) | 0.2 | | -| [Seldon NodeJS Wrapper for S2I](../nodejs/README.md) | [seldonio/seldon-core-s2i-nodejs](https://hub.docker.com/r/seldonio/seldon-core-s2i-nodejs/tags/) | 0.1 | 0.2-SNAPSHOT | +### Language wrappers (examples only) +| Description | Image URL | +|-------------|-----------| +| [Seldon Python ONNX Wrapper for S2I](../wrappers/python/python_wrapping_s2i.md) | [seldonio/seldon-core-s2i-python3-ngraph-onnx](https://hub.docker.com/r/seldonio/seldon-core-s2i-python3-ngraph-onnx/tags/) | +| [Seldon Java Build Wrapper for S2I](../wrappers/java.md) | [seldonio/seldon-core-s2i-java-build](https://hub.docker.com/r/seldonio/seldon-core-s2i-java-build/tags/) | +| [Seldon Java Runtime Wrapper for S2I](../wrappers/java.md) | [seldonio/seldon-core-s2i-java-runtime](https://hub.docker.com/r/seldonio/seldon-core-s2i-java-runtime/tags/) | +| [Seldon R Wrapper for S2I](../wrappers/R.md) | [seldonio/seldon-core-s2i-r](https://hub.docker.com/r/seldonio/seldon-core-s2i-r/tags/) | +| [Seldon NodeJS Wrapper for S2I](../wrappers/nodejs.md) | [seldonio/seldon-core-s2i-nodejs](https://hub.docker.com/r/seldonio/seldon-core-s2i-nodejs/tags/) | -### Java packages +### Java packages (examples only) You can find these packages in the Maven repository. @@ -64,13 +61,3 @@ You can find these packages in the Maven repository. |-------------|---------|---------| | [Seldon Core Wrapper](https://github.com/SeldonIO/seldon-java-wrapper) | seldon-core-wrapper | 0.1.5 | | [Seldon Core JPMML](https://github.com/SeldonIO/JPMML-utils) | seldon-core-jpmml | 0.0.1 | - - - -## Deprecated - -### Language wrappers - -| Description | Image URL | Stable Version | Development | -|-------------|-----------|----------------|-------------| -| [Seldon Python 2 Wrapper for S2I](../python/python_wrapping_s2i.md) | [seldonio/seldon-core-s2i-python2](https://hub.docker.com/r/seldonio/seldon-core-s2i-python2/tags/) | 0.5.1 | deprecated | From 0dad46db9e5565e9dec2423b76773aff998677e0 Mon Sep 17 00:00:00 2001 From: Antanina Vertsinskaya Date: Thu, 15 Jan 2026 15:48:41 +0000 Subject: [PATCH 4/7] Fix warning hint at the Images page --- docs-gb/reference/images.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs-gb/reference/images.md b/docs-gb/reference/images.md index 13bb9fc5f0..bd796bf6a0 100644 --- a/docs-gb/reference/images.md +++ b/docs-gb/reference/images.md @@ -41,7 +41,9 @@ ## Other images -:warning :note: The following images play examplary roles only and are not production ready. +{% hint style="warning" %} +The following images play examplary roles only and are not production ready. +{% endhint %} ### Language wrappers (examples only) From a4a3588668725dc0105352edc2fbd69cfa4b8a0f Mon Sep 17 00:00:00 2001 From: Antanina Vertsinskaya Date: Thu, 15 Jan 2026 15:55:21 +0000 Subject: [PATCH 5/7] Fix Go Language Wrapper page, remove python API reference page --- docs-gb/SUMMARY.md | 3 +-- .../configuration/wrappers-and-sdks/go-language-wrapper.md | 5 ++++- .../python-language-wrapper/python-api-reference.md | 2 -- 3 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 docs-gb/configuration/wrappers-and-sdks/python-language-wrapper/python-api-reference.md diff --git a/docs-gb/SUMMARY.md b/docs-gb/SUMMARY.md index 559cea1dac..0a1a2928c1 100644 --- a/docs-gb/SUMMARY.md +++ b/docs-gb/SUMMARY.md @@ -60,9 +60,8 @@ * [Create image with Dockerfile](wrappers/python/python_wrapping_docker.md) * [Seldon Python server configuration](wrappers/python/python_server.md) * [Calling the Seldon API with Seldon Python client](wrappers/python/seldon_client.md) - * [\[Python API reference\]](configuration/wrappers-and-sdks/python-language-wrapper/python-api-reference.md) * [Development Tips](wrappers/python/developer_notes.md) - * [\[Go Language Wrapper\]](configuration/wrappers-and-sdks/go-language-wrapper.md) + * [Go Language Wrapper](configuration/wrappers-and-sdks/go-language-wrapper.md) * [Java Language Wrapper](wrappers/java.md) * [Nodejs Language Wrapper](wrappers/nodejs.md) * [C++ Language Wrapper](wrappers/cpp.md) diff --git a/docs-gb/configuration/wrappers-and-sdks/go-language-wrapper.md b/docs-gb/configuration/wrappers-and-sdks/go-language-wrapper.md index d5b640016c..b4e077d206 100644 --- a/docs-gb/configuration/wrappers-and-sdks/go-language-wrapper.md +++ b/docs-gb/configuration/wrappers-and-sdks/go-language-wrapper.md @@ -1,2 +1,5 @@ -# \[Go Language Wrapper] +# Go Language Wrapper +This is an initial example Go project to illustrate how Go microservices can be built and deployed for management by Seldon Core. + +Follow the [notebook](https://github.com/SeldonIO/seldon-core/blob/master/incubating/wrappers/s2i/go/SeldonGoModel.ipynb) to test. diff --git a/docs-gb/configuration/wrappers-and-sdks/python-language-wrapper/python-api-reference.md b/docs-gb/configuration/wrappers-and-sdks/python-language-wrapper/python-api-reference.md deleted file mode 100644 index b907c4e03f..0000000000 --- a/docs-gb/configuration/wrappers-and-sdks/python-language-wrapper/python-api-reference.md +++ /dev/null @@ -1,2 +0,0 @@ -# \[Python API reference] - From fcde6d52f97407504672fbccbe4a2b8a75dd808c Mon Sep 17 00:00:00 2001 From: Antanina Vertsinskaya Date: Thu, 15 Jan 2026 15:55:47 +0000 Subject: [PATCH 6/7] Add warning hint to the Wrappers and SDKs page --- docs-gb/configuration/wrappers-and-sdks/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs-gb/configuration/wrappers-and-sdks/README.md b/docs-gb/configuration/wrappers-and-sdks/README.md index eea80e458e..f4b33bc0c8 100644 --- a/docs-gb/configuration/wrappers-and-sdks/README.md +++ b/docs-gb/configuration/wrappers-and-sdks/README.md @@ -1,2 +1,5 @@ # Wrappers and SDKs +{% hint style="warning" %} +All wrappers except Python Language Wrapper play examplary roles only and are not production ready. +{% endhint %} From 1a20e39cd645ef670aab602a41375f180a314b6a Mon Sep 17 00:00:00 2001 From: Antanina Vertsinskaya Date: Thu, 15 Jan 2026 16:11:39 +0000 Subject: [PATCH 7/7] Add warning hint to every wrapper page --- .../configuration/wrappers-and-sdks/go-language-wrapper.md | 4 ++++ docs-gb/wrappers/cpp.md | 4 ++++ docs-gb/wrappers/java.md | 3 +++ docs-gb/wrappers/nodejs.md | 4 ++++ docs-gb/wrappers/r.md | 6 +++++- 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/docs-gb/configuration/wrappers-and-sdks/go-language-wrapper.md b/docs-gb/configuration/wrappers-and-sdks/go-language-wrapper.md index b4e077d206..2c3dba31ed 100644 --- a/docs-gb/configuration/wrappers-and-sdks/go-language-wrapper.md +++ b/docs-gb/configuration/wrappers-and-sdks/go-language-wrapper.md @@ -1,5 +1,9 @@ # Go Language Wrapper +{% hint style="warning" %} +This wrapper plays examplary role only and is not production ready. +{% endhint %} + This is an initial example Go project to illustrate how Go microservices can be built and deployed for management by Seldon Core. Follow the [notebook](https://github.com/SeldonIO/seldon-core/blob/master/incubating/wrappers/s2i/go/SeldonGoModel.ipynb) to test. diff --git a/docs-gb/wrappers/cpp.md b/docs-gb/wrappers/cpp.md index df8f38d8bf..3c98c3b0e7 100644 --- a/docs-gb/wrappers/cpp.md +++ b/docs-gb/wrappers/cpp.md @@ -1,5 +1,9 @@ # Packaging a C++ Framework/Model for Seldon Core +{% hint style="warning" %} +This wrapper plays examplary role only and is not production ready. +{% endhint %} + In this guide we cover how you can wrap your CPP models using the Seldon CPP wrapper. For a quick start you can try out the following two examples: diff --git a/docs-gb/wrappers/java.md b/docs-gb/wrappers/java.md index 550824204a..225d2a1d8a 100644 --- a/docs-gb/wrappers/java.md +++ b/docs-gb/wrappers/java.md @@ -1,5 +1,8 @@ # Packaging a Java model for Seldon Core using s2i +{% hint style="warning" %} +This wrapper plays examplary role only and is not production ready. +{% endhint %} In this guide, we illustrate the steps needed to wrap your own Java model in a docker image ready for deployment with Seldon Core using [source-to-image app s2i](https://github.com/openshift/source-to-image). diff --git a/docs-gb/wrappers/nodejs.md b/docs-gb/wrappers/nodejs.md index 198762948f..515c345dc5 100644 --- a/docs-gb/wrappers/nodejs.md +++ b/docs-gb/wrappers/nodejs.md @@ -1,5 +1,9 @@ # Packaging a NodeJS model for Seldon Core using s2i +{% hint style="warning" %} +This wrapper plays examplary role only and is not production ready. +{% endhint %} + In this guide, we illustrate the steps needed to wrap your own JS model running on a node engine in a docker image ready for deployment with Seldon Core using [source-to-image app s2i](https://github.com/openshift/source-to-image). If you are not familiar with s2i you can read [general instructions on using s2i](../wrappers/s2i.md) and then follow the steps below. diff --git a/docs-gb/wrappers/r.md b/docs-gb/wrappers/r.md index 225d69d1e8..6eb2e1bdb5 100644 --- a/docs-gb/wrappers/r.md +++ b/docs-gb/wrappers/r.md @@ -1,4 +1,8 @@ -# Packaging an R model for Seldon Core using s2i (incubating) +# Packaging an R model for Seldon Core using s2i + +{% hint style="warning" %} +This wrapper plays examplary role only and is not production ready. +{% endhint %} In this guide, we illustrate the steps needed to wrap your own R model in a docker image ready for deployment with Seldon Core using [source-to-image app s2i](https://github.com/openshift/source-to-image).