77 branches : [main]
88
99env :
10- JAVA_VERSION : " 21"
1110 MAVEN_VERSION : " 3.9.11"
1211 REGISTRY_IMAGE : ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKERHUB_PROJECT_NAME }}
1312
1413jobs :
1514 build-test-push :
16- name : Build, Test, and Publish
15+ name : Build/ Test/Publish (Java ${{ matrix.java-version }}, Boot ${{ matrix.spring-boot-version }})
1716 runs-on : ubuntu-latest
1817 permissions :
1918 contents : read
2019 packages : write
20+ strategy :
21+ fail-fast : false
22+ matrix :
23+ include :
24+ - java-version : " 17"
25+ spring-boot-version : " 4.0.0"
26+ spring-cloud-version : " 2025.1.0"
27+ - java-version : " 21"
28+ spring-boot-version : " 4.0.0"
29+ spring-cloud-version : " 2025.1.0"
30+ - java-version : " 25"
31+ spring-boot-version : " 4.0.0"
32+ spring-cloud-version : " 2025.1.0"
33+ - java-version : " 17"
34+ spring-boot-version : " 3.5.8"
35+ spring-cloud-version : " 2025.0.0"
36+ - java-version : " 21"
37+ spring-boot-version : " 3.5.8"
38+ spring-cloud-version : " 2025.0.0"
39+ - java-version : " 25"
40+ spring-boot-version : " 3.5.8"
41+ spring-cloud-version : " 2025.0.0"
2142
2243 steps :
2344 - name : Checkout source code
2950 uses : actions/setup-java@v4
3051 with :
3152 distribution : temurin
32- java-version : ${{ env.JAVA_VERSION }}
53+ java-version : ${{ matrix.java-version }}
3354 cache : maven
3455
56+ - name : Align Maven versions for matrix
57+ run : |
58+ mvn -B -ntp versions:update-parent \
59+ -DparentVersion="[${{ matrix.spring-boot-version }}]" \
60+ -DgenerateBackupPoms=false \
61+ -DallowSnapshots=false \
62+ -DforceVersion=true
63+ mvn -B -ntp versions:set-property \
64+ -Dproperty=spring-cloud.version \
65+ -DnewVersion=${{ matrix.spring-cloud-version }} \
66+ -DgenerateBackupPoms=false
67+ mvn -B -ntp versions:set-property \
68+ -Dproperty=java.version \
69+ -DnewVersion=${{ matrix.java-version }} \
70+ -DgenerateBackupPoms=false
71+
3572 - name : Run Maven tests
3673 run : mvn -B -ntp verify
3774
@@ -45,14 +82,18 @@ jobs:
4582 uses : actions/cache@v4
4683 with :
4784 path : /tmp/.buildx-cache
48- key : ${{ runner.os }}-buildx-${{ github.sha }}
49- restore-keys : ${{ runner.os }}-buildx-
85+ key : ${{ runner.os }}-buildx-java${{ matrix.java-version }}-boot${{ matrix.spring-boot-version }}-${{ github.sha }}
86+ restore-keys : |
87+ ${{ runner.os }}-buildx-java${{ matrix.java-version }}-boot${{ matrix.spring-boot-version }}-
88+ ${{ runner.os }}-buildx-
5089
5190 - name : Build test image
5291 run : |
5392 docker build \
54- --build-arg JAVA_VERSION=${{ env.JAVA_VERSION }} \
93+ --build-arg JAVA_VERSION=${{ matrix.java-version }} \
5594 --build-arg MAVEN_VERSION=${{ env.MAVEN_VERSION }} \
95+ --build-arg SPRING_BOOT_VERSION=${{ matrix.spring-boot-version }} \
96+ --build-arg SPRING_CLOUD_VERSION=${{ matrix.spring-cloud-version }} \
5697 -t config-server:ci-test .
5798
5899 - name : Smoke test default Git backend
78119 run : |
79120 set -euo pipefail
80121 native_dir="$(mktemp -d)"
81- cat <<'EOF' > "$native_dir/application.yml"
122+ cat <<'EOF' > "$native_dir" /application.yml
82123 example:
83124 message: native-backend
84125 EOF
@@ -124,11 +165,13 @@ jobs:
124165 push : ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
125166 platforms : linux/amd64,linux/arm64
126167 tags : |
127- ${{ env.REGISTRY_IMAGE }}:latest
128- ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.short_sha }}
168+ ${{ env.REGISTRY_IMAGE }}:java${{ matrix.java-version }}-boot${{ matrix.spring-boot-version }}
169+ ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.short_sha }}-java${{ matrix.java-version }}-boot${{ matrix.spring-boot-version }}
129170 build-args : |
130- JAVA_VERSION=${{ env.JAVA_VERSION }}
171+ JAVA_VERSION=${{ matrix.java-version }}
131172 MAVEN_VERSION=${{ env.MAVEN_VERSION }}
173+ SPRING_BOOT_VERSION=${{ matrix.spring-boot-version }}
174+ SPRING_CLOUD_VERSION=${{ matrix.spring-cloud-version }}
132175 labels : |
133176 org.opencontainers.image.source=${{ github.repository }}
134177 org.opencontainers.image.revision=${{ github.sha }}
0 commit comments