Merge branch 'feature/KASM-2016_ARM' into 'develop'

Resolve KASM-2016 "Feature/ arm"

Closes KASM-2016

See merge request kasm-technologies/internal/workspaces-images!16
This commit is contained in:
Matthew McClaskey 2021-10-27 18:55:31 +00:00
commit 437bd60b2e
12 changed files with 120 additions and 32 deletions

View File

@ -1,6 +1,10 @@
image: docker
services:
- docker:dind
variables:
DOCKER_AUTH_CONFIG: ${_DOCKER_AUTH_CONFIG}
PLATFORM: "linux/amd64"
ARM_BUILDS: ",chromium,firefox,ubuntu-bionic-desktop,terminal,remmina,rdesktop,"
stages:
- build
@ -14,24 +18,28 @@ before_script:
# Jobs for the develop and release branches. They should push to the private and public repos
build:
stage: build
image: kasmweb/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
- docker build -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 -f dockerfile-kasm-$KASM_IMAGE --build-arg BASE_TAG="develop" .
- docker push ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_BRANCH
- docker push ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH
- docker push ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_BRANCH
- docker push ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH
- 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_TAG="develop" -f dockerfile-kasm-$KASM_IMAGE .
only:
- develop
- /^release\/.*$/
except:
- schedules
tags:
- aws-autoscale
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-bionic-desktop, maltego, centos-7-desktop, telegram ]
@ -43,17 +51,26 @@ build:
build_dev:
stage: build
image: kasmweb/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
- docker build -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_BRANCH -f dockerfile-kasm-$KASM_IMAGE --build-arg BASE_TAG="develop" .
- docker push ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_BRANCH
# Equivilant 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_TAG="develop" -f dockerfile-kasm-$KASM_IMAGE .
except:
- develop
- /^release\/.*$/
tags:
- aws-autoscale
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-bionic-desktop, maltego, centos-7-desktop, telegram ]
@ -62,18 +79,26 @@ build_dev:
# 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:
image: kasmweb/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
- docker build -t ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH -t ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH -f dockerfile-kasm-$KASM_IMAGE --build-arg BASE_TAG="$SANITIZED_ROLLING_BRANCH" .
- docker push ${ORG_NAME}/$KASM_IMAGE:$SANITIZED_ROLLING_BRANCH
- docker push ${ORG_NAME}/$KASM_IMAGE-private:$SANITIZED_ROLLING_BRANCH
# Equivilant 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_TAG="$SANITIZED_ROLLING_BRANCH" -f dockerfile-kasm-$KASM_IMAGE .
only:
- schedules
tags:
- aws-autoscale
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-bionic-desktop, maltego, centos-7-desktop, telegram ]
@ -97,4 +122,3 @@ update_readmes:
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-bionic-desktop, maltego, centos-7-desktop, telegram ]

View File

@ -4,6 +4,12 @@ set -ex
CHROME_ARGS="--password-store=basic --no-sandbox --ignore-gpu-blocklist --user-data-dir --no-first-run --simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT'"
CHROME_VERSION=$1
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "$ARCH" == "arm64" ] ; then
echo "Chrome not supported on arm64, skipping Chrome installation"
exit 0
fi
if [ "$DISTRO" = centos ]; then
if [ ! -z "${CHROME_VERSION}" ]; then
wget https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-${CHROME_VERSION}.x86_64.rpm -O chrome.rpm

View File

@ -27,7 +27,7 @@ fi
if [ "$DISTRO" != centos ]; then
# Update firefox to utilize the system certificate store instead of the one that ships with firefox
rm /usr/lib/firefox/libnssckbi.so
ln /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/firefox/libnssckbi.so
ln /usr/lib/$(arch)-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/firefox/libnssckbi.so
fi
if [ "$DISTRO" = centos ]; then

View File

@ -3,7 +3,8 @@
set -e
libgtk_deb=libgtk.deb
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
wget https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-gtk-3-restricted-file-chooser/de486e8c3c5f3d3c0f898fb9d6e05755897b1970/output/libgtk-3-0_3.22.30-1ubuntu4_amd64.deb -O $libgtk_deb
wget https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-gtk-3-restricted-file-chooser/5ed0c7b5bf4b56562269b3527b3446febc8bd91a/output/libgtk-3-0_3.22.30-1ubuntu4_${ARCH}.deb -O $libgtk_deb
apt-get install -y --allow-downgrades ./"$libgtk_deb"
rm "$libgtk_deb"

View File

@ -1,5 +1,13 @@
#!/usr/bin/env bash
set -ex
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "${ARCH}" == "arm64" ] ; then
echo "OBS for arm64 currently not supported, skipping install"
exit 0
fi
apt-get update
apt-get install -y mesa-utils libglu1-mesa-dev freeglut3-dev mesa-common-dev
add-apt-repository -y ppa:obsproject/obs-studio
@ -10,4 +18,4 @@ chmod +x $HOME/Desktop/com.obsproject.Studio.desktop
wget https://github.com/CatxFish/obs-v4l2sink/releases/download/0.1.0/obs-v4l2sink.deb
apt-get install ./obs-v4l2sink.deb
rm -f obs-v4l2sink.deb
rm -f obs-v4l2sink.deb

View File

@ -1,6 +1,13 @@
#!/usr/bin/env bash
set -ex
curl -L -o only_office.deb "https://download.onlyoffice.com/install/desktop/editors/linux/onlyoffice-desktopeditors_amd64.deb"
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "$ARCH" == "arm64" ] ; then
echo "Only Office is not supported on arm64, skipping Only Office installation"
exit 0
fi
curl -L -o only_office.deb "https://download.onlyoffice.com/install/desktop/editors/linux/onlyoffice-desktopeditors_${ARCH}.deb"
apt-get update
apt-get install -y ./only_office.deb
rm -rf only_office.deb

View File

@ -1,7 +1,15 @@
#!/usr/bin/env bash
set -ex
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "${ARCH}" == "arm64" ] ; then
echo "Signal for arm64 currently not supported, skipping install"
exit 0
fi
wget -O- https://updates.signal.org/desktop/apt/keys.asc | apt-key add -
echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | tee -a /etc/apt/sources.list.d/signal-xenial.list
echo "deb [arch=${ARCH}] https://updates.signal.org/desktop/apt xenial main" | tee -a /etc/apt/sources.list.d/signal-xenial.list
apt-get update
apt-get install -y signal-desktop maximus
cp /usr/share/applications/signal-desktop.desktop $HOME/Desktop/

View File

@ -1,10 +1,17 @@
#!/usr/bin/env bash
set -ex
wget -q https://downloads.slack-edge.com/linux_releases/slack-desktop-4.3.2-amd64.deb
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "${ARCH}" == "arm64" ] ; then
echo "Slack for arm64 currently not supported, skipping install"
exit 0
fi
wget -q https://downloads.slack-edge.com/linux_releases/slack-desktop-4.3.2-${ARCH}.deb
apt-get update
apt-get install -y maximus
apt-get install -y ./slack-desktop-4.3.2-amd64.deb
rm slack-desktop-4.3.2-amd64.deb
apt-get install -y ./slack-desktop-4.3.2-${ARCH}.deb
rm slack-desktop-4.3.2-${ARCH}.deb
sed -i 's,/usr/bin/slack,/usr/bin/slack --no-sandbox,g' /usr/share/applications/slack.desktop
cp /usr/share/applications/slack.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/slack.desktop

View File

@ -1,8 +1,16 @@
#!/usr/bin/env bash
set -ex
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "${ARCH}" == "arm64" ] ; then
echo "Teams for arm64 currently not supported, skipping install"
exit 0
fi
curl -L -o teams.deb "https://go.microsoft.com/fwlink/p/?linkid=2112886&clcid=0x409&culture=en-us&country=us"
apt-get install -y ./teams.deb
rm teams.deb
sed -i "s/Exec=teams/Exec=teams --no-sandbox/g" /usr/share/applications/teams.desktop
cp /usr/share/applications/teams.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/teams.desktop
chmod +x $HOME/Desktop/teams.desktop

View File

@ -1,6 +1,14 @@
#!/usr/bin/env bash
set -ex
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "${ARCH}" == "arm64" ] ; then
echo "Terraform for arm64 currently not supported, skipping install"
exit 0
fi
curl -fsSL https://apt.releases.hashicorp.com/gpg | apt-key add -
apt-add-repository "deb [arch=$(dpkg --print-architecture)] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
apt-get update

View File

@ -1,12 +1,14 @@
#!/usr/bin/env bash
set -ex
wget -q https://update.code.visualstudio.com/latest/linux-deb-x64/stable -O vs_code_amd64.deb
dpkg -i vs_code_amd64.deb
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/x64/g')
wget -q https://update.code.visualstudio.com/latest/linux-deb-${ARCH}/stable -O vs_code.deb
dpkg -i vs_code.deb
sed -i 's#/usr/share/code/code#/usr/share/code/code --no-sandbox##' /usr/share/applications/code.desktop
cp /usr/share/applications/code.desktop $HOME/Desktop
chmod +x $HOME/Desktop/code.desktop
chown 1000:1000 $HOME/Desktop/code.desktop
rm vs_code_amd64.deb
rm vs_code.deb
# Conveniences for python development
apt-get update

View File

@ -1,9 +1,18 @@
#!/usr/bin/env bash
set -ex
wget -q https://zoom.us/client/latest/zoom_amd64.deb
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
if [ "${ARCH}" == "arm64" ] ; then
echo "Zoom for arm64 currently not supported, skipping install"
exit 0
fi
wget -q https://zoom.us/client/latest/zoom_${ARCH}.deb
apt-get update
apt-get install -y maximus
apt-get install -y ./zoom_amd64.deb
apt-get install -y ./zoom_${ARCH}.deb
rm zoom_amd64.deb
cp /usr/share/applications/Zoom.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/Zoom.desktop
chmod +x $HOME/Desktop/Zoom.desktop