Skip to content

Commit 0b47463

Browse files
authoredFeb 22, 2025··
refactor: CI only pulls each minikube once for each kubernetes version (#2691)
Signed-off-by: xstefank <[email protected]>
1 parent 8a37956 commit 0b47463

File tree

3 files changed

+69
-13
lines changed

3 files changed

+69
-13
lines changed
 

‎.github/workflows/build.yml

+49-5
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,73 @@
1-
name: Build
1+
name: Build with Kubernetes
22

33
env:
44
MAVEN_ARGS: -V -ntp -e
55

66
on:
77
workflow_call:
8+
inputs:
9+
kube-version:
10+
type: string
11+
required: true
812

913
jobs:
14+
set_up_kubernetes:
15+
name: Set up Kubernetes ${{ inputs.kube-version }}
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v4
19+
20+
- name: Set up Minikube
21+
uses: manusa/actions-setup-minikube@v2.13.1
22+
with:
23+
minikube version: 'v1.34.0'
24+
kubernetes version: '${{ inputs.kube-version }}'
25+
driver: 'docker'
26+
github token: ${{ secrets.GITHUB_TOKEN }}
27+
28+
- name: Save minikube directory
29+
id: minikube
30+
run: |
31+
echo "minikube-dir=$MINIKUBE_HOME" >> $GITHUB_OUTPUT
32+
33+
- name: Upload minikube
34+
uses: actions/upload-artifact@v4
35+
with:
36+
name: minikube-${{ inputs.kube-version }}
37+
path: ${{ steps.minikube.outputs.minikube-dir }}
38+
include-hidden-files: true
39+
1040
integration_tests:
41+
name: "JDK: ${{ matrix.java }}, IT category: ${{ matrix.it-category }}"
42+
needs: set_up_kubernetes
1143
strategy:
1244
matrix:
1345
java: [ 17, 21 ]
14-
kubernetes: [ 'v1.29.12','1.30.8', '1.31.4', '1.32.0' ]
1546
it-category: [ 'baseapi', 'dependent', 'workflow' ]
1647
uses: ./.github/workflows/integration-tests.yml
1748
with:
49+
kube-version: ${{ inputs.kube-version }}
1850
java-version: ${{ matrix.java }}
19-
kube-version: ${{ matrix.kubernetes }}
2051
it-category: ${{ matrix.it-category }}
2152

2253
http_client_tests:
54+
name: "JDK: ${{ matrix.java }}, IT category: ${{ matrix.it-category }}, HTTP client: ${{ matrix.httpclient }}"
55+
needs: set_up_kubernetes
2356
strategy:
2457
matrix:
2558
java: [ 17, 21 ]
26-
kubernetes: [ 'v1.29.12','1.30.8', '1.31.4', '1.32.0' ]
2759
it-category: [ 'baseapi' ]
2860
httpclient: [ 'vertx', 'jdk', 'jetty' ]
2961
uses: ./.github/workflows/integration-tests.yml
3062
with:
63+
kube-version: ${{ inputs.kube-version }}
3164
java-version: ${{ matrix.java }}
32-
kube-version: ${{ matrix.kubernetes }}
3365
it-category: ${{ matrix.it-category }}
3466
http-client: ${{ matrix.httpclient }}
3567

3668
special_integration_tests:
69+
name: "Special integration tests (${{ matrix.java }})"
70+
needs: set_up_kubernetes
3771
runs-on: ubuntu-latest
3872
strategy:
3973
matrix:
@@ -47,3 +81,13 @@ jobs:
4781
java-version: ${{ matrix.java }}
4882
- name: Run Special Integration Tests
4983
run: ./mvnw ${MAVEN_ARGS} -B package -P minimal-watch-timeout-dependent-it --file pom.xml
84+
85+
delete_kubernetes:
86+
needs: [ integration_tests, http_client_tests, special_integration_tests ]
87+
if: always()
88+
name: Delete Kubernetes ${{ inputs.kube-version }} artifact
89+
runs-on: ubuntu-latest
90+
steps:
91+
- uses: geekyeggo/delete-artifact@v5
92+
with:
93+
name: minikube-${{ inputs.kube-version }}

‎.github/workflows/integration-tests.yml

+13-7
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ on:
2828

2929
jobs:
3030
integration_tests:
31+
name: "Experimental: ${{ inputs.experimental }}, Checkout ref: ${{ inputs.checkout-ref }}"
3132
runs-on: ubuntu-latest
3233
continue-on-error: ${{ inputs.experimental }}
3334
timeout-minutes: 40
@@ -43,13 +44,18 @@ jobs:
4344
distribution: temurin
4445
java-version: ${{ inputs.java-version }}
4546
cache: 'maven'
46-
- name: Set up Minikube
47-
uses: manusa/actions-setup-minikube@v2.13.1
47+
- name: Download minikube artifact for Kubernetes ${{ inputs.kube-version }}
48+
uses: actions/download-artifact@v4
4849
with:
49-
minikube version: 'v1.34.0'
50-
kubernetes version: '${{ inputs.kube-version }}'
51-
driver: 'docker'
52-
github token: ${{ secrets.GITHUB_TOKEN }}
50+
name: minikube-${{inputs.kube-version}}
51+
path: minikube
52+
- name: Start minikube with Kubernetes ${{ inputs.kube-version }}
53+
run: |
54+
# wait for docker
55+
docker version -f '{{.Server.Version}} - {{.Client.Version}}'
56+
export MINIKUBE_HOME=$PWD/minikube
57+
minikube start --driver=docker
58+
kubectl version
5359
- name: "${{inputs.it-category}} integration tests (kube: ${{ inputs.kube-version }} / java: ${{ inputs.java-version }} / client: ${{ inputs.http-client }})"
5460
run: |
5561
if [ -z "${{inputs.it-category}}" ]; then
@@ -59,4 +65,4 @@ jobs:
5965
fi
6066
echo "Using profile: ${it_profile}"
6167
./mvnw ${MAVEN_ARGS} -T1C -B install -DskipTests -Pno-apt --file pom.xml
62-
./mvnw ${MAVEN_ARGS} -T1C -B package -P${it_profile} -Dfabric8-httpclient-impl.name=${{inputs.http-client}} --file pom.xml
68+
./mvnw ${MAVEN_ARGS} -T1C -B package -P${it_profile} -Dfabric8-httpclient-impl.name=${{inputs.http-client}} --file pom.xml

‎.github/workflows/pr.yml

+7-1
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,10 @@ jobs:
3131
run: ./mvnw ${MAVEN_ARGS} clean install -Pno-apt --file pom.xml
3232

3333
build:
34-
uses: ./.github/workflows/build.yml
34+
name: Integration tests with Kubernetes ${{ matrix.kubernetes }}
35+
strategy:
36+
matrix:
37+
kubernetes: [ 'v1.29.12','1.30.8', '1.31.4', '1.32.0' ]
38+
uses: ./.github/workflows/build.yml
39+
with:
40+
kube-version: ${{ matrix.kubernetes }}

0 commit comments

Comments
 (0)
Please sign in to comment.