We had an issue once to give all other ee4j
                      members read access for other CIs for the ee4j
                      projects, but seemingly that is some manual thing
                      then that must be periodically updated.
                    #!/bin/bash -ex
                      if [ ${DROP_FIRST} = 'true' ] || [ ${LIST_FIRST} =
                      'true' ]; then
                         exit 0
                      fi
                      
                      
                      MVN_HOME="/opt/tools/apache-maven/latest"
                      JAVA_HOME="/opt/tools/java/openjdk/jdk-11/latest"
                      
PATH="${MVN_HOME}/bin:${JAVA_HOME}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
                      
                      # Maven plugins
VERSIONS_PLUGIN='org.codehaus.mojo:versions-maven-plugin:2.5'
HELP_PLUGIN='org.apache.maven.plugins:maven-help-plugin:2.1.1'
                      MVN_EXTRA='--batch-mode
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
                      MAVEN_SKIP_RC=1
                      
                      # Directory with project top level pom.xml
                      BUILD_DIR="${WORKSPACE}/api"
                      
                      cd ${BUILD_DIR}
                      
                      
                      # Check whether top level pom.xml contains
                      SNAPSHOT version
                      if ! grep '<version>' pom.xml | grep 'RC' ;
                      then
                        echo '-[ Not an RC version
                      ]-------------------------------------------'
                          
                        # Check whether top level pom.xml contains
                      SNAPSHOT version
                        if ! grep '<version>' pom.xml | grep
                      'SNAPSHOT' ; then
                          echo '-[ Missing SNAPSHOT version in POM!
                      ]-------------------------------------------'
                          exit 1
                        fi
                        
                        # Compute release versions
                        SNAPSHOT_VERSION=`mvn ${MVN_EXTRA} -B
                      ${HELP_PLUGIN}:evaluate
                      -Dexpression=project.version 2> /dev/null |
                      grep -E '^[0-9]+(\.[0-9]+)+-SNAPSHOT$'`
                        
                        if [ -z "${RELEASE_VERSION}" ]; then
                          if [ -z ${SNAPSHOT_VERSION} ]; then
                            echo '-[ Missing required snapshot version
                      number! ]----------------------------------'
                          fi
                          RELEASE_VERSION=`echo ${SNAPSHOT_VERSION} |
                      sed -e 's/-SNAPSHOT//'`
                        fi
                        
                        # Bash specific code
                        if [ -z "${NEXT_VERSION}" ]; then
                          NEXT_VERSION=`echo ${RELEASE_VERSION} | sed -e
                      's/\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`
                          set -f
                          NEXT_COMPONENTS=(${RELEASE_VERSION//\./ })
                          LAST_INDEX=$((${#NEXT_COMPONENTS[@]} - 1))
                         
                      NEXT_COMPONENTS[${LAST_INDEX}]=$((${NEXT_COMPONENTS[${LAST_INDEX}]}
                      + 1))
                          NEXT_VERSION=`echo ${NEXT_COMPONENTS[@]} | tr
                      ' ' '.'`'-SNAPSHOT'
                        fi
                      else
                        SNAPSHOT_VERSION=`mvn ${MVN_EXTRA} -B
                      ${HELP_PLUGIN}:evaluate
                      -Dexpression=project.version 2> /dev/null |
                      grep -E '^[0-9]+(\.[0-9]+)+-RC[0-9]+$'`
                        RELEASE_VERSION=${SNAPSHOT_VERSION}
                        NEXT_VERSION=${SNAPSHOT_VERSION}
                      fi
                      
                      RELEASE_TAG="${RELEASE_VERSION}-RELEASE"
                      
                      echo "Current version: ${SNAPSHOT_VERSION}"
                      echo "Release version: ${RELEASE_VERSION}"
                      echo "Next version:    ${NEXT_VERSION}"
                      echo "Release tag:     ${RELEASE_TAG}"
                      
                      if [ -z "${SNAPSHOT_VERSION}" -o -z
                      "${RELEASE_VERSION}" -o -z "${NEXT_VERSION}" ];
                      then
                        echo '-[ Missing required version numbers!
                      ]------------------------------------------'
                        exit 1
                      fi
                      
                      if [ ${DRY_RUN} = 'true' ]; then
                        echo '-[ Dry run turned on
                      ]----------------------------------------------------------'
                        MVN_DEPLOY_ARGS=''
                        echo '-[ Skipping GitHub branch and tag checks
                      ]--------------------------------------'
                      else
                        # MVN_DEPLOY_ARGS='deploy:deploy'
                        MVN_DEPLOY_ARGS='nexus-staging:deploy'
                        GIT_ORIGIN=`git remote`
                        
                        echo '-[ Prepare branch
                      ]-------------------------------------------------------------'
                        if [[ -n `git branch -r | grep
                      "${GIT_ORIGIN}/${RELEASE_VERSION}"` ]]; then
                          if [ "${OVERWRITE}" = 'true' ]; then
                            echo "${GIT_ORIGIN}/${RELEASE_VERSION}
                      branch already exists, deleting"
                            git push --delete origin
                      "${RELEASE_VERSION}" && true
                          else
                            echo "Error:
                      ${GIT_ORIGIN}/${RELEASE_VERSION} branch already
                      exists"
                            exit 1
                          fi
                        fi
                        
                        echo '-[ Release tag cleanup
                      ]--------------------------------------------------------'
                        if [[ -n `git ls-remote --tags ${GIT_ORIGIN} |
                      grep "${RELEASE_TAG}"` ]]; then
                          if [ "${OVERWRITE}" = 'true' ]; then
                            echo "${RELEASE_TAG} tag already exists,
                      deleting"
                            git push --delete origin "${RELEASE_TAG}"
                      && true
                          else
                            echo "Error: ${RELEASE_TAG} tag already
                      exists"
                            exit 1
                          fi
                        fi
                      fi
                      
                      cd ${WORKSPACE}
                      
                      # Always delete local branch if exists
                      git branch --delete "${RELEASE_VERSION}"
                      && true
                      git checkout -b ${RELEASE_VERSION}
                      
                      # Always delete local tag if exists
                      git tag --delete "${RELEASE_TAG}" && true
                      
                      
                      
                      cd ${BUILD_DIR}
                      
                      # Project identifiers
                      ARTIFACT_ID=$(mvn ${MVN_EXTRA} -B
                      ${HELP_PLUGIN}:evaluate
                      -Dexpression=project.artifactId | grep -Ev
                      '(^\[)')
                      GROUP_ID=$(mvn ${MVN_EXTRA} -B
                      ${HELP_PLUGIN}:evaluate
                      -Dexpression=project.groupId | grep -Ev '(^\[)')
                      
                      
                      
                      if [ ${SNAPSHOT_VERSION} != ${RELEASE_VERSION} ];
                      then
                        echo '-[ Set release version
                      ]--------------------------------------------------------'
                        
                        # Set release version
                        mvn -U -C \
                            -DnewVersion="${RELEASE_VERSION}" \
                            -DgenerateBackupPoms=false \
                            clean ${VERSIONS_PLUGIN}:set ${MVN_EXTRA}
                        
                        cd ${WORKSPACE}
                        
                        echo '-[ Commit modified pom.xml files
                      ]----------------------------------------------'
                        POM_FILES=`git status | grep -E
                      'modified:.*pom\.xml' | sed -e
                      's/[[:space:]][[:space:]]*modified:[[:space:]][[:space:]]*//'`
                        git add ${POM_FILES} && \
                        git commit -m "Prepare release
                      ${GROUP_ID}:${ARTIFACT_ID}:${RELEASE_VERSION}"
                      fi
                      
                      
                      
                      echo '-[ Deploy artifacts to staging repository
                      ]-------------------------------------'
                      cd ${BUILD_DIR}
                      mvn -U -C -s /home/jenkins/.m2/settings.xml \
                          -DskipTests -Ddoclint=none -Poss-release \
                          clean package \
                          gpg:sign install:install \
                          ${MVN_DEPLOY_ARGS} ${MVN_EXTRA}
                          
                      # Typical output of this step:
                      #  * Remote staging into staging profile ID
                      "6f25e242715ce0"
                      #  * Created staging repository with ID
                      "jakartasecurityauthmessage-1003".
                      #  * Staging repository at 
https://oss.sonatype.org:443/service/local/staging/deployByRepositoryId/jakartasecurityauthmessage-1003
                      #  * Uploading locally staged artifacts to profile
                      jakarta.security.auth.message
                      #  * Upload of locally staged artifacts finished.
                      #  * Closing staging repository with ID
                      "jakartasecurityauthmessage-1003".
                      
                      
                      
                      echo '-[ Tag release
                      ]----------------------------------------------------------------'
                      cd ${WORKSPACE}
                      git tag "${RELEASE_TAG}" -m "Release
                      ${GROUP_ID}:${ARTIFACT_ID}:${RELEASE_VERSION}"
                      
                      
                      cd ${BUILD_DIR}
                      if [ ${SNAPSHOT_VERSION} != ${NEXT_VERSION} ];
                      then
                        echo '-[ Set next snapshot version
                      ]--------------------------------------------------'
                        mvn -U -C \
                            -DnewVersion="${NEXT_VERSION}" \
                            -DgenerateBackupPoms=false \
                            clean ${VERSIONS_PLUGIN}:set ${MVN_EXTRA}
                        
                        cd ${WORKSPACE}
                        
                        echo '-[ Commit modified pom.xml files
                      ]----------------------------------------------'
                        POM_FILES=`git status | grep -E
                      'modified:.*pom\.xml' | sed -e
                      's/[[:space:]][[:space:]]*modified:[[:space:]][[:space:]]*//'`
                        git add ${POM_FILES} && \
                        git commit -m "Prepare next development cycle
                      for ${NEXT_VERSION}"
                      fi
                      
                      
                      GIT_STATUS=`git status`
                      
                      echo $GIT_STATUS
                      
                      if [ ${DRY_RUN} = 'true' ]; then
                        echo '-[ Skipping GitHub update
                      ]-----------------------------------------------------'
                      else
                        echo '-[ Push branch and tag to GitHub
                      ]----------------------------------------------'
                        git push origin "${RELEASE_VERSION}"
                        git push origin "${RELEASE_TAG}"
                      fi