11name : Publish Container
22on :
33 push :
4+ branches :
5+ - develop
6+ - master
7+ tags :
8+ - ' eXist-*'
49 pull_request :
510 schedule :
611 - cron : " 0 6 * * *"
1116 name : Test and Publish Container Images
1217 runs-on : ubuntu-latest
1318 timeout-minutes : 60
14- # NOTE (DP): Publish on develop and master, test on PRs against these
15- if : github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master' || github.base_ref == 'develop' || github.base_ref == 'master'
19+ # Publish on develop (latest) and eXist-* tags (versioned + release); test on PRs against these branches.
20+ if : >
21+ github.ref == 'refs/heads/develop' ||
22+ github.ref == 'refs/heads/master' ||
23+ startsWith(github.ref, 'refs/tags/eXist-') ||
24+ github.base_ref == 'develop' ||
25+ github.base_ref == 'master'
1626 steps :
1727 - uses : actions/checkout@v6
1828 with :
@@ -23,11 +33,11 @@ jobs:
2333 distribution : temurin
2434 java-version : ' 21'
2535 - name : Set up QEMU
26- uses : docker/setup-qemu-action@v4
36+ uses : docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4
2737 with :
2838 platforms : linux/amd64,linux/arm64
2939 - name : Make buildkit default
30- uses : docker/setup-buildx-action@v4
40+ uses : docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4
3141 id : buildx
3242 - uses : ./.github/actions/maven-cache
3343 - uses : ./.github/actions/maven-github-settings
4353 timeout-minutes : 35
4454 env :
4555 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
46- run : mvn -V -B --no-transfer-progress -q -Pdocker -DskipTests -Ddependency-check.skip=true -P !mac-dmg-on-unix,!installer,!concurrency-stress-tests,!micro-benchmarks,skip-build-dist-archives clean package
56+ run : |
57+ REVISION_ARG=""
58+ if [[ "${{ github.ref }}" == refs/tags/eXist-* ]]; then
59+ VERSION="${{ github.ref_name }}"
60+ REVISION_ARG="-Drevision=${VERSION#eXist-}"
61+ fi
62+ mvn -V -B --no-transfer-progress -q \
63+ -Pdocker,skip-build-dist-archives \
64+ -DskipTests -Ddependency-check.skip=true \
65+ $REVISION_ARG \
66+ clean package
4767 - name : Check local images
4868 run : docker image ls
4969 - name : Check license headers
7393 name : exist-core-failed-log
7494 path : exist.log
7595
76- # NOTE (DP): When on master push release, when on develop push latest: Version is included automatically
77- # TODO (DP): Confirm that releases triggered from maven publish images with the non SNAPSHOT version
7896 - name : Publish latest images
7997 if : github.repository == 'eXist-db/exist' && github.ref == 'refs/heads/develop'
8098 env :
@@ -83,14 +101,24 @@ jobs:
83101 DOCKER_PASSWORD : ${{ secrets.DOCKER_PASSWORD }}
84102 run : mvn --no-transfer-progress -q -Ddocker.tag=latest -Ddocker.username=$DOCKER_USERNAME -Ddocker.password=$DOCKER_PASSWORD docker:build docker:push
85103 working-directory : ./exist-docker
86- - name : Publish release images
87- if : github.repository == 'eXist-db/exist' && github.ref == 'refs/heads/master'
104+
105+ - name : Publish versioned release images
106+ if : github.repository == 'eXist-db/exist' && startsWith(github.ref, 'refs/tags/eXist-')
88107 env :
89108 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
90109 DOCKER_USERNAME : ${{ secrets.DOCKER_USERNAME }}
91110 DOCKER_PASSWORD : ${{ secrets.DOCKER_PASSWORD }}
92- run : mvn --no-transfer-progress -q -Ddocker.tag=release -Ddocker.username=$DOCKER_USERNAME -Ddocker.password=$DOCKER_PASSWORD docker:build docker:push
111+ run : |
112+ VERSION="${{ github.ref_name }}"
113+ VERSION="${VERSION#eXist-}"
114+ mvn --no-transfer-progress -q \
115+ -Drevision="$VERSION" \
116+ -Ddocker.tag=release \
117+ -Ddocker.username=$DOCKER_USERNAME \
118+ -Ddocker.password=$DOCKER_PASSWORD \
119+ docker:build docker:push
93120 working-directory : ./exist-docker
121+
94122 # NOTE (DP): This is for debugging, publishes an experimental image from inside PRs against develop
95123 # - name: Publish experimental images
96124 # if: github.base_ref == 'develop'
0 commit comments