image: docker services: - docker:dind stages: - build - manifest variables: DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" before_script: - docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD - export SANITIZED_BRANCH="$(echo $CI_COMMIT_REF_NAME | sed -r 's#^release/##' | sed 's/\//_/g')" - export SANITIZED_ROLLING_BRANCH=${SANITIZED_BRANCH}-rolling - export BUILD_TYPE=develop build: stage: build script: - if [ "${SANITIZED_BRANCH}" != "develop" ]; then export BUILD_TYPE=stable; fi - > docker build --build-arg RELEASE_TYPE=$BUILD_TYPE -t ${ORG_NAME}/workspaces:$(arch)-$SANITIZED_BRANCH . - docker push ${ORG_NAME}/workspaces:$(arch)-$SANITIZED_BRANCH only: - develop - /^release\/.*$/ except: - schedules tags: - ${TAG} parallel: matrix: - TAG: [ oci-fixed-amd, oci-fixed-arm ] build_dev: stage: build script: - > docker build -t ${ORG_NAME}/workspaces-private:$(arch)-$SANITIZED_BRANCH . - docker push ${ORG_NAME}/workspaces-private:$(arch)-$SANITIZED_BRANCH except: - develop - /^release\/.*$/ tags: - ${TAG} parallel: matrix: - TAG: [ oci-fixed-amd, oci-fixed-arm ] build_scheduled: stage: build script: - if [ "${SANITIZED_ROLLING_BRANCH}" != "develop-rolling" ]; then export BUILD_TYPE=stable; fi - > docker build --build-arg RELEASE_TYPE=$BUILD_TYPE -t ${ORG_NAME}/workspaces:$(arch)-$SANITIZED_ROLLING_BRANCH . - docker push ${ORG_NAME}/workspaces:$(arch)-$SANITIZED_ROLLING_BRANCH only: - schedules tags: - ${TAG} parallel: matrix: - TAG: [ oci-fixed-amd, oci-fixed-arm ] manifest: stage: manifest script: - docker pull ${ORG_NAME}/workspaces:x86_64-$SANITIZED_BRANCH - docker pull ${ORG_NAME}/workspaces:aarch64-$SANITIZED_BRANCH - "docker manifest push --purge ${ORG_NAME}/workspaces:$SANITIZED_BRANCH || :" - docker manifest create ${ORG_NAME}/workspaces:$SANITIZED_BRANCH ${ORG_NAME}/workspaces:x86_64-$SANITIZED_BRANCH ${ORG_NAME}/workspaces:aarch64-$SANITIZED_BRANCH - docker manifest annotate ${ORG_NAME}/workspaces:$SANITIZED_BRANCH ${ORG_NAME}/workspaces:aarch64-$SANITIZED_BRANCH --os linux --arch arm64 --variant v8 - docker manifest push --purge ${ORG_NAME}/workspaces:$SANITIZED_BRANCH only: - develop - /^release\/.*$/ except: - schedules tags: - oci-fixed-amd manifest_dev: stage: manifest script: - docker pull ${ORG_NAME}/workspaces-private:x86_64-$SANITIZED_BRANCH - docker pull ${ORG_NAME}/workspaces-private:aarch64-$SANITIZED_BRANCH - "docker manifest push --purge ${ORG_NAME}/workspaces-private:$SANITIZED_BRANCH || :" - docker manifest create ${ORG_NAME}/workspaces-private:$SANITIZED_BRANCH ${ORG_NAME}/workspaces-private:x86_64-$SANITIZED_BRANCH ${ORG_NAME}/workspaces-private:aarch64-$SANITIZED_BRANCH - docker manifest annotate ${ORG_NAME}/workspaces-private:$SANITIZED_BRANCH ${ORG_NAME}/workspaces-private:aarch64-$SANITIZED_BRANCH --os linux --arch arm64 --variant v8 - docker manifest push --purge ${ORG_NAME}/workspaces-private:$SANITIZED_BRANCH except: - develop - /^release\/.*$/ tags: - oci-fixed-amd manifest_scheduled: stage: manifest script: - docker pull ${ORG_NAME}/workspaces:x86_64-$SANITIZED_ROLLING_BRANCH - docker pull ${ORG_NAME}/workspaces:aarch64-$SANITIZED_ROLLING_BRANCH - "docker manifest push --purge ${ORG_NAME}/workspaces:$SANITIZED_ROLLING_BRANCH || :" - docker manifest create ${ORG_NAME}/workspaces:$SANITIZED_ROLLING_BRANCH ${ORG_NAME}/workspaces:x86_64-$SANITIZED_ROLLING_BRANCH ${ORG_NAME}/workspaces:aarch64-$SANITIZED_ROLLING_BRANCH - docker manifest annotate ${ORG_NAME}/workspaces:$SANITIZED_ROLLING_BRANCH ${ORG_NAME}/workspaces:aarch64-$SANITIZED_ROLLING_BRANCH --os linux --arch arm64 --variant v8 - docker manifest push --purge ${ORG_NAME}/workspaces:$SANITIZED_ROLLING_BRANCH only: - schedules tags: - oci-fixed-amd