diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 18c0942832fd41f7c68a9d1bdda8554fc94e11ae..5ab649ca02ec255d579ca38c14b40a8c2502b3e6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,8 +20,11 @@ variables: DOCKER_BUILDKIT: 1 ## Dockerhub registry - DH_REGISTRY: eicweb + DH_REGISTRY_USER: eicweb DH_PUSH: 1 + ## GitHub registry + GH_REGISTRY: ghcr.io + GH_PUSH: 1 ## Also export the raw builder image, will be stored on DH only EXPORT_BUILDER: 0 @@ -48,12 +51,16 @@ stages: default: before_script: - - ./gitlab-ci/docker_login.sh -u $DH_REGISTRY -p $DH_EICWEB_TOKEN - -n $DOCKER_NTRIES -t $DOCKER_WAIT_TIME - - ./gitlab-ci/docker_login.sh --ci -n $DOCKER_NTRIES -t $DOCKER_WAIT_TIME + - ./gitlab-ci/docker_login.sh -u ${DH_REGISTRY_USER} -p ${DH_EICWEB_TOKEN} + -n ${DOCKER_NTRIES} -t ${DOCKER_WAIT_TIME} + - ./gitlab-ci/docker_login.sh -u ${GITHUB_REGISTRY_USER} -p ${GITHUB_REGISTRY_TOKEN} + -n ${DOCKER_NTRIES} -t ${DOCKER_WAIT_TIME} + ${GH_REGISTRY} + - ./gitlab-ci/docker_login.sh --ci -n ${DOCKER_NTRIES} -t ${DOCKER_WAIT_TIME} after_script: - docker logout - docker logout ${CI_REGISTRY} + - docker logout ${GH_REGISTRY} ## only run CI for in the following cases: ## master, stable branch, release tag, MR event and nightly builds @@ -417,6 +424,9 @@ jug_xl:nightly: -n $DOCKER_NTRIES -t $DOCKER_WAIT_TIME ${NIGHTLY_TAG} ${PUSH_FLAG} - if [ -z "${PUSH_FLAG}" ] ; then + ./gitlab-ci/docker_push.sh -i ${BUILD_IMAGE} -l ${NIGHTLY_TAG} + -n $DOCKER_NTRIES -t $DOCKER_WAIT_TIME + ${NIGHTLY_TAG}-$(date +%Y-%m-%d) --ghcr ; ./gitlab-ci/docker_push.sh -i ${BUILD_IMAGE} -l ${NIGHTLY_TAG} -n $DOCKER_NTRIES -t $DOCKER_WAIT_TIME ${NIGHTLY_TAG}-$(date +%Y-%m-%d) --dockerhub ; diff --git a/gitlab-ci/docker_login.sh b/gitlab-ci/docker_login.sh index 037b064505b9b29901808e8d0501924d670a6d92..1d495a65fb4a07937450f54d6de3526955b4a5e8 100755 --- a/gitlab-ci/docker_login.sh +++ b/gitlab-ci/docker_login.sh @@ -89,7 +89,8 @@ fi while [ $NTRIES != 0 ]; do if [ -z $CI ]; then - echo $REG_PASSWORD | docker login -u $REG_USER --password-stdin \ + echo $REG_PASSWORD | docker login -u $REG_USER \ + --password-stdin $REGISTRY \ && break \ || echo "Login failed, retrying in $TIME seconds..." else diff --git a/gitlab-ci/docker_push.sh b/gitlab-ci/docker_push.sh index 23806f8cec8766fe0de520ca2a68ac7a3c152c7a..16333af0960f4d67e676711d138dc28629ce65b5 100755 --- a/gitlab-ci/docker_push.sh +++ b/gitlab-ci/docker_push.sh @@ -12,6 +12,7 @@ function print_the_help { echo " (doubled each time), default: 5" echo " -n,--n-attempts Number of attempts, default: 5" echo " -h,--help Print this message" + echo " --ghcr Publish to ghcr.io only" echo " --eicweb Publish to $CI_REGISTRY only" echo " --dockerhub Publish to DH only" echo " positional At least one export tag (e.g., v3.0-stable)" @@ -30,6 +31,7 @@ EXPORT_TAGS=() NTRIES=5 TIME=5 DO_DH=${DH_PUSH} +DO_GH=${GH_PUSH} DO_EICWEB=1 while [ $# -gt 0 ]; do @@ -55,13 +57,22 @@ while [ $# -gt 0 ]; do shift shift ;; + --ghcr) + DO_EICWEB=- + DO_DH=0 + DO_GH=1 + shift + ;; --eicweb) + DO_EICWEB=1 DO_DH=0 + DO_GH=0 shift ;; --dockerhub) DO_EICWEB=0 DO_DH=1 + DO_GH=0 shift ;; -h|--help) @@ -129,14 +140,18 @@ function retry_push () { #echo "EXPORT_TAGS: ${EXPORT_TAGS}" #echo "DH_PUSH: ${DH_PUSH}" #echo "DO_DH: ${DO_DH}" +#echo "DO_GH: ${DO_GH}" #echo "DO_EICWEB: ${DO_EICWEB}" export INPUT=$CI_REGISTRY_IMAGE/${IMAGE}:${INPUT_TAG} for TAG in ${EXPORT_TAGS[@]}; do if [ ${DO_EICWEB} != 0 ]; then - retry_push $INPUT $CI_REGISTRY_IMAGE/${IMAGE}:${TAG} + retry_push $INPUT ${CI_REGISTRY_IMAGE}/${IMAGE}:${TAG} fi if [ ${DO_DH} != 0 ]; then - retry_push $INPUT $DH_REGISTRY/${IMAGE}:${TAG} + retry_push $INPUT ${DH_REGISTRY_USER}/${IMAGE}:${TAG} + fi + if [ ${DO_GH} != 0 ]; then + retry_push $INPUT ${GH_REGISTRY}/eic/${IMAGE}:${TAG} fi done