Skip to content

Commit f56817b

Browse files
committed
Merge branch '6.x'
# Conflicts: # .github/workflows/release-snapshots.yaml # .github/workflows/release.yaml # CHANGELOG.md # chaos-tests/pom.xml # crd-generator/api-v2/pom.xml # crd-generator/api/pom.xml # crd-generator/apt/pom.xml # crd-generator/collector/pom.xml # crd-generator/maven-plugin/src/it/test-dependencies/custom-resources/pom.xml # crd-generator/maven-plugin/src/it/test-dependencies/intermediate-custom-resource-classes/pom.xml # crd-generator/maven-plugin/src/it/test-dependencies/pom.xml # crd-generator/pom.xml # crd-generator/test-apt/pom.xml # crd-generator/test/pom.xml # extensions/certmanager/client/pom.xml # extensions/certmanager/examples/pom.xml # extensions/certmanager/model-v1/pom.xml # extensions/certmanager/model-v1alpha2/pom.xml # extensions/certmanager/model-v1alpha3/pom.xml # extensions/certmanager/model-v1beta1/pom.xml # extensions/certmanager/model/pom.xml # extensions/certmanager/pom.xml # extensions/certmanager/tests/pom.xml # extensions/chaosmesh/client/pom.xml # extensions/chaosmesh/examples/pom.xml # extensions/chaosmesh/model/pom.xml # extensions/chaosmesh/pom.xml # extensions/chaosmesh/tests/pom.xml # extensions/istio/client/pom.xml # extensions/istio/examples/pom.xml # extensions/istio/model-v1alpha3/pom.xml # extensions/istio/model-v1beta1/pom.xml # extensions/istio/pom.xml # extensions/istio/tests/pom.xml # extensions/knative/client/pom.xml # extensions/knative/examples/pom.xml # extensions/knative/model/pom.xml # extensions/knative/pom.xml # extensions/knative/tests/pom.xml # extensions/open-cluster-management/client/pom.xml # extensions/open-cluster-management/examples/pom.xml # extensions/open-cluster-management/model-cluster/pom.xml # extensions/open-cluster-management/model-discovery/pom.xml # extensions/open-cluster-management/model-observability/pom.xml # extensions/open-cluster-management/model-operator/pom.xml # extensions/open-cluster-management/model-placementruleapps/pom.xml # extensions/open-cluster-management/model-policy/pom.xml # extensions/open-cluster-management/model-search/pom.xml # extensions/open-cluster-management/model/pom.xml # extensions/open-cluster-management/pom.xml # extensions/open-cluster-management/tests/pom.xml # extensions/open-virtual-network/client/pom.xml # extensions/open-virtual-network/model/pom.xml # extensions/open-virtual-network/pom.xml # extensions/open-virtual-network/tests/pom.xml # extensions/pom.xml # extensions/service-catalog/client/pom.xml # extensions/service-catalog/model/pom.xml # extensions/tekton/client/pom.xml # extensions/tekton/examples/pom.xml # extensions/tekton/model-triggers-v1alpha1/pom.xml # extensions/tekton/model-triggers-v1beta1/pom.xml # extensions/tekton/model-v1/pom.xml # extensions/tekton/model-v1alpha1/pom.xml # extensions/tekton/model-v1beta1/pom.xml # extensions/tekton/model/pom.xml # extensions/tekton/pom.xml # extensions/tekton/tests/pom.xml # extensions/verticalpodautoscaler/client/pom.xml # extensions/verticalpodautoscaler/examples/pom.xml # extensions/verticalpodautoscaler/model-v1/pom.xml # extensions/verticalpodautoscaler/pom.xml # extensions/verticalpodautoscaler/tests/pom.xml # extensions/volcano/client/pom.xml # extensions/volcano/examples/pom.xml # extensions/volcano/model/pom.xml # extensions/volcano/pom.xml # extensions/volcano/tests/pom.xml # extensions/volumesnapshot/client/pom.xml # extensions/volumesnapshot/examples/pom.xml # extensions/volumesnapshot/model/pom.xml # extensions/volumesnapshot/pom.xml # extensions/volumesnapshot/tests/pom.xml # generator-annotations/pom.xml # httpclient-jdk/pom.xml # httpclient-jetty/pom.xml # httpclient-okhttp/pom.xml # httpclient-tests/pom.xml # httpclient-vertx/pom.xml # java-generator/benchmark/pom.xml # java-generator/cli/pom.xml # java-generator/core/pom.xml # java-generator/gradle-plugin/pom.xml # java-generator/it/pom.xml # java-generator/maven-plugin/pom.xml # java-generator/pom.xml # junit/kube-api-test/client-inject/pom.xml # junit/kube-api-test/core/pom.xml # junit/kube-api-test/pom.xml # junit/kubernetes-junit-jupiter-autodetected/pom.xml # junit/kubernetes-junit-jupiter/pom.xml # junit/kubernetes-server-mock/pom.xml # junit/mockwebserver/pom.xml # kubernetes-client-api/pom.xml # kubernetes-client-deps-compatibility-tests/kubernetes-client-init-bc-fips/pom.xml # kubernetes-client-deps-compatibility-tests/pom.xml # kubernetes-client/pom.xml # kubernetes-examples/pom.xml # kubernetes-itests/pom.xml # kubernetes-model-generator/kubernetes-model-admissionregistration/pom.xml # kubernetes-model-generator/kubernetes-model-apiextensions/pom.xml # kubernetes-model-generator/kubernetes-model-apps/pom.xml # kubernetes-model-generator/kubernetes-model-autoscaling/pom.xml # kubernetes-model-generator/kubernetes-model-batch/pom.xml # kubernetes-model-generator/kubernetes-model-certificates/pom.xml # kubernetes-model-generator/kubernetes-model-common/pom.xml # kubernetes-model-generator/kubernetes-model-coordination/pom.xml # kubernetes-model-generator/kubernetes-model-core/pom.xml # kubernetes-model-generator/kubernetes-model-discovery/pom.xml # kubernetes-model-generator/kubernetes-model-events/pom.xml # kubernetes-model-generator/kubernetes-model-extensions/pom.xml # kubernetes-model-generator/kubernetes-model-flowcontrol/pom.xml # kubernetes-model-generator/kubernetes-model-gatewayapi/pom.xml # kubernetes-model-generator/kubernetes-model-jsonschema2pojo/pom.xml # kubernetes-model-generator/kubernetes-model-kustomize/pom.xml # kubernetes-model-generator/kubernetes-model-metrics/pom.xml # kubernetes-model-generator/kubernetes-model-networking/pom.xml # kubernetes-model-generator/kubernetes-model-node/pom.xml # kubernetes-model-generator/kubernetes-model-policy/pom.xml # kubernetes-model-generator/kubernetes-model-rbac/pom.xml # kubernetes-model-generator/kubernetes-model-resource/pom.xml # kubernetes-model-generator/kubernetes-model-scheduling/pom.xml # kubernetes-model-generator/kubernetes-model-storageclass/pom.xml # kubernetes-model-generator/kubernetes-model/pom.xml # kubernetes-model-generator/openshift-model-config/pom.xml # kubernetes-model-generator/openshift-model-console/pom.xml # kubernetes-model-generator/openshift-model-hive/pom.xml # kubernetes-model-generator/openshift-model-installer/pom.xml # kubernetes-model-generator/openshift-model-machine/pom.xml # kubernetes-model-generator/openshift-model-machineconfiguration/pom.xml # kubernetes-model-generator/openshift-model-miscellaneous/pom.xml # kubernetes-model-generator/openshift-model-monitoring/pom.xml # kubernetes-model-generator/openshift-model-operator/pom.xml # kubernetes-model-generator/openshift-model-operatorhub/pom.xml # kubernetes-model-generator/openshift-model-storageversionmigrator/pom.xml # kubernetes-model-generator/openshift-model-tuned/pom.xml # kubernetes-model-generator/openshift-model-whereabouts/pom.xml # kubernetes-model-generator/openshift-model/pom.xml # kubernetes-model-generator/pom.xml # kubernetes-tests/pom.xml # log4j/pom.xml # openshift-client-api/pom.xml # openshift-client/pom.xml # platforms/karaf/features/pom.xml # platforms/karaf/itests/pom.xml # platforms/karaf/pom.xml # platforms/pom.xml # pom.xml # uberjar/pom.xml
2 parents c81197e + 7363cc9 commit f56817b

File tree

4 files changed

+209
-0
lines changed

4 files changed

+209
-0
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@
1414

1515
#### _**Note**_: Breaking changes
1616

17+
### 6.14.0 (2025-06-10)
18+
* Fix #7107: Jackson 2.19.0+ support
19+
20+
#### _**Note**_: Breaking changes
21+
* Fix #7107: This release is not backwards-compatible with previous versions of Jackson, you'll need to use Jackson 2.19.0 in your project for a correct behavior of the Kubernetes Client.
22+
1723
### 7.3.1 (2025-05-20)
1824

1925
#### Bugs

doc/RELEASE.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
## Kubernetes Client 6.x
2+
3+
The CI pipeline for the Kubernetes Client 6.x is outdated and no longer functional with the new Sonatype Maven Central.
4+
The main issue is that since the release process requires compiling the project with multiple JDK versions in split processes,
5+
the new `central-publishing-maven-plugin` does not support this workflow.
6+
7+
To be able to still release the Kubernetes Client 6.x, we have to use a manual process.
8+
9+
> [!NOTE]
10+
> The SNAPSHOTs pipeline is still working since the SNAPSHOT release process is similar to that of the OSSRH repository.
11+
12+
### Manual Release Process
13+
14+
#### Build and install the project
15+
16+
Run the following command to build and install the project locally:
17+
18+
```bash
19+
PASSPHRASE=<your_passphrase> ./scripts/6.x-release.sh
20+
```
21+
22+
`PASSPHRASE` is the passphrase for the GPG key used to sign the artifacts.
23+
24+
#### Generate the ZIP bundle
25+
26+
Run the following command to generate the ZIP bundle:
27+
28+
```bash
29+
./scripts/6.x-bundle.sh
30+
```
31+
32+
This will create a ZIP file in a `/tmp/tmp.xxxxxxxxxxx` directory with the name `kubernetes-client-6.x.x-bundle.zip`.
33+
34+
#### Upload the ZIP bundle to Sonatype
35+
36+
Upload the generated ZIP bundle to Sonatype Maven Central using their web interface.
37+
38+
https://central.sonatype.com/publishing/deployments
39+
40+
Ensure that it validates and then click on "Publish".
41+

scripts/6.x-bundle.sh

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
#!/bin/bash
2+
#
3+
# Copyright (C) 2015 Red Hat, Inc.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
#
17+
18+
# Script to bundle multi-JDK Maven artifacts into a single directory
19+
# to publish into the new Sonatype Maven Central repository
20+
# using their web interface (https://central.sonatype.com/publishing)
21+
# Usage:
22+
# ./scripts/6.x-bundle.sh
23+
24+
set -e
25+
26+
xml_grep="xml_grep --text_only --cond"
27+
global_version=$($xml_grep '/project/version' "pom.xml" 2>/dev/null | tail -n1)
28+
echo "Generating Fabric8 Kubernetes Client bundle for version: $global_version"
29+
30+
TMPDIR=$(mktemp -d)
31+
echo "Using temp directory: $TMPDIR"
32+
33+
echo "Copying Maven artifacts..."
34+
find . -name pom.xml | while read -r pom; do
35+
dir=$(dirname "$pom")
36+
37+
# Extract Maven coordinates
38+
groupId=$($xml_grep '/project/parent/groupId|/project/groupId' "$pom" 2>/dev/null | tail -n1)
39+
artifactId=$($xml_grep '/project/artifactId' "$pom" 2>/dev/null | tail -n1)
40+
version=$($xml_grep '/project/parent/version|/project/version' "$pom" 2>/dev/null | tail -n1)
41+
42+
if [ -z "$groupId" ] || [ -z "$artifactId" ] || [ -z "$version" ]; then
43+
echo "Exiting due to missing coordinates in $pom (groupId: $groupId, artifactId: $artifactId, version: $version)"
44+
exit 1
45+
fi
46+
47+
if [ "$version" != "$global_version" ]; then
48+
echo " - Skipping $artifactId version $version as it does not match global version $global_version"
49+
continue
50+
fi
51+
52+
# Build nested directory path
53+
IFS='.' read -ra GROUP_PARTS <<< "$groupId"
54+
path=""
55+
for part in "${GROUP_PARTS[@]}"; do
56+
path="$path/$part"
57+
done
58+
path="$path/$artifactId/$version"
59+
target_path="$TMPDIR/$path"
60+
mkdir -p "$target_path"
61+
source_path="$(realpath ~/.m2/repository)$path"
62+
63+
# Copy files from source directory
64+
if [ -d "$source_path" ]; then
65+
find "$source_path" -maxdepth 1 -type f -name "${artifactId}-*" ! -name "*.lastUpdated" -exec cp {} "$target_path/" \;
66+
else
67+
echo " - Source directory $source_path does not exist. Skipping."
68+
fi
69+
done
70+
71+
echo "Copying BOM files..."
72+
BOMS="kubernetes-client-bom kubernetes-client-bom-with-deps"
73+
for bom in $BOMS; do
74+
bom_path="target/classes/$bom/target"
75+
if [ -d "$bom_path" ]; then
76+
target_path="$TMPDIR/io/fabric8/$bom/$global_version/"
77+
mkdir -p "$target_path"
78+
find "$bom_path" -maxdepth 1 -type f -exec cp {} "$target_path" \;
79+
else
80+
echo " - BOM directory $bom_path does not exist. Skipping."
81+
fi
82+
done
83+
84+
echo "Generating checksums..."
85+
find "$TMPDIR" -type f | while read -r file; do
86+
if [[ ! "$file" =~ \.asc$ ]]; then
87+
md5sum "$file" | awk '{print $1}' > "$file.md5"
88+
sha1sum "$file" | awk '{print $1}' > "$file.sha1"
89+
sha256sum "$file" | awk '{print $1}' > "$file.sha256"
90+
fi
91+
done
92+
93+
echo "Verifying signatures..."
94+
find "$TMPDIR" -type f -name "*.asc" | while read -r signed_file; do
95+
output=$(gpg --verify "$signed_file" 2>&1 || true)
96+
if echo "$output" | grep -q 'Good signature from "FuseSource'; then
97+
: # NO OP
98+
else
99+
echo "Signature verification failed for $signed_file: $output"
100+
exit 1
101+
fi
102+
done
103+
104+
echo "Creating ZIP archive..."
105+
(cd "$TMPDIR" && zip -rq "kubernetes-client-${global_version}-bundle.zip" .)
106+
107+
echo "Done. Files are in $TMPDIR"

scripts/6.x-release.sh

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/bin/zsh
2+
#
3+
# Copyright (C) 2015 Red Hat, Inc.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
#
17+
18+
# Run with: PASSPHRASE=your_passphrase ./scripts/6.x-release.sh
19+
20+
trap 'exit' ERR
21+
22+
if ! java -version 2>&1 | grep -q 'version "1.8.'; then
23+
echo "Java 8 is required. Please set JAVA_HOME to a Java 8 installation."
24+
exit 1
25+
fi
26+
27+
# Java 8 artifacts
28+
mvn -Prelease -Dgpg.passphrase=${PASSPHRASE} -DskipTests \
29+
clean install gpg:sign
30+
31+
OLD_JAVA_HOME="$JAVA_HOME"
32+
export JAVA_HOME="/home/user/00-MN/bin/jdk-11.0.14.1+1"
33+
export PATH="$JAVA_HOME/bin:$PATH"
34+
35+
if ! java -version 2>&1 | grep -q 'version "11'; then
36+
echo "Java 11 is required. Please set JAVA_HOME to a Java 11 installation."
37+
exit 1
38+
fi
39+
40+
# Java 11 artifacts
41+
mvn -Prelease -Dgpg.passphrase=${PASSPHRASE} -DskipTests \
42+
-pl "httpclient-jdk" \
43+
-pl "httpclient-jetty" \
44+
-pl "junit/kube-api-test" \
45+
-pl "junit/kube-api-test/core" \
46+
-pl "junit/kube-api-test/client-inject" \
47+
install gpg:sign
48+
49+
mvn -Prelease -DskipTests sundr:generate-bom
50+
mvn -Dgpg.passphrase=${PASSPHRASE} -DskipTests \
51+
-f "target/classes/kubernetes-client-bom/pom.xml" \
52+
gpg:sign
53+
mvn -Dgpg.passphrase=${PASSPHRASE} -DskipTests \
54+
-f "target/classes/kubernetes-client-bom-with-deps/pom.xml" \
55+
gpg:sign

0 commit comments

Comments
 (0)