kasm-workspaces-dind/.gitlab-ci.yml
2024-02-16 20:49:09 +00:00

117 lines
4 KiB
YAML

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