Skip to content

Java 11 :dev6

Java 11 :dev6 #550

Workflow file for this run

name: Java 11 :release
on:
push:
pull_request:
schedule:
- cron: "11 4 * * *"
env:
TEST_TAG: ${{ secrets.DOCKER_USERNAME }}/existdb:exist-ci
# EXIST_VER: 6.2.0
jobs:
build:
name: Build and Test Images
runs-on: ubuntu-latest
# NOTE (DP): Test on PRs and pushes
if: github.ref == 'refs/heads/main' || github.base_ref == 'main'
steps:
# SETUP
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: '11'
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: linux/amd64,linux/arm64
# platforms: all
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Make buildkit default
uses: docker/setup-buildx-action@v3
id: buildx
with:
install: true
- name: Install bats
# run: sudo apt-get install bats libsaxonb-java
run: sudo apt-get install bats
- name: Check local images
run: docker image ls
# TODO(DP) needs adjusting for multi-stage see #5
# - name: Modify logging config
# run: saxonb-xslt -s:dump/exist-distribution-${{ env.EXIST_VER }}/etc/log4j2.xml -xsl:log4j2-docker.xslt -o:log4j2.xml
# BUILD
- name: Build default images for testing on CI
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile_j11
build-args: BRANCH=master
load: true
tags: ${{ env.TEST_TAG }}
- name: Build debug images for testing on CI
uses: docker/build-push-action@v5
with:
context: .
build-args: |
BRANCH=master
DISTRO_TAG=debug
file: ./Dockerfile_j11
load: true
tags: ${{ env.TEST_TAG }}-debug
- name: Build nonroot images for testing on CI
uses: docker/build-push-action@v5
with:
context: .
build-args: |
BRANCH=master
DISTRO_TAG=nonroot
USR=nonroot:nonroot
file: ./Dockerfile_j11
load: true
tags: ${{ env.TEST_TAG }}-nonroot
# TEST
- name: Start exist-ci containers
run: |
docker run -dit -p 8080:8080 --name exist-ci --rm ${{ env.TEST_TAG }}
docker run -dit -p 8181:8080 -v $pwd/exist/autodeploy:/exist/autodeploy --name nonroot --rm ${{ env.TEST_TAG }}-nonroot
sleep 35s
# - name: Wait for exist-ci to boot
# run: |
# timeout 60 sh -c 'until docker logs exist-ci | grep -qe "Server has started"; do sleep 3; done' localhost 8080
- name: Check mem and cgroup config
run: |
docker logs exist-ci | grep -w "Approximate maximum amount of memory for JVM:"
docker logs exist-ci | grep -w "Number of processors available to JVM:"
- name: Run tests
run: bats --tap test/bats/*.bats
# DP: this dynamically set the version from master
# no longer necessary
- name: Get SemVer string from test image
run: |
echo "EXIST_VER=$(docker exec exist-ci java org.exist.start.Main client --no-gui --xpath 'system:get-version()' | grep -i 'eXist version' | cut -d ' ' -f 3)" >> $GITHUB_ENV
- name: Test GHA output
run: echo $EXIST_VER
# PUSH
# Release
- name: Push :release to Dockerhub
if: github.ref == 'refs/heads/main'
uses: docker/build-push-action@v5
with:
context: ./
platforms: linux/amd64,linux/arm64
file: ./Dockerfile_j11
build-args: BRANCH=master
builder: ${{ steps.buildx.outputs.name }}
push: true
tags: |
${{ secrets.DOCKER_USERNAME }}/existdb:${{ env.EXIST_VER }}
${{ secrets.DOCKER_USERNAME }}/existdb:release
cache-from: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/existdb:buildcache
cache-to: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/existdb:buildcache,mode=max
- name: Push :debug (release) to Dockerhub
if: github.ref == 'refs/heads/main'
uses: docker/build-push-action@v5
with:
context: ./
platforms: linux/amd64,linux/arm64
file: ./Dockerfile_j11
build-args: |
DISTRO_TAG=debug
BRANCH=master
builder: ${{ steps.buildx.outputs.name }}
push: true
tags: |
${{ secrets.DOCKER_USERNAME }}/existdb:${{ env.EXIST_VER }}-debug
${{ secrets.DOCKER_USERNAME }}/existdb:release-debug
cache-from: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/existdb:buildcache
cache-to: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/existdb:buildcache,mode=max
- name: Push :nonroot (release) to Dockerhub
if: github.ref == 'refs/heads/main'
uses: docker/build-push-action@v5
with:
context: ./
platforms: linux/amd64,linux/arm64
file: ./Dockerfile_j11
build-args: |
DISTRO_TAG=nonroot
USR=nonroot:nonroot
BRANCH=master
builder: ${{ steps.buildx.outputs.name }}
push: true
tags: |
${{ secrets.DOCKER_USERNAME }}/existdb:${{ env.EXIST_VER }}-nonroot
${{ secrets.DOCKER_USERNAME }}/existdb:release-nonroot
cache-from: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/existdb:buildcache
cache-to: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/existdb:buildcache,mode=max