Skip to content

Commit 9336a12

Browse files
committed
Add Maven fetch and autobump latest versions feature
1 parent 63b5a99 commit 9336a12

File tree

2 files changed

+70
-34
lines changed

2 files changed

+70
-34
lines changed

.github/table-template.md

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,31 @@
2222
| exoplatform/ci:jdk8-gradle6-android | ${JDK8_VERSION} | 2.7 & 3 | 5.4 | Gradle 6.1 / Android 23/24/25/26/27 | [goss.yaml](gradle/jdk8-gradle6-android/tests/goss.yaml) |
2323
| exoplatform/ci:jdk17-gradle8 | ${JDK17_VERSION} | 2.7 & 3 | 11.4 | Gradle 8.7 | [goss.yaml](jdk/jdk17-gradle8/tests/goss.yaml) |
2424
| exoplatform/ci:jdk17-gradle8-android | ${JDK17_VERSION} | 2.7 & 3 | 11.4 | Gradle 8.7 / Android 23/24/25/26/27/28/29/33 | [goss.yaml](gradle/jdk17-gradle8-android/tests/goss.yaml) |
25-
| exoplatform/ci:jdk6-maven30 | 1.6.0_45 | 2.7 & 3 | 5.4 | Maven 3.0.5 | [goss.yaml](maven/jdk6-maven30/tests/goss.yaml) |
26-
| exoplatform/ci:jdk6-maven32 | 1.6.0_45 | 2.7 & 3 | 5.4 | Maven 3.2.5 | [goss.yaml](maven/jdk6-maven32/tests/goss.yaml) |
27-
| exoplatform/ci:jdk7-maven30 | 1.7.0_80 | 2.7 & 3 | 5.4 | Maven 3.0.5 | [goss.yaml](maven/jdk7-maven30/tests/goss.yaml) |
28-
| exoplatform/ci:jdk7-maven32 | 1.7.0_80 | 2.7 & 3 | 5.4 | Maven 3.2.5 | [goss.yaml](maven/jdk7-maven32/tests/goss.yaml) |
29-
| exoplatform/ci:jdk8-maven30 | ${JDK8_VERSION} | 2.7 & 3 | 5.4 | Maven 3.0.5 | [goss.yaml](maven/jdk8-maven30/tests/goss.yaml) |
30-
| exoplatform/ci:jdk8-maven32 | ${JDK8_VERSION} | 2.7 & 3 | 5.4 | Maven 3.2.5 | [goss.yaml](maven/jdk8-maven32/tests/goss.yaml) |
31-
| exoplatform/ci:jdk8-maven33 | ${JDK8_VERSION} | 2.7 & 3 | 5.4 | Maven 3.3.9 | [goss.yaml](maven/jdk8-maven33/tests/goss.yaml) |
32-
| exoplatform/ci:jdk8-maven35 | ${JDK8_VERSION} | 2.7 & 3 | 5.4 | Maven 3.5.4 | [goss.yaml](maven/jdk8-maven35/tests/goss.yaml) |
33-
| exoplatform/ci:jdk11-maven32 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Maven 3.2.5 | [goss.yaml](maven/jdk11-maven32/tests/goss.yaml) |
34-
| exoplatform/ci:jdk11-maven33 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Maven 3.3.9 | [goss.yaml](maven/jdk11-maven33/tests/goss.yaml) |
35-
| exoplatform/ci:jdk11-maven35 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Maven 3.5.4 | [goss.yaml](maven/jdk11-maven35/tests/goss.yaml) |
36-
| exoplatform/ci:jdk11-maven36 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Maven 3.6.3 | [goss.yaml](maven/jdk11-maven36/tests/goss.yaml) |
37-
| exoplatform/ci:jdk11-maven38 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Maven 3.8.8 | [goss.yaml](maven/jdk11-maven38/tests/goss.yaml) |
25+
| exoplatform/ci:jdk6-maven30 | 1.6.0_45 | 2.7 & 3 | 5.4 | Maven ${MVN30_VERSION} | [goss.yaml](maven/jdk6-maven30/tests/goss.yaml) |
26+
| exoplatform/ci:jdk6-maven32 | 1.6.0_45 | 2.7 & 3 | 5.4 | Maven ${MVN32_VERSION} | [goss.yaml](maven/jdk6-maven32/tests/goss.yaml) |
27+
| exoplatform/ci:jdk7-maven30 | 1.7.0_80 | 2.7 & 3 | 5.4 | Maven ${MVN30_VERSION} | [goss.yaml](maven/jdk7-maven30/tests/goss.yaml) |
28+
| exoplatform/ci:jdk7-maven32 | 1.7.0_80 | 2.7 & 3 | 5.4 | Maven ${MVN32_VERSION} | [goss.yaml](maven/jdk7-maven32/tests/goss.yaml) |
29+
| exoplatform/ci:jdk8-maven30 | ${JDK8_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN30_VERSION} | [goss.yaml](maven/jdk8-maven30/tests/goss.yaml) |
30+
| exoplatform/ci:jdk8-maven32 | ${JDK8_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN32_VERSION} | [goss.yaml](maven/jdk8-maven32/tests/goss.yaml) |
31+
| exoplatform/ci:jdk8-maven33 | ${JDK8_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN33_VERSION} | [goss.yaml](maven/jdk8-maven33/tests/goss.yaml) |
32+
| exoplatform/ci:jdk8-maven35 | ${JDK8_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN35_VERSION} | [goss.yaml](maven/jdk8-maven35/tests/goss.yaml) |
33+
| exoplatform/ci:jdk11-maven32 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN32_VERSION} | [goss.yaml](maven/jdk11-maven32/tests/goss.yaml) |
34+
| exoplatform/ci:jdk11-maven33 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN33_VERSION} | [goss.yaml](maven/jdk11-maven33/tests/goss.yaml) |
35+
| exoplatform/ci:jdk11-maven35 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN35_VERSION} | [goss.yaml](maven/jdk11-maven35/tests/goss.yaml) |
36+
| exoplatform/ci:jdk11-maven36 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN36_VERSION} | [goss.yaml](maven/jdk11-maven36/tests/goss.yaml) |
37+
| exoplatform/ci:jdk11-maven38 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN38_VERSION} | [goss.yaml](maven/jdk11-maven38/tests/goss.yaml) |
3838
| exoplatform/ci:jdk11-mavend08 | ${JDK11_VERSION} | 2.7 & 3 | 5.4 | Mavend 0.8.2 | [goss.yaml](mavend/jdk11-mavend08/tests/goss.yaml) |
39-
| exoplatform/ci:jdk17-maven36 | ${JDK17_VERSION} | 2.7 & 3 | 5.4 | Maven 3.6.3 | [goss.yaml](maven/jdk17-maven36/tests/goss.yaml) |
40-
| exoplatform/ci:jdk17-maven38 | ${JDK17_VERSION} | 2.7 & 3 | 5.4 | Maven 3.8.8 | [goss.yaml](maven/jdk17-maven38/tests/goss.yaml) |
39+
| exoplatform/ci:jdk17-maven36 | ${JDK17_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN36_VERSION} | [goss.yaml](maven/jdk17-maven36/tests/goss.yaml) |
40+
| exoplatform/ci:jdk17-maven38 | ${JDK17_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN38_VERSION} | [goss.yaml](maven/jdk17-maven38/tests/goss.yaml) |
4141
| exoplatform/ci:jdk17-mavend08 | ${JDK17_VERSION} | 2.7 & 3 | 5.4 | Mavend 0.8.2 | [goss.yaml](mavend/jdk17-mavend08/tests/goss.yaml) |
4242
| exoplatform/ci:jdk17-mavend09 | ${JDK17_VERSION} | 2.7 & 3 | 5.4 | Mavend 0.9.0 | [goss.yaml](mavend/jdk17-mavend09/tests/goss.yaml) |
43-
| exoplatform/ci:jdk17-maven39 | ${JDK17_VERSION} | 2.7 & 3 | 5.4 | Maven 3.9.9 | [goss.yaml](maven/jdk17-maven39/tests/goss.yaml) |
44-
| exoplatform/ci:jdk17-maven39-alpine | ${JDK17_VERSION} | 2.7 & 3 | 13.2 | Maven 3.9.9 | [goss.yaml](maven/jdk17-maven39-alpine/tests/goss.yaml) |
45-
| exoplatform/ci:jdk17-maven39-ubuntu20 | ${JDK17_VERSION} | 2.7 & 3 | 9.4 | Maven 3.9.9 | [goss.yaml](maven/jdk17-maven39-ubuntu20/tests/goss.yaml) |
46-
| exoplatform/ci:jdk17-maven39-ubuntu22 | ${JDK17_VERSION} | 2.7 & 3 | 11.4 | Maven 3.9.9 | [goss.yaml](maven/jdk17-maven39-ubuntu22/tests/goss.yaml) |
47-
| exoplatform/ci:jdk17-maven39-ubuntu24 | ${JDK17_VERSION} | 3 | 13.2 | Maven 3.9.9 | [goss.yaml](maven/jdk17-maven39-ubuntu24/tests/goss.yaml) |
48-
| exoplatform/ci:jdk17-maven40-ubuntu22 | ${JDK17_VERSION} | 2.7 & 3 | 11.4 | Maven 4.0.0 (beta) | [goss.yaml](maven/jdk17-maven40-ubuntu22/tests/goss.yaml) |
49-
| exoplatform/ci:jdk21-maven39-ubuntu20 | ${JDK21_VERSION} | 2.7 & 3 | 9.4 | Maven 3.9.9 | [goss.yaml](maven/jdk21-maven39-ubuntu20/tests/goss.yaml) |
50-
| exoplatform/ci:jdk21-maven39-ubuntu22 | ${JDK21_VERSION} | 2.7 & 3 | 11.4 | Maven 3.9.9 | [goss.yaml](maven/jdk21-maven39-ubuntu22/tests/goss.yaml) |
51-
| exoplatform/ci:jdk21-maven39-ubuntu24 | ${JDK21_VERSION} | 3 | 13.2 | Maven 3.9.9 | [goss.yaml](maven/jdk21-maven39-ubuntu24/tests/goss.yaml) |
52-
| exoplatform/ci:jdk21-maven40-ubuntu22 | ${JDK21_VERSION} | 2.7 & 3 | 11.4 | Maven 4.0.0 (beta) | [goss.yaml](maven/jdk21-maven40-ubuntu22/tests/goss.yaml) |
43+
| exoplatform/ci:jdk17-maven39 | ${JDK17_VERSION} | 2.7 & 3 | 5.4 | Maven ${MVN39_VERSION} | [goss.yaml](maven/jdk17-maven39/tests/goss.yaml) |
44+
| exoplatform/ci:jdk17-maven39-alpine | ${JDK17_VERSION} | 2.7 & 3 | 13.2 | Maven ${MVN39_VERSION} | [goss.yaml](maven/jdk17-maven39-alpine/tests/goss.yaml) |
45+
| exoplatform/ci:jdk17-maven39-ubuntu20 | ${JDK17_VERSION} | 2.7 & 3 | 9.4 | Maven ${MVN39_VERSION} | [goss.yaml](maven/jdk17-maven39-ubuntu20/tests/goss.yaml) |
46+
| exoplatform/ci:jdk17-maven39-ubuntu22 | ${JDK17_VERSION} | 2.7 & 3 | 11.4 | Maven ${MVN39_VERSION} | [goss.yaml](maven/jdk17-maven39-ubuntu22/tests/goss.yaml) |
47+
| exoplatform/ci:jdk17-maven39-ubuntu24 | ${JDK17_VERSION} | 3 | 13.2 | Maven ${MVN39_VERSION} | [goss.yaml](maven/jdk17-maven39-ubuntu24/tests/goss.yaml) |
48+
| exoplatform/ci:jdk17-maven40-ubuntu22 | ${JDK17_VERSION} | 2.7 & 3 | 11.4 | Maven ${MVN40_VERSION} | [goss.yaml](maven/jdk17-maven40-ubuntu22/tests/goss.yaml) |
49+
| exoplatform/ci:jdk21-maven39-ubuntu20 | ${JDK21_VERSION} | 2.7 & 3 | 9.4 | Maven ${MVN39_VERSION} | [goss.yaml](maven/jdk21-maven39-ubuntu20/tests/goss.yaml) |
50+
| exoplatform/ci:jdk21-maven39-ubuntu22 | ${JDK21_VERSION} | 2.7 & 3 | 11.4 | Maven ${MVN39_VERSION} | [goss.yaml](maven/jdk21-maven39-ubuntu22/tests/goss.yaml) |
51+
| exoplatform/ci:jdk21-maven39-ubuntu24 | ${JDK21_VERSION} | 3 | 13.2 | Maven ${MVN39_VERSION} | [goss.yaml](maven/jdk21-maven39-ubuntu24/tests/goss.yaml) |
52+
| exoplatform/ci:jdk21-maven40-ubuntu22 | ${JDK21_VERSION} | 2.7 & 3 | 11.4 | Maven ${MVN40_VERSION} | [goss.yaml](maven/jdk21-maven40-ubuntu22/tests/goss.yaml) |

.github/workflows/build.yml

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ on:
33
schedule:
44
- cron: '0 22 * * 5' # Every Friday at 10 PM UTC
55
workflow_dispatch:
6+
env:
7+
jdk_list: 8,11,17,21
8+
mvn_list: 3.0,3.2,3.3,3.5,3.6,3.8,3.9,4.0
69

710
jobs:
811
check-available-zulu-jdks:
@@ -20,8 +23,35 @@ jobs:
2023
echo " - JDK ${paddingspace}${major_jdk_version}: $(echo ${latestversion} | sed 's/,/./g')" >> $GITHUB_STEP_SUMMARY
2124
done
2225
echo "Done"
23-
env:
24-
jdk_list: 8,11,17,21
26+
27+
check-autobump-available-maven:
28+
name: Check and autobump Maven versions
29+
runs-on: ubuntu-latest
30+
steps:
31+
- name: Checkout repository
32+
uses: actions/checkout@v4
33+
with:
34+
token: ${{ secrets.SWF_TOKEN }}
35+
- name: Autobump latest maven versions
36+
run: |
37+
git config --global user.email "[email protected]"
38+
git config --global user.name "eXo Software Factory"
39+
echo "Fetching latest versions of Maven (${mvn_list}):"
40+
echo "### Maven Versions List:" >> $GITHUB_STEP_SUMMARY
41+
for major_mvn_version in ${mvn_list//,/ }; do
42+
latestversion=$(curl -fsSL -X GET "https://archive.apache.org/dist/maven/maven-${major_mvn_version%%.*}/" | grep -o 'href=".*">' | sed -e "s/href=\"//g" | sed -e 's/">//g' | tail -n +2 | tr -d '/' | grep -P "^${major_mvn_version}" | tail -1)
43+
if [ -z "${latestversion}" ]; then
44+
echo "Error: Cannot find latest version for Maven ${major_mvn_version}! Abort!"
45+
exit 1
46+
fi
47+
echo " - Maven ${major_mvn_version}: ${latestversion}"
48+
echo " - Maven ${major_mvn_version}: ${latestversion}" >> $GITHUB_STEP_SUMMARY
49+
grep -irl "ENV MAVEN_VERSION=${major_mvn_version}" --include=Dockerfile | xargs -r sed -Ei "s/^ENV MAVEN_VERSION=.*/ENV MAVEN_VERSION=${latestversion}/"
50+
git add -u
51+
git diff-index --quiet HEAD || git commit -m "Autobump maven ${major_mvn_version} to ${latestversion}"
52+
done
53+
echo "Done"
54+
git push origin HEAD
2555
2656
build-base-images:
2757
name: "Build Base Images"
@@ -98,7 +128,7 @@ jobs:
98128

99129
build-maven-images:
100130
name: "Build Maven Images"
101-
needs: build-jdk-images
131+
needs: [check-autobump-available-maven, build-jdk-images]
102132
strategy:
103133
fail-fast: false
104134
matrix:
@@ -244,16 +274,16 @@ jobs:
244274
DOCKER_PRIVATE_KEY: ${{ secrets.DOCKER_PRIVATE_KEY }}
245275
DOCKER_PRIVATE_KEY_PASSPHRASE: ${{ secrets.DOCKER_PRIVATE_KEY_PASSPHRASE }}
246276

247-
update-zulu-jdks-readme:
248-
name: "Update Readme file jdk section"
277+
update-zulu-jdks-and-maven-readme:
278+
name: "Update Readme file jdk & Maven section"
249279
needs: build-maven-images
250280
runs-on: ubuntu-latest
251281
steps:
252282
- name: Checkout repository
253283
uses: actions/checkout@v4
254284
with:
255285
token: ${{ secrets.SWF_TOKEN }}
256-
- name: Check latest jdk versions
286+
- name: Check latest jdk & maven versions
257287
run: |
258288
if ! grep -q '<!-- GHASTART -->' README.md; then
259289
echo "Error: Cannot find <!-- GHASTART --> md comment in Readme.md file! Abort"
@@ -272,6 +302,14 @@ jobs:
272302
fi
273303
export JDK${major_jdk_version}_VERSION=$(echo ${latestversion} | sed 's/,/./g')
274304
done
305+
for major_mvn_version in ${mvn_list//,/ }; do
306+
latestversion=$(curl -fsSL -X GET "https://archive.apache.org/dist/maven/maven-${major_mvn_version%%.*}/" | grep -o 'href=".*">' | sed -e "s/href=\"//g" | sed -e 's/">//g' | tail -n +2 | tr -d '/' | grep -P "^${major_mvn_version}" | tail -1)
307+
if [ -z "${latestversion}" ]; then
308+
echo "Error: Cannot find latest version for Maven ${major_mvn_version}! Abort!"
309+
exit 1
310+
fi
311+
export MVN${major_mvn_version//./}_VERSION=$(echo ${latestversion} | sed 's/,/./g')
312+
done
275313
perl -pe 's/\$\{([^}]+)\}/$ENV{$1} || ""/ge' .github/table-template.md | column -t -s '|' -o '|' > /tmp/mdtable
276314
sed '/<!-- GHASTART -->/q' README.md > /tmp/newreadme
277315
cat /tmp/mdtable >> /tmp/newreadme
@@ -281,7 +319,5 @@ jobs:
281319
git config --global user.email "[email protected]"
282320
git config --global user.name "eXo Software Factory"
283321
git add README.md
284-
git diff-index --quiet HEAD || git commit -m "Automated JDK versions README update"
322+
git diff-index --quiet HEAD || git commit -m "Automated JDK & Maven versions README update"
285323
git push origin HEAD
286-
env:
287-
jdk_list: 8,11,17,21

0 commit comments

Comments
 (0)