diff --git a/.github/workflows/container_maintenance.yml b/.github/workflows/container_maintenance.yml index df29db37e67..142363cbe1a 100644 --- a/.github/workflows/container_maintenance.yml +++ b/.github/workflows/container_maintenance.yml @@ -272,6 +272,6 @@ jobs: with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - repository: gdcc/base + repository: gdcc/configbaker short-description: "Dataverse Config Baker Container Image providing setup tooling and more" readme-filepath: ./modules/container-configbaker/README.md diff --git a/.github/workflows/scripts/containers/maintain-application.sh b/.github/workflows/scripts/containers/maintain-application.sh index b68c2a53d96..e34c609b0ad 100755 --- a/.github/workflows/scripts/containers/maintain-application.sh +++ b/.github/workflows/scripts/containers/maintain-application.sh @@ -126,15 +126,15 @@ for BRANCH in "$@"; do # 6. Let's put together what tags we want added to this build run TAG_OPTIONS="" if ! (( IS_DEV )); then - TAG_OPTIONS="-Dapp.image=$APP_IMAGE_REF -Ddocker.tags.revision=$NEXT_REV_TAG" + TAG_OPTIONS="-Dapp.image=$APP_IMAGE_REF -Dapp.image.tag.1=$NEXT_REV_TAG" # In case of the current release, add the "latest" tag as well. if (( IS_CURRENT_RELEASE )); then - TAG_OPTIONS="$TAG_OPTIONS -Ddocker.tags.latest=latest" + TAG_OPTIONS="$TAG_OPTIONS -Dapp.image.tag.2=latest" fi else # shellcheck disable=SC2016 UPCOMING_TAG=$( mvn initialize help:evaluate -Pct -f . -Dexpression=app.image.tag -Dapp.image.tag='${app.image.version}-${base.image.flavor}' -q -DforceStdout ) - TAG_OPTIONS="-Ddocker.tags.upcoming=$UPCOMING_TAG" + TAG_OPTIONS="-Dapp.image.tag.1=$UPCOMING_TAG" # For the dev branch we only have rolling tags and can add them now already SUPPORTED_ROLLING_TAGS+=("[\"unstable\", \"$UPCOMING_TAG\"]") @@ -148,9 +148,8 @@ for BRANCH in "$@"; do # Build the application image, but skip the configbaker image (that's a different job)! # shellcheck disable=SC2046 mvn -Pct -f . deploy -Ddocker.noCache -Ddocker.platforms="${PLATFORMS}" \ - -Dconf.skipBuild -Dbase.image="${BASE_IMAGE_REF}" \ - -Ddocker.imagePropertyConfiguration=override $TAG_OPTIONS \ - $( if (( DAMP_RUN )); then echo "-Ddocker.skip.push -Ddocker.skip.tag"; fi ) + -Dconf.skipBuild -Dbase.image="${BASE_IMAGE_REF}" $TAG_OPTIONS \ + $( if (( DAMP_RUN )); then echo "-Ddocker.skip.push"; fi ) else echo "Skipping Maven build as requested by DRY_RUN=1" fi diff --git a/.github/workflows/scripts/containers/maintain-base.sh b/.github/workflows/scripts/containers/maintain-base.sh index 5b9ae738b98..ace76d7f3cd 100755 --- a/.github/workflows/scripts/containers/maintain-base.sh +++ b/.github/workflows/scripts/containers/maintain-base.sh @@ -120,6 +120,13 @@ for BRANCH in "$@"; do CURRENT_REV_TAG="${BASE_IMAGE_REF#*:}-r$REV" NEXT_REV_TAG="${BASE_IMAGE_REF#*:}-r$(( REV + 1 ))" + # 6a. Determine if we must newly release an "r0" because a rolling tag from development is now released. + IS_NEW_RELEASE=0 + if ! (( IS_DEV )) && [ "$REV" = "-1" ]; then + echo "This is a newly released version of Dataverse - forcing build, as no r0 image is present on Docker Hub" + IS_NEW_RELEASE=1 + fi + # 7. Let's put together what tags we want added to this build run TAG_OPTIONS="" if ! (( IS_DEV )); then @@ -139,12 +146,12 @@ for BRANCH in "$@"; do # 8. Let's build the base image if necessary NEWER_IMAGE=0 - if (( NEWER_JAVA_IMAGE + NEWER_PKGS + FORCE_BUILD > 0 )); then + if (( NEWER_JAVA_IMAGE + NEWER_PKGS + IS_NEW_RELEASE + FORCE_BUILD > 0 )); then if ! (( DRY_RUN )); then # shellcheck disable=SC2046 mvn -Pct -f modules/container-base deploy -Ddocker.noCache -Ddocker.platforms="${PLATFORMS}" \ -Ddocker.imagePropertyConfiguration=override $TAG_OPTIONS \ - $( if (( DAMP_RUN )); then echo "-Ddocker.skip.push -Ddocker.skip.tag"; fi ) + $( if (( DAMP_RUN )); then echo "-Ddocker.skip.push"; fi ) else echo "Skipping Maven build as requested by DRY_RUN=1" fi diff --git a/.github/workflows/scripts/containers/maintain-configbaker.sh b/.github/workflows/scripts/containers/maintain-configbaker.sh index 0b5b60b459c..2cd89efaeb6 100755 --- a/.github/workflows/scripts/containers/maintain-configbaker.sh +++ b/.github/workflows/scripts/containers/maintain-configbaker.sh @@ -122,15 +122,15 @@ for BRANCH in "$@"; do # 6. Let's put together what tags we want added to this build run TAG_OPTIONS="" if ! (( IS_DEV )); then - TAG_OPTIONS="-Dconf.image=$CONFIG_IMAGE_REF -Ddocker.tags.revision=$NEXT_REV_TAG" + TAG_OPTIONS="-Dconf.image=$CONFIG_IMAGE_REF -Dconf.image.tag.1=$NEXT_REV_TAG" # In case of the current release, add the "latest" tag as well. if (( IS_CURRENT_RELEASE )); then - TAG_OPTIONS="$TAG_OPTIONS -Ddocker.tags.latest=latest" + TAG_OPTIONS="$TAG_OPTIONS -Dconf.image.tag.2=latest" fi else # shellcheck disable=SC2016 UPCOMING_TAG=$( mvn initialize help:evaluate -Pct -f . -Dexpression=conf.image.tag -Dconf.image.tag='${app.image.version}-${conf.image.flavor}' -q -DforceStdout ) - TAG_OPTIONS="-Ddocker.tags.upcoming=$UPCOMING_TAG" + TAG_OPTIONS="-Dconf.image.tag.1=$UPCOMING_TAG" # For the dev branch we only have rolling tags and can add them now already SUPPORTED_ROLLING_TAGS+=("[\"unstable\", \"$UPCOMING_TAG\"]") @@ -145,9 +145,8 @@ for BRANCH in "$@"; do # shellcheck disable=SC2046 mvn -Pct -f . deploy -Ddocker.noCache -Ddocker.platforms="${PLATFORMS}" \ -Dapp.skipBuild -Dconf.image.base="${BASE_IMAGE_REF}" \ - -Dmaven.main.skip -Dmaven.test.skip -Dmaven.war.skip \ - -Ddocker.imagePropertyConfiguration=override $TAG_OPTIONS \ - $( if (( DAMP_RUN )); then echo "-Ddocker.skip.push -Ddocker.skip.tag"; fi ) + -Dmaven.main.skip -Dmaven.test.skip -Dmaven.war.skip $TAG_OPTIONS \ + $( if (( DAMP_RUN )); then echo "-Ddocker.skip.push"; fi ) else echo "Skipping Maven build as requested by DRY_RUN=1" fi diff --git a/pom.xml b/pom.xml index 0f4633fe8c6..ceb5ea28d84 100644 --- a/pom.xml +++ b/pom.xml @@ -1128,6 +1128,9 @@ Note: During maintenance we will use the app.image.version setting from the DV parent POM. --> unstable + + + false false @@ -1142,6 +1145,9 @@ gdcc/configbaker:${conf.image.tag} ${app.image.tag} + + + noble ubuntu:${conf.image.flavor} false @@ -1200,6 +1206,10 @@ ${app.image.version} + + ${app.image.tag.1} + ${app.image.tag.2} + @ assembly.xml @@ -1235,6 +1245,10 @@ ${app.image.version} + + ${conf.image.tag.1} + ${conf.image.tag.2} + @ ${project.basedir}/modules/container-configbaker/assembly.xml diff --git a/src/backports/v6.6/002-pom.xml.patch b/src/backports/v6.6/002-pom.xml.patch index 9d1edeba1c7..a65880a2ed1 100644 --- a/src/backports/v6.6/002-pom.xml.patch +++ b/src/backports/v6.6/002-pom.xml.patch @@ -1,11 +1,21 @@ ---- a/pom.xml (revision 906f874f9fd56241c41e6c2c2f6989c4406f5909) -+++ b/pom.xml (date 1746655334773) -@@ -997,14 +997,18 @@ +--- a/pom.xml ++++ b/pom.xml +@@ -1069,18 +1069,38 @@ + 17 gdcc/dataverse:${app.image.tag} ++ unstable ++ ++ ++ + false false ++ gdcc/base:${base.image.tag} noble @@ -14,13 +24,43 @@ + ${base.image.version}-${base.image.flavor}${base.image.tag.suffix} + + -p${payara.version}-j${target.java.version} ++ gdcc/configbaker:${conf.image.tag} ++ ${app.image.tag} +- ++ ++ ++ ++ alpine ++ alpine:3.18 + false - ++ - -@@ -1046,6 +1050,9 @@ +- ++ + + ${app.image} + ${postgresql.server.version} +@@ -1088,7 +1108,7 @@ + dataverse + ${app.skipDeploy} + +- ++ + + + +@@ -1106,7 +1126,7 @@ + + + +- ++ + + + io.fabric8 +@@ -1119,6 +1139,9 @@ dev_dataverse ${app.image} @@ -30,7 +70,34 @@ ${docker.platforms} -@@ -1075,6 +1082,9 @@ +@@ -1128,26 +1151,33 @@ + + ${base.image} + ++ ++ ${app.image.tag.1} ++ ${app.image.tag.2} ++ + @ + + assembly.xml + + +- ++ + + +- ++ + + compose + ${project.basedir} + docker-compose-dev.yml + + +- ++ + dev_bootstrap ${conf.image} @@ -40,3 +107,24 @@ ${docker.platforms} +@@ -1155,14 +1185,19 @@ + + ${project.basedir}/modules/container-configbaker/Dockerfile + ++ ${conf.image.base} + ${SOLR_VERSION} + ++ ++ ${conf.image.tag.1} ++ ${conf.image.tag.2} ++ + @ + + ${project.basedir}/modules/container-configbaker/assembly.xml + + +- ++ + + unstable ++ ++ ++ + false + false + +@@ -1133,6 +1136,9 @@ + gdcc/configbaker:${conf.image.tag} + + ${app.image.tag} ++ ++ ++ + noble + ubuntu:${conf.image.flavor} + false +@@ -1191,6 +1197,10 @@ + + ${app.image.version} + ++ ++ ${app.image.tag.1} ++ ${app.image.tag.2} ++ + @ + + assembly.xml +@@ -1226,6 +1236,10 @@ + + ${app.image.version} + ++ ++ ${conf.image.tag.1} ++ ${conf.image.tag.2} ++ + @ + + ${project.basedir}/modules/container-configbaker/assembly.xml diff --git a/src/backports/v6.7/001-pom.xml.patch b/src/backports/v6.7/001-pom.xml.patch new file mode 100644 index 00000000000..1b2001d5546 --- /dev/null +++ b/src/backports/v6.7/001-pom.xml.patch @@ -0,0 +1,44 @@ +--- a/pom.xml ++++ b/pom.xml +@@ -1119,6 +1119,9 @@ + Note: During maintenance we will use the app.image.version setting from the DV parent POM. + --> + unstable ++ ++ ++ + false + false + +@@ -1133,6 +1136,9 @@ + gdcc/configbaker:${conf.image.tag} + + ${app.image.tag} ++ ++ ++ + noble + ubuntu:${conf.image.flavor} + false +@@ -1191,6 +1197,10 @@ + + ${app.image.version} + ++ ++ ${app.image.tag.1} ++ ${app.image.tag.2} ++ + @ + + assembly.xml +@@ -1226,6 +1236,10 @@ + + ${app.image.version} + ++ ++ ${conf.image.tag.1} ++ ${conf.image.tag.2} ++ + @ + + ${project.basedir}/modules/container-configbaker/assembly.xml diff --git a/src/main/docker/Dockerfile b/src/main/docker/Dockerfile index beb1de53cd5..e6dbb2f8679 100644 --- a/src/main/docker/Dockerfile +++ b/src/main/docker/Dockerfile @@ -46,8 +46,9 @@ RUN ln -s "${DEPLOY_DIR}/dataverse/supplements/jhove.conf" "${PAYARA_DIR}/glassf ln -s "${DEPLOY_DIR}/dataverse/supplements/jhoveConfig.xsd" "${PAYARA_DIR}/glassfish/domains/${DOMAIN_NAME}/config/jhoveConfig.xsd" && \ sed -i "${PAYARA_DIR}/glassfish/domains/${DOMAIN_NAME}/config/jhove.conf" -e "s:/usr/local/payara./glassfish/domains/domain1:${PAYARA_DIR}/glassfish/domains/${DOMAIN_NAME}:g" -# Workaround for fabric8io/docker-maven-plugin#1865 +# Workaround for fabric8io/docker-maven-plugin#1865 (both arg lines) ARG APP_IMAGE_VERSION +ARG BASE_IMAGE LABEL org.opencontainers.image.created="@git.build.time@" \ org.opencontainers.image.authors="Research Data Management at FZJ " \ org.opencontainers.image.url="https://guides.dataverse.org/en/latest/container/" \