Skip to content

Expose additional fields for port Service spec to support features such as topology based routing #1228

Expose additional fields for port Service spec to support features such as topology based routing

Expose additional fields for port Service spec to support features such as topology based routing #1228

# Copyright 2019, 2025, Oracle Corporation and/or its affiliates. All rights reserved.
# Licensed under the Universal Permissive License v 1.0 as shown at
# http://oss.oracle.com/licenses/upl.
# ---------------------------------------------------------------------------
# Coherence Operator GitHub Actions Backwards Compatibility Tests.
# ---------------------------------------------------------------------------
name: Backwards Compatibility Tests
on:
workflow_dispatch:
push:
branches-ignore:
- gh-pages
- 1.0.0
- 2.x
- 3.x
pull_request:
types:
- opened
- synchronize
- committed
branches-ignore:
- gh-pages
- 1.0.0
- 2.x
- 3.x
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
compatibilityVersion:
- 3.5.0
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.5
- 3.3.4
- 3.3.3
include:
- compatibilityVersion: 3.5.0
coherence-image: "ghcr.io/oracle/coherence-ce:14.1.2-0-2"
compatibilitySelector: control-plane=coherence
k8s: kindest/node:v1.33.1@sha256:050072256b9a903bd914c0b2866828150cb229cea0efe5892e2b644d5dd3b34f
- compatibilityVersion: 3.4.3
coherence-image: "ghcr.io/oracle/coherence-ce:14.1.2-0-2"
compatibilitySelector: control-plane=coherence
k8s: kindest/node:v1.32.2@sha256:f226345927d7e348497136874b6d207e0b32cc52154ad8323129352923a3142f
- compatibilityVersion: 3.4.2
coherence-image: "ghcr.io/oracle/coherence-ce:14.1.2-0-2"
compatibilitySelector: control-plane=coherence
k8s: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- compatibilityVersion: 3.4.1
coherence-image: "ghcr.io/oracle/coherence-ce:14.1.2-0-2"
compatibilitySelector: control-plane=coherence
k8s: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- compatibilityVersion: 3.4.0
coherence-image: "ghcr.io/oracle/coherence-ce:22.06.12"
compatibilitySelector: control-plane=coherence
k8s: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- compatibilityVersion: 3.3.5
coherence-image: "ghcr.io/oracle/coherence-ce:22.06.12"
compatibilitySelector: control-plane=coherence
k8s: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- compatibilityVersion: 3.3.4
coherence-image: "ghcr.io/oracle/coherence-ce:22.06.12"
compatibilitySelector: control-plane=coherence
k8s: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- compatibilityVersion: 3.3.3
coherence-image: "ghcr.io/oracle/coherence-ce:22.06.12"
compatibilitySelector: control-plane=coherence
k8s: kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
# This step will free up disc space on the runner by removing
# lots of things that we do not need.
- name: disc
shell: bash
run: |
echo "Listing 100 largest packages"
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n | tail -n 100
df -h
echo "Removing large packages"
sudo apt-get remove -y '^dotnet-.*' || true
sudo apt-get remove -y '^llvm-.*' || true
sudo apt-get remove -y 'monodoc-http' || true
sudo apt-get remove -y 'php.*' || true
sudo apt-get remove -y azure-cli google-cloud-sdk hhvm google-chrome-stable firefox powershell mono-devel || true
sudo apt-get autoremove -y || true
sudo apt-get clean
df -h
echo "Removing large directories"
rm -rf /usr/share/dotnet/
sudo rm -rf /usr/local/lib/android
df -h
- name: Set up JDK
uses: oracle-actions/setup-java@v1
with:
website: oracle.com
release: 21
- name: Cache Go Modules
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-mods-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-mods-
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Edit DNS Resolve
shell: bash
run: |
sudo chown -R runner:runner /run/systemd/resolve/stub-resolv.conf
sudo echo nameserver 8.8.8.8 > /run/systemd/resolve/stub-resolv.conf
- name: Start KinD Cluster
# Start a KinD K8s cluster with single worker node
shell: bash
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin
export KIND_IMAGE=${{ matrix.k8s }}
make kind
kubectl version
kubectl get nodes
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
docker pull gcr.io/distroless/java17-debian12
docker pull gcr.io/distroless/java21-debian12
docker pull ${{ matrix.coherence-image }}
- name: Build
shell: bash
run: make all
- name: Load Images to KinD
# Load the images just built to the KinD cluster
shell: bash
run: |
make kind-load
make remove-all-images
sudo docker image prune --all --force
sudo docker builder prune -a
df -h
- name: Compatibility Tests
shell: bash
run: |
export COHERENCE_IMAGE=${{ matrix.coherence-image }}
export COMPATIBLE_VERSION=${{ matrix.compatibilityVersion }}
export COMPATIBLE_SELECTOR=${{ matrix.compatibilitySelector }}
make compatibility-test
- uses: actions/upload-artifact@v4
if: ${{ failure() || cancelled() }}
with:
name: test-output-${{ matrix.compatibilityVersion }}
path: build/_output/test-logs
if-no-files-found: ignore