Skip to content

Commit

Permalink
refactor: CI only pulls each minikube once for each kubernetes version
Browse files Browse the repository at this point in the history
Signed-off-by: xstefank <[email protected]>
  • Loading branch information
xstefank committed Feb 19, 2025
1 parent f5f0a60 commit 3742efd
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 13 deletions.
54 changes: 49 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,39 +1,73 @@
name: Build
name: Build with Kubernetes

env:
MAVEN_ARGS: -V -ntp -e

on:
workflow_call:
inputs:
kube-version:
type: string
required: true

jobs:
set_up_kubernetes:
name: Set up Kubernetes ${{ inputs.kube-version }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Minikube
uses: manusa/[email protected]
with:
minikube version: 'v1.34.0'
kubernetes version: '${{ inputs.kube-version }}'
driver: 'docker'
github token: ${{ secrets.GITHUB_TOKEN }}

- name: Save minikube directory
id: minikube
run: |
echo "minikube-dir=$MINIKUBE_HOME" >> $GITHUB_OUTPUT
- name: Upload minikube
uses: actions/upload-artifact@v4
with:
name: minikube-${{ inputs.kube-version }}
path: ${{ steps.minikube.outputs.minikube-dir }}
include-hidden-files: true

integration_tests:
name: "Integration tests (${{ inputs.kube-version }}, ${{ matrix.java }}, ${{ matrix.it-category }})"
needs: set_up_kubernetes
strategy:
matrix:
java: [ 17, 21 ]
kubernetes: [ 'v1.29.12','1.30.8', '1.31.4', '1.32.0' ]
it-category: [ 'baseapi', 'dependent', 'workflow' ]
uses: ./.github/workflows/integration-tests.yml
with:
kube-version: ${{ inputs.kube-version }}
java-version: ${{ matrix.java }}
kube-version: ${{ matrix.kubernetes }}
it-category: ${{ matrix.it-category }}

http_client_tests:
name: "Integration tests (${{ inputs.kube-version }}, ${{ matrix.java }}, ${{ matrix.it-category }}, ${{ matrix.httpclient }})"
needs: set_up_kubernetes
strategy:
matrix:
java: [ 17, 21 ]
kubernetes: [ 'v1.29.12','1.30.8', '1.31.4', '1.32.0' ]
it-category: [ 'baseapi' ]
httpclient: [ 'vertx', 'jdk', 'jetty' ]
uses: ./.github/workflows/integration-tests.yml
with:
kube-version: ${{ inputs.kube-version }}
java-version: ${{ matrix.java }}
kube-version: ${{ matrix.kubernetes }}
it-category: ${{ matrix.it-category }}
http-client: ${{ matrix.httpclient }}

special_integration_tests:
name: "Special integration tests (${{ matrix.java }})"
needs: set_up_kubernetes
runs-on: ubuntu-latest
strategy:
matrix:
Expand All @@ -47,3 +81,13 @@ jobs:
java-version: ${{ matrix.java }}
- name: Run Special Integration Tests
run: ./mvnw ${MAVEN_ARGS} -B package -P minimal-watch-timeout-dependent-it --file pom.xml

delete_kubernetes:
needs: [ integration_tests, http_client_tests, special_integration_tests ]
if: always()
name: Delete Kubernetes ${{ inputs.kube-version }} artifact
runs-on: ubuntu-latest
steps:
- uses: geekyeggo/delete-artifact@v5
with:
name: minikube-${{ inputs.kube-version }}
21 changes: 14 additions & 7 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ on:

jobs:
integration_tests:
name: "Integration tests (${{ inputs.kube-version }}, ${{ inputs.java-version }}, ${{ inputs.it-category }},
${{ inputs.http-client }}, ${{ inputs.experimental }}, ${{ inputs.checkout-ref }})"
runs-on: ubuntu-latest
continue-on-error: ${{ inputs.experimental }}
timeout-minutes: 40
Expand All @@ -43,13 +45,18 @@ jobs:
distribution: temurin
java-version: ${{ inputs.java-version }}
cache: 'maven'
- name: Set up Minikube
uses: manusa/actions[email protected]
- name: Download minikube artifact for Kubernetes ${{ inputs.kube-version }}
uses: actions/download-artifact@v4
with:
minikube version: 'v1.34.0'
kubernetes version: '${{ inputs.kube-version }}'
driver: 'docker'
github token: ${{ secrets.GITHUB_TOKEN }}
name: minikube-${{inputs.kube-version}}
path: minikube
- name: Start minikube with Kubernetes ${{ inputs.kube-version }}
run: |
# wait for docker
docker version -f '{{.Server.Version}} - {{.Client.Version}}'
export MINIKUBE_HOME=$PWD/minikube
minikube start --driver=docker
kubectl version
- name: "${{inputs.it-category}} integration tests (kube: ${{ inputs.kube-version }} / java: ${{ inputs.java-version }} / client: ${{ inputs.http-client }})"
run: |
if [ -z "${{inputs.it-category}}" ]; then
Expand All @@ -59,4 +66,4 @@ jobs:
fi
echo "Using profile: ${it_profile}"
./mvnw ${MAVEN_ARGS} -T1C -B install -DskipTests -Pno-apt --file pom.xml
./mvnw ${MAVEN_ARGS} -T1C -B package -P${it_profile} -Dfabric8-httpclient-impl.name=${{inputs.http-client}} --file pom.xml
./mvnw ${MAVEN_ARGS} -T1C -B package -P${it_profile} -Dfabric8-httpclient-impl.name=${{inputs.http-client}} --file pom.xml
8 changes: 7 additions & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,10 @@ jobs:
run: ./mvnw ${MAVEN_ARGS} clean install -Pno-apt --file pom.xml

build:
uses: ./.github/workflows/build.yml
name: Test with Kubernetes ${{ matrix.kubernetes }}
strategy:
matrix:
kubernetes: [ 'v1.29.12','1.30.8', '1.31.4', '1.32.0' ]
uses: ./.github/workflows/build.yml
with:
kube-version: ${{ matrix.kubernetes }}

0 comments on commit 3742efd

Please sign in to comment.