mirror of
https://github.com/kasmtech/workspaces-images.git
synced 2024-11-07 08:44:07 +01:00
4a901802a5
The old images that had bionic in their name, forgot to update them to focal in the ci for generating readmes
400 lines
20 KiB
YAML
400 lines
20 KiB
YAML
image: docker
|
|
services:
|
|
- docker:dind
|
|
variables:
|
|
DOCKER_AUTH_CONFIG: ${_DOCKER_AUTH_CONFIG}
|
|
PLATFORM: "linux/amd64"
|
|
ARM_BUILDS: ",chromium,firefox,gimp,rdesktop,remmina,terminal,ubuntu-bionic-desktop,ubuntu-focal-desktop,vlc,vs-code,"
|
|
CORE_IMAGE_TAG: "develop"
|
|
CORE_IMAGE: "core-ubuntu-focal"
|
|
USE_PRIVATE_IMAGES: 0
|
|
|
|
stages:
|
|
- build
|
|
- readme
|
|
|
|
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
|
|
build_browser_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
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
- 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
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
- 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: [doom, sublime-text, gimp, vs-code, slack, teams, only-office, zoom, signal, steam, postman, insomnia, zsnes, vlc, maltego, telegram, hunchly, java-dev, terminal, vmware-horizon, remmina, rdesktop, discord]
|
|
|
|
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
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
- 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: [desktop, desktop-deluxe, ubuntu-focal-desktop, ubuntu-focal-dind, ubuntu-focal-dind-rootless]
|
|
|
|
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
|
|
# 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
|
|
# Check for private variable to build against private core images
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
- 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: [centos-7-desktop, tracelabs]
|
|
|
|
|
|
|
|
# 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
|
|
|
|
build_dev_browser_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
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
# 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-private:$SANITIZED_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG=$CORE_IMAGE_TAG -f dockerfile-kasm-$KASM_IMAGE .
|
|
except:
|
|
- develop
|
|
- /^release\/.*$/
|
|
tags:
|
|
- aws-autoscale
|
|
parallel:
|
|
matrix:
|
|
- KASM_IMAGE: [chrome, chromium, firefox, firefox-mobile, tor-browser, edge, brave]
|
|
|
|
build_dev_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
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
# 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-private:$SANITIZED_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG=$CORE_IMAGE_TAG -f dockerfile-kasm-$KASM_IMAGE .
|
|
except:
|
|
- develop
|
|
- /^release\/.*$/
|
|
tags:
|
|
- aws-autoscale
|
|
parallel:
|
|
matrix:
|
|
- KASM_IMAGE: [doom, sublime-text, gimp, vs-code, slack, teams, only-office, zoom, signal, steam, postman, insomnia, zsnes, vlc, maltego, telegram, hunchly, java-dev, terminal, vmware-horizon, remmina, rdesktop, discord]
|
|
|
|
build_dev_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
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
# 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-private:$SANITIZED_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG=$CORE_IMAGE_TAG -f dockerfile-kasm-$KASM_IMAGE .
|
|
except:
|
|
- develop
|
|
- /^release\/.*$/
|
|
tags:
|
|
- aws-autoscale
|
|
parallel:
|
|
matrix:
|
|
- KASM_IMAGE: [desktop, desktop-deluxe, ubuntu-focal-desktop, ubuntu-focal-dind, ubuntu-focal-dind-rootless]
|
|
|
|
build_dev_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
|
|
# 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
|
|
# Check for private variable to build against private core images
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
# 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-private:$SANITIZED_BRANCH --build-arg BASE_IMAGE=$CORE_IMAGE --build-arg BASE_TAG=$CORE_IMAGE_TAG -f dockerfile-kasm-$KASM_IMAGE .
|
|
except:
|
|
- develop
|
|
- /^release\/.*$/
|
|
tags:
|
|
- aws-autoscale
|
|
parallel:
|
|
matrix:
|
|
- KASM_IMAGE: [centos-7-desktop, tracelabs]
|
|
|
|
|
|
# These jobs are for the "rolling" release of the images. They should only run for scheduled jobs and should only push the rolling tags
|
|
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
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
# 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]
|
|
CORE_IMAGE: [core-ubuntu-bionic, core-ubuntu-focal]
|
|
|
|
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
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
# 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: [doom, sublime-text, gimp, vs-code, slack, teams, only-office, zoom, signal, steam, postman, insomnia, zsnes, vlc, maltego, telegram, hunchly, java-dev, terminal, vmware-horizon, remmina, rdesktop, discord]
|
|
CORE_IMAGE: [core-ubuntu-bionic, core-ubuntu-focal]
|
|
|
|
build_schedules_ubuntu_desktop_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} 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
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
# 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: [desktop, desktop-deluxe, ubuntu-focal-desktop, ubuntu-focal-dind, ubuntu-focal-dind-rootless]
|
|
|
|
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
|
|
# 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
|
|
# Check for private variable to build against private core images
|
|
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi;
|
|
|
|
# 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: [centos-7-desktop, tracelabs]
|
|
|
|
|
|
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
|
|
- 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
|
|
|
|
only:
|
|
variables:
|
|
- $README_USERNAME
|
|
- $README_PASSWORD
|
|
parallel:
|
|
matrix:
|
|
- KASM_IMAGE: [chrome, chromium, firefox, desktop, desktop-deluxe, firefox-mobile, tor-browser, doom, edge, terminal, vmware-horizon, remmina, rdesktop, brave, discord, sublime-text, gimp, vs-code, slack, teams, only-office, zoom, signal, steam, postman, insomnia, zsnes, vlc, ubuntu-focal-desktop, maltego, centos-7-desktop, telegram, hunchly, ubuntu-focal-dind, ubuntu-focal-dind-rootless, tracelabs, java-dev ] |