Skip to content
Open
79 changes: 49 additions & 30 deletions .github/workflows/bazel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,15 @@ on:

jobs:
bazel-build-test:
name: Bazel build & test (Java ${{ matrix.java }})
runs-on: ubuntu-latest
name: Bazel build & test (Java ${{ matrix.java }} on ${{ matrix.os }})
runs-on: ${{ matrix.os }}
permissions:
contents: read
strategy:
fail-fast: false
matrix:
java: ["11", "17", "21"]
java: ["11.0.x", "17.0.x", "21.0.x"]
os: [ubuntu-latest, macos-latest, windows-latest]
env:
BAZELISK_SKIP_VERSION_CHECK: "1"

Expand All @@ -53,7 +56,8 @@ jobs:

# Install Bazelisk which reads the pinned version from .bazelversion.
# Install into $HOME/.local/bin (no root required) and add it to PATH.
- name: Install Bazelisk
- name: Install Bazelisk (Linux)
if: runner.os == 'Linux'
run: |
mkdir -p "$HOME/.local/bin"
curl -fsSL \
Expand All @@ -62,6 +66,30 @@ jobs:
chmod +x "$HOME/.local/bin/bazel"
echo "$HOME/.local/bin" >> "$GITHUB_PATH"

- name: Install Bazelisk (macOS)
if: runner.os == 'macOS'
run: |
mkdir -p "$HOME/.local/bin"
ARCH=$(uname -m)
SUFFIX="amd64"
[[ "$ARCH" == "arm64" ]] && SUFFIX="arm64"
curl -fsSL \
"https://github.com/bazelbuild/bazelisk/releases/download/v1.24.1/bazelisk-darwin-${SUFFIX}" \
-o "$HOME/.local/bin/bazel"
chmod +x "$HOME/.local/bin/bazel"
echo "$HOME/.local/bin" >> "$GITHUB_PATH"

- name: Install Bazelisk (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
$dir = Join-Path $HOME ".local\bin"
New-Item -ItemType Directory -Force -Path $dir | Out-Null
Invoke-WebRequest `
-Uri "https://github.com/bazelbuild/bazelisk/releases/download/v1.24.1/bazelisk-windows-amd64.exe" `
-OutFile (Join-Path $dir "bazel.exe")
Add-Content $env:GITHUB_PATH "$dir"

# ----------------------------------------------------------------
# Cache layers
# The disk cache stores compiled action outputs; the repository cache
Expand All @@ -86,40 +114,31 @@ jobs:
# stabilises, subsequent runs where MODULE.bazel has not changed are fast
# because rules_jvm_external short-circuits on an identical artifact list.
- name: Pin Maven dependencies
shell: bash
run: REPIN=1 bazel run @maven//:pin

# ----------------------------------------------------------------
# Build all core modules
# ----------------------------------------------------------------
# Use folded YAML scalars (no shell line-continuation backslashes) so
# the generated script remains portable across Windows/Linux/macOS.
- name: Build
run: |
bazel build --config=ci \
//kubernetes:client-java-api \
//proto:client-java-proto \
//util:client-java \
//fluent:client-java-api-fluent \
//extended:client-java-extended

# Spring modules require Java 17+; skip them on the Java 11 matrix leg.
- name: Build Spring modules (Java 17+)
if: matrix.java != '11'
run: |
bazel build --config=ci \
//spring:client-java-spring-integration \
//spring-aot:client-java-spring-aot-integration
shell: bash
run: >-
bazel build --config=ci
//kubernetes:client-java-api
//proto:client-java-proto
//util:client-java
//fluent:client-java-api-fluent
//extended:client-java-extended

# ----------------------------------------------------------------
# Test — run per-module test suites
# ----------------------------------------------------------------
- name: Test core modules
run: |
bazel test --config=ci \
//kubernetes:tests \
//util:tests \
//extended:tests

- name: Test Spring modules (Java 17+)
if: matrix.java != '11'
run: |
bazel test --config=ci \
//spring:tests
shell: bash
run: >-
bazel test --config=ci
//kubernetes:tests
//util:tests
//extended:tests
35 changes: 30 additions & 5 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,18 @@ on:
branches: [ master ]
paths:
- '**/*.java'
- '**/pom.xml'
- '**/BUILD.bazel'
- 'MODULE.bazel'
- '.bazelrc'
- '.github/workflows/codeql-analysis.yml'
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
paths:
- '**/*.java'
- '**/pom.xml'
- '**/BUILD.bazel'
- 'MODULE.bazel'
- '.bazelrc'
- '.github/workflows/codeql-analysis.yml'
schedule:
- cron: '37 19 * * 0'
Expand All @@ -33,6 +37,8 @@ jobs:
fail-fast: false
matrix:
language: [ 'java' ]
env:
BAZELISK_SKIP_VERSION_CHECK: "1"

steps:
- name: Checkout repository
Expand All @@ -48,10 +54,29 @@ jobs:
with:
languages: ${{ matrix.language }}

# See https://github.com/github/codeql/issues/13541 for the origins of this command
# We can't use autobuild because it doesn't detect the right Java version
- name: Install Bazelisk
run: |
mkdir -p "$HOME/.local/bin"
curl -fsSL \
https://github.com/bazelbuild/bazelisk/releases/download/v1.24.1/bazelisk-linux-amd64 \
-o "$HOME/.local/bin/bazel"
chmod +x "$HOME/.local/bin/bazel"
echo "$HOME/.local/bin" >> "$GITHUB_PATH"

- name: Restore Bazel caches
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: |
~/.cache/bazel-disk-cache
~/.cache/bazel/cache/repos/v1
key: bazel-${{ runner.os }}-codeql-${{ matrix.language }}-${{ hashFiles('MODULE.bazel', '.bazelversion', 'maven_install.json') }}
restore-keys: |
bazel-${{ runner.os }}-codeql-${{ matrix.language }}-
bazel-${{ runner.os }}-

# Build with Bazel so CI/CD remains Maven-free.
- name: Build project
run: ./mvnw clean package -f "pom.xml" -B -V -e -Dfindbugs.skip -Dcheckstyle.skip -Dpmd.skip=true -Dspotbugs.skip -Denforcer.skip -Dmaven.javadoc.skip -DskipTests -Dmaven.test.skip.exec -Dlicense.skip=true -Drat.skip=true -Dspotless.check.skip=true
run: bazel build --config=ci //...

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4
2 changes: 1 addition & 1 deletion .github/workflows/generate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ jobs:
with:
distribution: 'temurin'
java-version: 17.0.x
cache: maven
- name: Checkout Gen
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
Expand Down Expand Up @@ -133,4 +134,3 @@ jobs:




30 changes: 1 addition & 29 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,7 @@
name: build

on:
push:
branches: [ "master", "master-java8", "release-**" ]
paths:
- '**/*.java'
- '**/pom.xml'
- '.mvn/**'
- 'mvnw'
- 'mvnw.cmd'
- '**/*.sh'
- 'client-java-contrib/Dockerfile'
- 'e2e/**/*.yaml'
- '.github/workflows/maven.yml'
- '!spring/**'
- '!spring-aot/**'
pull_request:
branches: [ "master", "master-java8", "release-**" ]
paths:
- '**/*.java'
- '**/pom.xml'
- '.mvn/**'
- 'mvnw'
- 'mvnw.cmd'
- '**/*.sh'
- 'client-java-contrib/Dockerfile'
- 'e2e/**/*.yaml'
- '.github/workflows/maven.yml'
- '!spring/**'
- '!spring-aot/**'
workflow_dispatch: {}

jobs:
verify-format:
Expand Down Expand Up @@ -185,4 +158,3 @@ jobs:
- name: Run Code-gen for Prometheus-Operator
working-directory: ${{ github.workspace }}/client-java-contrib/prometheus-operator
run: IMAGE_TAG=gh-action-tmp ./update.sh

26 changes: 26 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ on:
jobs:
release:
runs-on: ubuntu-latest
env:
BAZELISK_SKIP_VERSION_CHECK: "1"
steps:
- name: Validate Input
run: |
Expand All @@ -39,11 +41,34 @@ jobs:
with:
distribution: 'temurin'
java-version: 17.0.x
cache: maven
server-id: ossrh
server-username: OSSRH_USERNAME
server-password: OSSRH_TOKEN
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: GPG_PASSPHRASE
- name: Install Bazelisk
run: |
mkdir -p "$HOME/.local/bin"
curl -fsSL \
https://github.com/bazelbuild/bazelisk/releases/download/v1.24.1/bazelisk-linux-amd64 \
-o "$HOME/.local/bin/bazel"
chmod +x "$HOME/.local/bin/bazel"
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- name: Restore Bazel caches
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: |
~/.cache/bazel-disk-cache
~/.cache/bazel/cache/repos/v1
key: bazel-${{ runner.os }}-release-${{ hashFiles('MODULE.bazel', '.bazelversion', 'maven_install.json') }}
restore-keys: |
bazel-${{ runner.os }}-release-
bazel-${{ runner.os }}-
- name: Bazel Build
run: bazel build --config=ci //...
- name: Bazel Test
run: bazel test --config=ci //...
- name: Prepare
run: |
export GPG_TTY=$(tty)
Expand All @@ -69,6 +94,7 @@ jobs:
-DreleaseVersion=${{ github.event.inputs.releaseVersion }} \
-DdevelopmentVersion=${{ github.event.inputs.nextDevelopmentVersion }} \
-DpushChanges=false \
-Darguments=-DskipTests \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
- name: Release Perform
if: ${{ github.event.inputs.dry-run != 'true' }}
Expand Down
10 changes: 2 additions & 8 deletions .github/workflows/snapshot.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,6 @@
name: Upload Snapshot

on:
push:
branches:
- master
paths:
- '**/*.java'
- '**/pom.xml'
- '.github/workflows/snapshot.yml'
workflow_dispatch: {}

permissions:
Expand All @@ -25,6 +18,7 @@ jobs:
with:
distribution: 'temurin'
java-version: 17.0.x
cache: maven
server-id: ossrh
server-username: OSSRH_USERNAME
server-password: OSSRH_TOKEN
Expand All @@ -43,4 +37,4 @@ jobs:
env:
OSSRH_USERNAME: ${{ secrets.SNAPSHOT_UPLOAD_USER }}
OSSRH_TOKEN: ${{ secrets.SNAPSHOT_UPLOAD_PASSWORD }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSWORD }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSWORD }}
21 changes: 1 addition & 20 deletions .github/workflows/spring.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,7 @@
name: spring

on:
push:
branches: [ "master", "master-java8", "release-**" ]
paths:
- 'spring/**'
- 'spring-aot/**'
- '**/pom.xml'
- '.mvn/**'
- 'mvnw'
- 'mvnw.cmd'
- '.github/workflows/spring.yml'
pull_request:
branches: [ "master", "master-java8", "release-**" ]
paths:
- 'spring/**'
- 'spring-aot/**'
- '**/pom.xml'
- '.mvn/**'
- 'mvnw'
- 'mvnw.cmd'
- '.github/workflows/spring.yml'
workflow_dispatch: {}

jobs:
spring-tests:
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes Java Client

[![build](https://github.com/kubernetes-client/java/workflows/build/badge.svg)](https://github.com/kubernetes-client/java/actions/workflows/maven.yml)
[![bazel](https://github.com/kubernetes-client/java/actions/workflows/bazel.yml/badge.svg)](https://github.com/kubernetes-client/java/actions/workflows/bazel.yml)
[![Client Capabilities](https://img.shields.io/badge/Kubernetes%20client-Silver-blue.svg?style=flat&colorB=C0C0C0&colorA=306CE8)](https://bit.ly/kubernetes-client-capabilities-badge)
[![Client Support Level](https://img.shields.io/badge/kubernetes%20client-beta-green.svg?style=flat&colorA=306CE8)](https://bit.ly/kubernetes-client-support-badge)
[![Maven Central](https://img.shields.io/maven-central/v/io.kubernetes/client-java.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22io.kubernetes%22%20AND%20a:%22client-java%22)
Expand Down Expand Up @@ -38,4 +38,3 @@ already covered.

You can also reach out to us via [#kubernetes-client](https://kubernetes.slack.com/messages/kubernetes-clients/) slack
channel.

Loading