2021-06-16 15:41:01 +02:00
image : docker
services :
- docker:dind
2021-10-27 14:28:11 +02:00
variables :
DOCKER_AUTH_CONFIG : ${_DOCKER_AUTH_CONFIG}
PLATFORM : "linux/amd64"
2022-06-24 10:50:10 +02:00
ARM_BUILDS : ",chromium,firefox,gimp,rdesktop,remmina,terminal,ubuntu-bionic-desktop,ubuntu-focal-desktop,ubuntu-jammy-desktop,vlc,vs-code,doom,sublime-text,tor-browser,java-dev,telegram,opensuse-15-desktop,oracle-8-desktop,libre-office,thunderbird,audacity,deluge,filezilla,inkscape,pinta,qbittorrent,"
2022-03-22 21:26:38 +01:00
CORE_IMAGE_TAG : "develop"
CORE_IMAGE : "core-ubuntu-focal"
USE_PRIVATE_IMAGES : 0
2021-06-16 15:41:01 +02:00
2022-04-15 22:49:07 +02:00
# YAML level anchors
.MULTI_ARCH_BUILDS : &MULTI_ARCH_BUILDS
2022-05-11 12:00:10 +02:00
- audacity
2022-04-15 22:49:07 +02:00
- chromium
2022-05-11 12:00:10 +02:00
- deluge
2022-04-15 22:49:07 +02:00
- doom
2022-05-11 12:00:10 +02:00
- filezilla
2022-04-15 22:49:07 +02:00
- firefox
- gimp
2022-05-11 12:00:10 +02:00
- inkscape
2022-04-15 22:49:07 +02:00
- java-dev
- libre-office
- opensuse-15-desktop
- oracle-8-desktop
2022-05-11 12:00:10 +02:00
- pinta
- qbittorrent
2022-04-15 22:49:07 +02:00
- rdesktop
- remmina
- sublime-text
- telegram
- terminal
2022-05-04 06:57:58 +02:00
- thunderbird
2022-04-15 22:49:07 +02:00
- tor-browser
- ubuntu-focal-desktop
2022-06-24 10:50:10 +02:00
- ubuntu-jammy-desktop
2022-04-15 22:49:07 +02:00
- vlc
- vs-code
.SINGLE_ARCH_BUILDS : &SINGLE_ARCH_BUILDS
2022-05-11 12:00:10 +02:00
- atom
2022-04-15 22:49:07 +02:00
- brave
- centos-7-desktop
- chrome
- desktop
- desktop-deluxe
- discord
- edge
- firefox-mobile
- hunchly
- insomnia
- maltego
- only-office
- oracle-7-desktop
- postman
- signal
- steam
- teams
- tracelabs
- ubuntu-focal-dind
- ubuntu-focal-dind-rootless
- vmware-horizon
- zoom
- zsnes
2021-06-16 15:41:01 +02:00
stages :
- build
2022-05-04 06:57:58 +02:00
- manifest
2021-06-16 15:41:01 +02:00
- readme
2022-05-11 23:23:23 +02:00
- test
- linktests
2021-06-16 15:41:01 +02:00
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
# Jobs for the develop and release branches. They should push to the private and public repos
2022-03-22 21:26:38 +01:00
build_browser_images :
2021-06-16 15:41:01 +02:00
stage : build
2021-10-28 02:28:22 +02:00
image : ${ORG_NAME}/docker-buildx-private:develop
2021-06-16 15:41:01 +02:00
script :
2021-10-27 20:53:46 +02:00
- BUILD_PLATFORM=$PLATFORM
- if [[ "${ARM_BUILDS}" == *",${KASM_IMAGE},"* ]]; then BUILD_PLATFORM="linux/amd64,linux/arm64"; fi;
2022-03-22 21:26:38 +01:00
- echo "Building ${KASM_IMAGE} based on ${CORE_IMAGE} for platforms ${BUILD_PLATFORM}"
2021-10-27 20:53:46 +02:00
# to get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# to prepare the buildx env
- docker buildx create --use
2021-06-16 15:41:01 +02:00
# Ensure readme and description files are present
- ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt
2022-03-22 21:26:38 +01:00
# Check for private variable to build against private core images
2022-03-23 22:11:48 +01:00
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
2021-06-16 15:41:01 +02:00
2022-03-22 21:26:38 +01:00
- docker buildx build --push --platform $BUILD_PLATFORM -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_BRANCH -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG=$CORE_IMAGE_TAG -f dockerfile-kasm-$KASM_IMAGE .
only :
- develop
- /^release\/.*$/
except :
- schedules
tags :
- aws-autoscale
parallel :
matrix :
- KASM_IMAGE : [ chrome, chromium, firefox, firefox-mobile, tor-browser, edge, brave]
build_app_images :
stage : build
image : ${ORG_NAME}/docker-buildx-private:develop
script :
- BUILD_PLATFORM=$PLATFORM
- if [[ "${ARM_BUILDS}" == *",${KASM_IMAGE},"* ]]; then BUILD_PLATFORM="linux/amd64,linux/arm64"; fi;
- echo "Building ${KASM_IMAGE} based on ${CORE_IMAGE} for platforms ${BUILD_PLATFORM}"
# to get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# to prepare the buildx env
- docker buildx create --use
# Ensure readme and description files are present
- ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt
# Check for private variable to build against private core images
2022-03-23 22:11:48 +01:00
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
2021-06-16 15:41:01 +02:00
2022-03-22 21:26:38 +01:00
- docker buildx build --push --platform $BUILD_PLATFORM -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_BRANCH -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG=$CORE_IMAGE_TAG -f dockerfile-kasm-$KASM_IMAGE .
2021-06-16 15:41:01 +02:00
only :
- develop
- /^release\/.*$/
except :
- schedules
2021-10-27 20:53:46 +02:00
tags :
- aws-autoscale
2021-06-16 15:41:01 +02:00
parallel :
matrix :
2022-06-24 18:34:08 +02:00
- KASM_IMAGE : [ doom, sublime-text, gimp, vs-code, teams, only-office, zoom, signal, steam, postman, insomnia, zsnes, vlc, maltego, telegram, hunchly, java-dev, terminal, vmware-horizon, remmina, rdesktop, discord, libre-office, thunderbird, atom, audacity, deluge, filezilla, inkscape, pinta, qbittorrent]
2021-06-16 15:41:01 +02:00
2022-03-22 21:26:38 +01:00
build_ubuntu_desktop_images :
stage : build
image : ${ORG_NAME}/docker-buildx-private:develop
script :
- BUILD_PLATFORM=$PLATFORM
- if [[ "${ARM_BUILDS}" == *",${KASM_IMAGE},"* ]]; then BUILD_PLATFORM="linux/amd64,linux/arm64"; fi;
- echo "Building ${KASM_IMAGE} for platforms ${BUILD_PLATFORM}"
# to get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# to prepare the buildx env
- docker buildx create --use
# Ensure readme and description files are present
- ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt
# Check for private variable to build against private core images
2022-06-24 10:50:10 +02:00
- if [[ $KASM_IMAGE =~ 'ubuntu-jammy-desktop' ]]; then CORE_IMAGE=core-ubuntu-jammy; fi
2022-03-23 22:11:48 +01:00
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
2022-03-22 21:26:38 +01:00
2022-03-23 22:11:48 +01:00
- docker buildx build --push --platform $BUILD_PLATFORM -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_BRANCH -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG=$CORE_IMAGE_TAG -f dockerfile-kasm-$KASM_IMAGE .
2022-03-22 21:26:38 +01:00
only :
- develop
- /^release\/.*$/
except :
- schedules
tags :
- aws-autoscale
parallel :
matrix :
2022-06-24 10:50:10 +02:00
- KASM_IMAGE : [ desktop, desktop-deluxe, ubuntu-focal-desktop, ubuntu-jammy-desktop, ubuntu-focal-dind, ubuntu-focal-dind-rootless]
2022-03-22 21:26:38 +01:00
build_non_ubuntu :
stage : build
image : ${ORG_NAME}/docker-buildx-private:develop
script :
- BUILD_PLATFORM=$PLATFORM
- if [[ "${ARM_BUILDS}" == *",${KASM_IMAGE},"* ]]; then BUILD_PLATFORM="linux/amd64,linux/arm64"; fi;
- echo "Building ${KASM_IMAGE} for platforms ${BUILD_PLATFORM}"
# to get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# to prepare the buildx env
- docker buildx create --use
# Ensure readme and description files are present
- ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt
2022-03-23 22:11:48 +01:00
# Set base image based on kasm_image variable
- if [[ $KASM_IMAGE =~ 'centos-7-desktop' ]]; then CORE_IMAGE=core-centos-7; fi
- if [[ $KASM_IMAGE =~ 'tracelabs' ]]; then CORE_IMAGE=core-kali-rolling; fi
2022-04-09 01:01:01 +02:00
- if [[ $KASM_IMAGE =~ 'oracle-7-desktop' ]]; then CORE_IMAGE=core-oracle-7; fi
- if [[ $KASM_IMAGE =~ 'oracle-8-desktop' ]]; then CORE_IMAGE=core-oracle-8; fi
- if [[ $KASM_IMAGE =~ 'opensuse-15-desktop' ]]; then CORE_IMAGE=core-opensuse-15; fi
2022-06-24 10:50:10 +02:00
- if [[ $KASM_IMAGE =~ 'ubuntu-jammy-desktop' ]]; then CORE_IMAGE=core-ubuntu-jammy; fi
2022-03-22 21:26:38 +01:00
# Check for private variable to build against private core images
2022-03-23 22:11:48 +01:00
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
2022-03-22 21:26:38 +01:00
2022-03-23 22:11:48 +01:00
- docker buildx build --push --platform $BUILD_PLATFORM -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_BRANCH -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG=$CORE_IMAGE_TAG -f dockerfile-kasm-$KASM_IMAGE .
2022-03-22 21:26:38 +01:00
only :
- develop
- /^release\/.*$/
except :
- schedules
tags :
- aws-autoscale
parallel :
matrix :
2022-04-09 01:01:01 +02:00
- KASM_IMAGE : [ centos-7-desktop, tracelabs, opensuse-15-desktop, oracle-7-desktop, oracle-8-desktop]
2021-06-16 15:41:01 +02:00
# These jobs should run on the feature/bugfix branches - anything that is not the develop or release branches. It should only push images to the private repos
2022-04-15 22:49:07 +02:00
build_multi_arch_dev :
2022-03-22 21:26:38 +01:00
stage : build
image : ${ORG_NAME}/docker-buildx-private:develop
script :
# Ensure readme and description files are present
- ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt
2022-04-15 22:49:07 +02:00
# Set core image names
- if [[ $KASM_IMAGE =~ 'centos-7-desktop' ]]; then CORE_IMAGE=core-centos-7; fi
- if [[ $KASM_IMAGE =~ 'tracelabs' ]]; then CORE_IMAGE=core-kali-rolling; fi
- if [[ $KASM_IMAGE =~ 'oracle-7-desktop' ]]; then CORE_IMAGE=core-oracle-7; fi
- if [[ $KASM_IMAGE =~ 'oracle-8-desktop' ]]; then CORE_IMAGE=core-oracle-8; fi
- if [[ $KASM_IMAGE =~ 'opensuse-15-desktop' ]]; then CORE_IMAGE=core-opensuse-15; fi
2022-06-24 10:50:10 +02:00
- if [[ $KASM_IMAGE =~ 'ubuntu-jammy-desktop' ]]; then CORE_IMAGE=core-ubuntu-jammy; fi
2022-03-22 21:26:38 +01:00
# Check for private variable to build against private core images
2022-03-23 22:11:48 +01:00
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
2022-04-15 22:49:07 +02:00
- >
docker build
-t ${ORG_NAME}/$KASM_IMAGE-private:$(arch)-$SANITIZED_BRANCH
--build-arg BASE_IMAGE=$CORE_IMAGE
--build-arg BASE_TAG=$CORE_IMAGE_TAG
-f dockerfile-kasm-$KASM_IMAGE .
- docker push ${ORG_NAME}/$KASM_IMAGE-private:$(arch)-$SANITIZED_BRANCH
2022-03-22 21:26:38 +01:00
except :
- develop
- /^release\/.*$/
tags :
2022-04-15 22:49:07 +02:00
- ${TAG}
2022-03-22 21:26:38 +01:00
parallel :
matrix :
2022-04-15 22:49:07 +02:00
- TAG : [ aws-autoscale, aws-autoscale-arm64 ]
KASM_IMAGE : *MULTI_ARCH_BUILDS
2022-03-22 21:26:38 +01:00
2022-04-15 22:49:07 +02:00
build_single_arch_dev :
2022-03-22 21:26:38 +01:00
stage : build
image : ${ORG_NAME}/docker-buildx-private:develop
script :
# Ensure readme and description files are present
- ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt
2022-04-15 22:49:07 +02:00
# Set core image names
- if [[ $KASM_IMAGE =~ 'centos-7-desktop' ]]; then CORE_IMAGE=core-centos-7; fi
- if [[ $KASM_IMAGE =~ 'tracelabs' ]]; then CORE_IMAGE=core-kali-rolling; fi
- if [[ $KASM_IMAGE =~ 'oracle-7-desktop' ]]; then CORE_IMAGE=core-oracle-7; fi
- if [[ $KASM_IMAGE =~ 'oracle-8-desktop' ]]; then CORE_IMAGE=core-oracle-8; fi
- if [[ $KASM_IMAGE =~ 'opensuse-15-desktop' ]]; then CORE_IMAGE=core-opensuse-15; fi
2022-06-24 10:50:10 +02:00
- if [[ $KASM_IMAGE =~ 'ubuntu-jammy-desktop' ]]; then CORE_IMAGE=core-ubuntu-jammy; fi
2022-03-22 21:26:38 +01:00
# Check for private variable to build against private core images
2022-03-23 22:11:48 +01:00
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
2022-04-15 22:49:07 +02:00
- >
docker build
-t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_BRANCH
--build-arg BASE_IMAGE=$CORE_IMAGE
--build-arg BASE_TAG=$CORE_IMAGE_TAG
-f dockerfile-kasm-$KASM_IMAGE .
- docker push ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_BRANCH
2022-03-22 21:26:38 +01:00
except :
- develop
- /^release\/.*$/
tags :
- aws-autoscale
parallel :
matrix :
2022-04-15 22:49:07 +02:00
- KASM_IMAGE : *SINGLE_ARCH_BUILDS
2022-03-22 21:26:38 +01:00
2022-04-15 22:49:07 +02:00
test_multi_arch_dev :
stage : test
2021-06-16 15:41:01 +02:00
script :
2022-07-12 18:11:10 +02:00
- docker pull kasmweb/kasm-tester:1.11.0
2022-04-15 22:49:07 +02:00
- >
docker run --rm --privileged
-e KASM_PORT=443
-e KASM_PATH=/opt/kasm
-e KASM_PASSWORD=password123
-e PUID=1000
-e DOCKERUSER=$DOCKER_HUB_USERNAME
-e DOCKERPASS=$DOCKER_HUB_PASSWORD
2022-04-15 23:38:03 +02:00
-e TEST_IMAGE="${ORG_NAME}/${KASM_IMAGE}-private:$(arch)-$SANITIZED_BRANCH"
2022-04-15 22:49:07 +02:00
-e TEST_WEBFILTER="false"
-e AWS_KEY=${KASM_TEST_AWS_KEY}
-e AWS_SECRET="${KASM_TEST_AWS_SECRET}"
-e SLACK_TOKEN=${SLACK_TOKEN}
-e S3_BUCKET=kasm-ci
-e COMMIT=${CI_COMMIT_SHA}
-e REPO=workspaces-images
2022-07-12 18:11:10 +02:00
kasmweb/kasm-tester:1.11.0
2022-04-15 22:49:07 +02:00
except :
- develop
- /^release\/.*$/
tags :
- ${TAG}
parallel :
matrix :
- TAG : [ aws-autoscale, aws-autoscale-arm64 ]
KASM_IMAGE : *MULTI_ARCH_BUILDS
2022-03-22 21:26:38 +01:00
2022-04-15 22:49:07 +02:00
test_single_arch_dev :
stage : test
script :
2022-07-12 18:11:10 +02:00
- docker pull kasmweb/kasm-tester:1.11.0
2022-04-15 22:49:07 +02:00
- >
docker run --rm --privileged
-e KASM_PORT=443
-e KASM_PATH=/opt/kasm
-e KASM_PASSWORD=password123
-e PUID=1000
-e DOCKERUSER=$DOCKER_HUB_USERNAME
-e DOCKERPASS=$DOCKER_HUB_PASSWORD
2022-04-15 23:38:03 +02:00
-e TEST_IMAGE="${ORG_NAME}/${KASM_IMAGE}-private:$SANITIZED_BRANCH"
2022-04-15 22:49:07 +02:00
-e TEST_WEBFILTER="false"
-e AWS_KEY=${KASM_TEST_AWS_KEY}
-e AWS_SECRET="${KASM_TEST_AWS_SECRET}"
-e SLACK_TOKEN=${SLACK_TOKEN}
-e S3_BUCKET=kasm-ci
-e COMMIT=${CI_COMMIT_SHA}
-e REPO=workspaces-images
2022-07-12 18:11:10 +02:00
kasmweb/kasm-tester:1.11.0
2021-06-16 15:41:01 +02:00
except :
- develop
- /^release\/.*$/
2021-10-27 14:28:11 +02:00
tags :
- aws-autoscale
2021-06-16 15:41:01 +02:00
parallel :
matrix :
2022-04-15 22:49:07 +02:00
- KASM_IMAGE : *SINGLE_ARCH_BUILDS
2022-03-22 21:26:38 +01:00
2022-04-15 22:49:07 +02:00
manifest_dev :
stage : manifest
2022-03-22 21:26:38 +01:00
script :
2022-04-15 23:38:03 +02:00
- docker pull ${ORG_NAME}/${KASM_IMAGE}-private:x86_64-$SANITIZED_BRANCH
- docker pull ${ORG_NAME}/${KASM_IMAGE}-private:aarch64-$SANITIZED_BRANCH
- "docker manifest push --purge ${ORG_NAME}/${KASM_IMAGE}-private:$SANITIZED_BRANCH || :"
- docker manifest create ${ORG_NAME}/${KASM_IMAGE}-private:$SANITIZED_BRANCH ${ORG_NAME}/${KASM_IMAGE}-private:x86_64-$SANITIZED_BRANCH ${ORG_NAME}/${KASM_IMAGE}-private:aarch64-$SANITIZED_BRANCH
- docker manifest annotate ${ORG_NAME}/${KASM_IMAGE}-private:$SANITIZED_BRANCH ${ORG_NAME}/${KASM_IMAGE}-private:aarch64-$SANITIZED_BRANCH --os linux --arch arm64 --variant v8
- docker manifest push --purge ${ORG_NAME}/${KASM_IMAGE}-private:$SANITIZED_BRANCH
2022-03-22 21:26:38 +01:00
except :
- develop
- /^release\/.*$/
tags :
- aws-autoscale
parallel :
matrix :
2022-04-15 22:49:07 +02:00
- KASM_IMAGE : *MULTI_ARCH_BUILDS
2021-06-16 15:41:01 +02:00
2022-05-11 23:23:23 +02:00
link_tests_single_arch_dev :
stage : linktests
script :
- apk add curl
- STATUS=$(curl -sL https://kasm-ci.s3.amazonaws.com/${CI_COMMIT_SHA}/x86_64/kasmweb/${KASM_IMAGE}-private/${SANITIZED_BRANCH}/ci-status.yml | awk -F'"' '{print $2}')
- if [ "${STATUS}" == "PASS" ]; then STATE=success; else STATE=failed; fi;
- curl --request POST --header "PRIVATE-TOKEN:${GITLAB_API_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/statuses/${CI_COMMIT_SHA}?state=${STATE}&name=${KASM_IMAGE}-private_x86_64&target_url=https://kasm-ci.s3.amazonaws.com/${CI_COMMIT_SHA}/x86_64/kasmweb/${KASM_IMAGE}-private/${SANITIZED_BRANCH}/index.html"
2022-05-17 20:54:18 +02:00
except :
- develop
- /^release\/.*$/
2022-05-11 23:23:23 +02:00
parallel :
matrix :
- KASM_IMAGE : *SINGLE_ARCH_BUILDS
link_tests_multi_arch_dev :
stage : linktests
script :
- apk add curl
- STATUS=$(curl -sL https://kasm-ci.s3.amazonaws.com/${CI_COMMIT_SHA}/${ARCH}/kasmweb/${KASM_IMAGE}-private/${ARCH}-${SANITIZED_BRANCH}/ci-status.yml | awk -F'"' '{print $2}')
- if [ "${STATUS}" == "PASS" ]; then STATE=success; else STATE=failed; fi;
- curl --request POST --header "PRIVATE-TOKEN:${GITLAB_API_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/statuses/${CI_COMMIT_SHA}?state=${STATE}&name=${KASM_IMAGE}-private_${ARCH}&target_url=https://kasm-ci.s3.amazonaws.com/${CI_COMMIT_SHA}/${ARCH}/kasmweb/${KASM_IMAGE}-private/${ARCH}-${SANITIZED_BRANCH}/index.html"
2022-05-17 20:54:18 +02:00
except :
- develop
- /^release\/.*$/
2022-05-11 23:23:23 +02:00
parallel :
matrix :
- ARCH : [ aarch64, x86_64 ]
KASM_IMAGE : *MULTI_ARCH_BUILDS
2021-06-16 15:41:01 +02:00
# These jobs are for the "rolling" release of the images. They should only run for scheduled jobs and should only push the rolling tags
2022-03-22 21:26:38 +01:00
build_schedules_browser_images :
image : ${ORG_NAME}/docker-buildx-private:develop
stage : build
script :
- BUILD_PLATFORM=$PLATFORM
- if [[ "${ARM_BUILDS}" == *",${KASM_IMAGE},"* ]]; then BUILD_PLATFORM="linux/amd64,linux/arm64"; fi;
- echo "Building ${KASM_IMAGE} based on ${CORE_IMAGE} for platforms ${BUILD_PLATFORM}"
# to get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# to prepare the buildx env
- docker buildx create --use
# Ensure readme and description files are present
- ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt
# Check for private variable to build against private core images
2022-05-11 12:00:10 +02:00
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE-IMAGE-private; fi;
2022-03-22 21:26:38 +01:00
# Equivalent to docker build and docker push. Builds amd64 natively uses qemu for arm64.
# The only way to push multiple architectures to the same tag is to use buildx.
- docker buildx build --push --platform $BUILD_PLATFORM -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG="$SANITIZED_ROLLING_BRANCH" -f dockerfile-kasm-$KASM_IMAGE .
only :
- schedules
tags :
- aws-autoscale
parallel :
matrix :
- KASM_IMAGE : [ chrome, chromium, firefox, firefox-mobile, tor-browser, edge, brave]
build_schedules_app_images :
image : ${ORG_NAME}/docker-buildx-private:develop
stage : build
script :
- BUILD_PLATFORM=$PLATFORM
- if [[ "${ARM_BUILDS}" == *",${KASM_IMAGE},"* ]]; then BUILD_PLATFORM="linux/amd64,linux/arm64"; fi;
- echo "Building ${KASM_IMAGE} based on ${CORE_IMAGE} for platforms ${BUILD_PLATFORM}"
# to get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# to prepare the buildx env
- docker buildx create --use
# Ensure readme and description files are present
- ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt
# Check for private variable to build against private core images
2022-03-23 22:11:48 +01:00
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
2022-03-22 21:26:38 +01:00
# Equivalent to docker build and docker push. Builds amd64 natively uses qemu for arm64.
# The only way to push multiple architectures to the same tag is to use buildx.
- docker buildx build --push --platform $BUILD_PLATFORM -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG="$SANITIZED_ROLLING_BRANCH" -f dockerfile-kasm-$KASM_IMAGE .
only :
- schedules
tags :
- aws-autoscale
parallel :
matrix :
2022-06-24 18:34:08 +02:00
- KASM_IMAGE : [ doom, sublime-text, gimp, vs-code, teams, only-office, zoom, signal, steam, postman, insomnia, zsnes, vlc, maltego, telegram, hunchly, java-dev, terminal, vmware-horizon, remmina, rdesktop, discord, libre-office, thunderbird, atom, audacity, deluge, filezilla, inkscape, pinta, qbittorrent]
2022-03-22 21:26:38 +01:00
build_schedules_ubuntu_desktop_images :
2021-10-28 02:28:22 +02:00
image : ${ORG_NAME}/docker-buildx-private:develop
2021-06-16 15:41:01 +02:00
stage : build
script :
2021-10-27 20:53:46 +02:00
- BUILD_PLATFORM=$PLATFORM
- if [[ "${ARM_BUILDS}" == *",${KASM_IMAGE},"* ]]; then BUILD_PLATFORM="linux/amd64,linux/arm64"; fi;
- echo "Building ${KASM_IMAGE} for platforms ${BUILD_PLATFORM}"
# to get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# to prepare the buildx env
- docker buildx create --use
2021-06-16 15:41:01 +02:00
# Ensure readme and description files are present
- ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt
2022-03-22 21:26:38 +01:00
# Check for private variable to build against private core images
2022-06-24 10:50:10 +02:00
- if [[ $KASM_IMAGE =~ 'ubuntu-jammy-desktop' ]]; then CORE_IMAGE=core-ubuntu-jammy; fi
2022-03-23 22:11:48 +01:00
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
2022-03-22 21:26:38 +01:00
# Equivalent to docker build and docker push. Builds amd64 natively uses qemu for arm64.
2021-10-27 20:53:46 +02:00
# The only way to push multiple architectures to the same tag is to use buildx.
2022-03-23 22:11:48 +01:00
- docker buildx build --push --platform $BUILD_PLATFORM -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG="$SANITIZED_ROLLING_BRANCH" -f dockerfile-kasm-$KASM_IMAGE .
2021-06-16 15:41:01 +02:00
only :
- schedules
2021-10-27 20:53:46 +02:00
tags :
- aws-autoscale
2021-06-16 15:41:01 +02:00
parallel :
matrix :
2022-06-24 10:50:10 +02:00
- KASM_IMAGE : [ desktop, desktop-deluxe, ubuntu-focal-desktop, ubuntu-jammy-desktop, ubuntu-focal-dind, ubuntu-focal-dind-rootless]
2021-06-16 15:41:01 +02:00
2022-03-22 21:26:38 +01:00
build_schedules_non_ubuntu :
image : ${ORG_NAME}/docker-buildx-private:develop
stage : build
script :
- BUILD_PLATFORM=$PLATFORM
- if [[ "${ARM_BUILDS}" == *",${KASM_IMAGE},"* ]]; then BUILD_PLATFORM="linux/amd64,linux/arm64"; fi;
- echo "Building ${KASM_IMAGE} for platforms ${BUILD_PLATFORM}"
# to get qemu ready
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# to prepare the buildx env
- docker buildx create --use
# Ensure readme and description files are present
- ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt
2022-03-23 22:11:48 +01:00
# Set base image based on kasm_image variable
- if [[ $KASM_IMAGE =~ 'centos-7-desktop' ]]; then CORE_IMAGE=core-centos-7; fi
- if [[ $KASM_IMAGE =~ 'tracelabs' ]]; then CORE_IMAGE=core-kali-rolling; fi
2022-04-09 01:01:01 +02:00
- if [[ $KASM_IMAGE =~ 'oracle-7-desktop' ]]; then CORE_IMAGE=core-oracle-7; fi
- if [[ $KASM_IMAGE =~ 'oracle-8-desktop' ]]; then CORE_IMAGE=core-oracle-8; fi
- if [[ $KASM_IMAGE =~ 'opensuse-15-desktop' ]]; then CORE_IMAGE=core-opensuse-15; fi
2022-03-23 22:11:48 +01:00
# Check for private variable to build against private core images
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
2022-03-22 21:26:38 +01:00
# Equivalent to docker build and docker push. Builds amd64 natively uses qemu for arm64.
# The only way to push multiple architectures to the same tag is to use buildx.
2022-03-23 22:11:48 +01:00
- docker buildx build --push --platform $BUILD_PLATFORM -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG="$SANITIZED_ROLLING_BRANCH" -f dockerfile-kasm-$KASM_IMAGE .
2022-03-22 21:26:38 +01:00
only :
- schedules
tags :
- aws-autoscale
parallel :
matrix :
2022-04-09 01:01:01 +02:00
- KASM_IMAGE : [ centos-7-desktop, tracelabs, opensuse-15-desktop, oracle-7-desktop, oracle-8-desktop]
2021-06-16 15:41:01 +02:00
update_readmes :
stage : readme
script :
- apk add git
- git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@${README_TEMPLATE_REPO}
- sed -e "/{about}/r docs/$KASM_IMAGE/README.md" -e "/{about}/d" dockerhub-readme-template/TEMPLATE.md > docs/$KASM_IMAGE/FULL_README.md
- cat docs/$KASM_IMAGE/FULL_README.md
2022-04-15 22:49:07 +02:00
- >
docker run -v $PWD:/workspace
-e DOCKER_USERNAME="$README_USERNAME"
-e DOCKER_PASSWORD="$README_PASSWORD"
-e DOCKERHUB_REPOSITORY="${ORG_NAME}/$KASM_IMAGE-private"
-e README_FILEPATH="/workspace/docs/$KASM_IMAGE/FULL_README.md"
-e DESCRIPTION_FILEPATH="/workspace/docs/$KASM_IMAGE/description.txt"
${ORG_NAME}/dockerhub-updater:latest
- >
docker run -v $PWD:/workspace
-e DOCKER_USERNAME="$README_USERNAME"
-e DOCKER_PASSWORD="$README_PASSWORD"
-e DOCKERHUB_REPOSITORY="${ORG_NAME}/$KASM_IMAGE"
-e README_FILEPATH="/workspace/docs/$KASM_IMAGE/FULL_README.md"
-e DESCRIPTION_FILEPATH="/workspace/docs/$KASM_IMAGE/description.txt"
${ORG_NAME}/dockerhub-updater:latest
2021-06-16 15:41:01 +02:00
only :
variables :
- $README_USERNAME
- $README_PASSWORD
parallel :
matrix :
2022-04-15 22:49:07 +02:00
- KASM_IMAGE :
2022-05-11 12:00:10 +02:00
- atom
- audacity
2022-04-15 22:49:07 +02:00
- brave
- centos-7-desktop
- chrome
- chromium
2022-05-11 12:00:10 +02:00
- deluge
2022-04-15 22:49:07 +02:00
- desktop
- desktop-deluxe
- discord
- doom
- edge
2022-05-11 12:00:10 +02:00
- filezilla
2022-04-15 22:49:07 +02:00
- firefox
- firefox-mobile
- gimp
- hunchly
2022-05-11 12:00:10 +02:00
- inkscape
2022-04-15 22:49:07 +02:00
- insomnia
- java-dev
- libre-office
- maltego
- only-office
- opensuse-15-desktop
- oracle-7-desktop
- oracle-8-desktop
2022-05-11 12:00:10 +02:00
- pinta
2022-04-15 22:49:07 +02:00
- postman
2022-05-11 12:00:10 +02:00
- qbittorrent
2022-04-15 22:49:07 +02:00
- rdesktop
- remmina
- signal
- steam
- sublime-text
- teams
- telegram
- terminal
2022-05-04 06:57:58 +02:00
- thunderbird
2022-04-15 22:49:07 +02:00
- tor-browser
- tracelabs
- ubuntu-focal-desktop
2022-06-24 10:50:10 +02:00
- ubuntu-jammy-desktop
2022-04-15 22:49:07 +02:00
- ubuntu-focal-dind
- ubuntu-focal-dind-rootless
- vlc
- vmware-horizon
- vs-code
- zoom
- zsnes