KASM-3718 add new build logic adapted from core

This commit is contained in:
ryan.kuba 2023-06-28 14:34:50 -04:00
parent a8669f60aa
commit e58dfd4b91
No known key found for this signature in database
31 changed files with 849 additions and 980 deletions

File diff suppressed because it is too large Load Diff

14
ci-scripts/build.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/bash
## Parse input ##
NAME=$(echo $1| awk -F'|' '{print $1}')
BASE=$(echo $1| awk -F'|' '{print $2}')
DOCKERFILE=$(echo $1| awk -F'|' '{print $3}')
## Build/Push image to cache endpoint by pipeline ID ##
docker build \
-t ${ORG_NAME}/image-cache-private:$(arch)-${NAME}-${SANITIZED_BRANCH}-${CI_PIPELINE_ID} \
--build-arg BASE_IMAGE="${BASE}" \
--build-arg BASE_TAG="${BASE_TAG}" \
-f ${DOCKERFILE} .
docker push ${ORG_NAME}/image-cache-private:$(arch)-${NAME}-${SANITIZED_BRANCH}-${CI_PIPELINE_ID}

104
ci-scripts/manifest.sh Executable file
View File

@ -0,0 +1,104 @@
#! /bin/bash
# Globals
FAILED="false"
# Ingest cli variables
## Parse input ##
NAME=$(echo $1| awk -F'|' '{print $1}')
TYPE=$2
REVERT_PIPELINE_ID=$3
IS_ROLLING=$4
PULL_BRANCH=${SANITIZED_BRANCH}
# Determine if this is a private or public build
if [[ "${CI_COMMIT_REF_NAME}" == release/* ]] || [[ "${CI_COMMIT_REF_NAME}" == "develop" ]]; then
ENDPOINT="${NAME}"
else
ENDPOINT="${NAME}-private"
fi
# Determine if this is a rolling build
if [ "${CI_PIPELINE_SOURCE}" == "schedule" ]; then
SANITIZED_BRANCH=${SANITIZED_BRANCH}-rolling
fi
# Determine if we are doing a reversion
if [ ! -z "${REVERT_PIPELINE_ID}" ]; then
# If we are reverting modify the pipeline ID to the one passed
CI_PIPELINE_ID=${REVERT_PIPELINE_ID}
if [ "${IS_ROLLING}" == "true" ]; then
SANITIZED_BRANCH=${SANITIZED_BRANCH}-rolling
fi
fi
# Check test output
if [ -z "${REVERT_PIPELINE_ID}" ]; then
apk add curl
if [ "${TYPE}" == "multi" ]; then
ARCHES=("x86_64" "aarch64")
else
ARCHES=("x86_64")
fi
for ARCH in "${ARCHES[@]}"; do
# Determine test status
STATUS=$(curl -sL https://kasm-ci.s3.amazonaws.com/${CI_COMMIT_SHA}/${ARCH}/kasmweb/image-cache-private/${ARCH}-${NAME}-${PULL_BRANCH}-${CI_PIPELINE_ID}/ci-status.yml | awk -F'"' '{print $2}')
if [ "${STATUS}" == "PASS" ]; then
STATE=success
else
STATE=failed
FAILED="true"
fi
# Ping gitlab api with link output
curl --request POST --header "PRIVATE-TOKEN:${GITLAB_API_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/statuses/${CI_COMMIT_SHA}?state=${STATE}&name=${NAME}_${ARCH}&target_url=https://kasm-ci.s3.amazonaws.com/${CI_COMMIT_SHA}/${ARCH}/kasmweb/image-cache-private/${ARCH}-${NAME}-${PULL_BRANCH}-${CI_PIPELINE_ID}/index.html"
done
fi
# Fail job and go no further if tests did not pass
if [ "${FAILED}" == "true" ]; then
exit 1
fi
# Manifest for multi pull and push for single arch
if [ "${TYPE}" == "multi" ]; then
# Pull images from cache repo
docker pull ${ORG_NAME}/image-cache-private:x86_64-${NAME}-${PULL_BRANCH}-${CI_PIPELINE_ID}
docker pull ${ORG_NAME}/image-cache-private:aarch64-${NAME}-${PULL_BRANCH}-${CI_PIPELINE_ID}
# Tag images to live repo
docker tag \
${ORG_NAME}/image-cache-private:x86_64-${NAME}-${PULL_BRANCH}-${CI_PIPELINE_ID} \
${ORG_NAME}/${ENDPOINT}:x86_64-${SANITIZED_BRANCH}
docker tag \
${ORG_NAME}/image-cache-private:aarch64-${NAME}-${PULL_BRANCH}-${CI_PIPELINE_ID} \
${ORG_NAME}/${ENDPOINT}:aarch64-${SANITIZED_BRANCH}
# Push arches to live repo
docker push ${ORG_NAME}/${ENDPOINT}:x86_64-${SANITIZED_BRANCH}
docker push ${ORG_NAME}/${ENDPOINT}:aarch64-${SANITIZED_BRANCH}
# Manifest to meta tag
docker manifest push --purge ${ORG_NAME}/${ENDPOINT}:${SANITIZED_BRANCH} || :
docker manifest create ${ORG_NAME}/${ENDPOINT}:${SANITIZED_BRANCH} ${ORG_NAME}/${ENDPOINT}:x86_64-${SANITIZED_BRANCH} ${ORG_NAME}/${ENDPOINT}:aarch64-${SANITIZED_BRANCH}
docker manifest annotate ${ORG_NAME}/${ENDPOINT}:${SANITIZED_BRANCH} ${ORG_NAME}/${ENDPOINT}:aarch64-${SANITIZED_BRANCH} --os linux --arch arm64 --variant v8
docker manifest push --purge ${ORG_NAME}/${ENDPOINT}:${SANITIZED_BRANCH}
# Single arch image just pull and push
else
# Pull image
docker pull ${ORG_NAME}/image-cache-private:x86_64-${NAME}-${PULL_BRANCH}-${CI_PIPELINE_ID}
# Tage image
docker tag \
${ORG_NAME}/image-cache-private:x86_64-${NAME}-${PULL_BRANCH}-${CI_PIPELINE_ID} \
${ORG_NAME}/${ENDPOINT}:${SANITIZED_BRANCH}
# Push image
docker push ${ORG_NAME}/${ENDPOINT}:${SANITIZED_BRANCH}
fi

12
ci-scripts/readme.sh Executable file
View File

@ -0,0 +1,12 @@
#! /bin/bash
## Parse input ##
NAME=$(echo $1| awk -F'|' '{print $1}')
## Run readme updater ##
docker run -v $PWD/docs:/docs \
-e RELEASE="$KASM_RELEASE" \
-e DOCKER_USERNAME="$README_USERNAME" \
-e DOCKER_PASSWORD="$README_PASSWORD" \
-e DOCKERHUB_REPOSITORY="${ORG_NAME}/${NAME}" \
kasmweb/dockerhub-updater:develop

217
ci-scripts/test.sh Executable file
View File

@ -0,0 +1,217 @@
#!/bin/bash
set -e
## Parse input ##
NAME=$(echo $1| awk -F'|' '{print $1}')
BASE=$(echo $1| awk -F'|' '{print $2}')
DOCKERFILE=$(echo $1| awk -F'|' '{print $3}')
ARCH=$2
AWS_ID=$3
AWS_KEY=$4
# Setup aws cli
export AWS_ACCESS_KEY_ID="${AWS_ID}"
export AWS_SECRET_ACCESS_KEY="${AWS_KEY}"
export AWS_DEFAULT_REGION=us-east-1
# Install tools for testing
apk add \
aws-cli \
curl \
jq \
openssh-client
## Functions ##
# Ami locater
getami () {
aws ec2 describe-images --filters \
"Name=name,Values=$1*" \
"Name=owner-id,Values=$2" \
"Name=state,Values=available" \
"Name=architecture,Values=$3" \
"Name=virtualization-type,Values=hvm" \
"Name=root-device-type,Values=ebs" \
"Name=image-type,Values=machine" \
--query 'sort_by(Images, &CreationDate)[-1].[ImageId]' \
--output 'text' \
--region us-east-1
}
# Make sure deployment is ready
function ready_check() {
while :; do
sleep 2
CHECK=$(curl --max-time 5 -sLk https://${IPS[0]}/api/__healthcheck || :)
if [[ "${CHECK}" =~ .*"true".* ]]; then
echo "Workspaces at "${IPS[0]}" ready for testing"
break
else
echo "Waiting for Workspaces at "${IPS[0]}" to be ready"
fi
done
sleep 30
}
# Determine deployment based on arch
if [[ "${ARCH}" == "x86_64" ]]; then
AMI=$(getami "ubuntu/images/hvm-ssd/ubuntu-jammy-22.04" 099720109477 x86_64)
TYPE=c5.large
USER=ubuntu
else
AMI=$(getami "ubuntu/images/hvm-ssd/ubuntu-jammy-22.04" 099720109477 arm64)
TYPE=c6g.large
USER=ubuntu
fi
# Setup SSH Key
mkdir -p /root/.ssh
RAND=$(head /dev/urandom | tr -dc 'a-z0-9' | head -c36)
SSH_KEY=$(aws ec2 create-key-pair --key-name ${RAND} | jq -r '.KeyMaterial')
cat >/root/.ssh/id_rsa <<EOL
$SSH_KEY
EOL
chmod 600 /root/.ssh/id_rsa
# Launch instance
cat >/root/user-data <<EOL
#!/bin/bash
shutdown -P +60
EOL
aws ec2 run-instances \
--image-id ${AMI} \
--count 1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=gitlab-os-integration,Value=true}]' \
--instance-type ${TYPE} \
--key-name ${RAND} \
--security-group-ids sg-029d5bc88b001fbe5 \
--subnet-id subnet-0ee70521f1f979f5f \
--associate-public-ip-address \
--user-data file:///root/user-data \
--block-device-mapping '[ { "DeviceName": "/dev/sda1", "Ebs": { "VolumeSize": 120 } } ]' \
--instance-initiated-shutdown-behavior terminate > /tmp/instance.json
INSTANCE=$(cat /tmp/instance.json | jq -r " .Instances[0].InstanceId")
INSTANCES+=("${INSTANCE}")
for INSTANCE_ID in "${INSTANCES[@]}"; do
echo $INSTANCE_ID
done
# Determine IPs of instances
IPS=()
for INSTANCE_ID in "${INSTANCES[@]}"; do
while :; do
sleep 2
IP=$(aws ec2 describe-instances \
--instance-id ${INSTANCE_ID} \
| jq -r '.Reservations[0].Instances[0].PublicIpAddress')
if [ "${IP}" == 'null' ]; then
echo "Waiting for Pub IP from instance ${INSTANCE_ID}"
else
echo "Instance ${INSTANCE_ID} IP=${IP}"
IPS+=("${IP}")
break
fi
done
done
# Shutdown Instances function and trap
function turnoff() {
for IP in "${IPS[@]}"; do
ssh \
-oConnectTimeout=4 \
-oStrictHostKeyChecking=no \
${USER}@${IP} \
"sudo poweroff" || :
done
aws ec2 delete-key-pair --key-name ${RAND}
}
trap turnoff ERR
# Make sure the instance is up
for IP in "${IPS[@]}"; do
while :; do
sleep 2
UPTIME=$(ssh \
-oConnectTimeout=4 \
-oStrictHostKeyChecking=no \
${USER}@${IP} \
'uptime'|| :)
if [ -z "${UPTIME}" ]; then
echo "Waiting for ${IP} to be up"
else
echo "${IP} up ${UPTIME}"
break
fi
done
done
# Sleep here to ensure subsequent connections don't fail
sleep 30
# Double check we are up
for IP in "${IPS[@]}"; do
while :; do
sleep 2
UPTIME=$(ssh \
-oConnectTimeout=4 \
-oStrictHostKeyChecking=no \
${USER}@${IP} \
'uptime'|| :)
if [ -z "${UPTIME}" ]; then
echo "Waiting for ${IP} to be up"
else
echo "${IP} up ${UPTIME}"
break
fi
done
done
# Copy over docker auth
for IP in "${IPS[@]}"; do
scp \
-oStrictHostKeyChecking=no \
/root/.docker/config.json \
${USER}@${IP}:/tmp/
ssh \
-oConnectTimeout=10 \
-oStrictHostKeyChecking=no \
${USER}@${IP} \
"sudo mkdir -p /root/.docker && sudo mv /tmp/config.json /root/.docker/ && sudo chown root:root /root/.docker/config.json"
done
# Install Kasm workspaces
ssh \
-oConnectTimeout=4 \
-oStrictHostKeyChecking=no \
${USER}@"${IPS[0]}" \
"curl -L -o /tmp/installer.tar.gz ${TEST_INSTALLER} && cd /tmp && tar xf installer.tar.gz && sudo bash kasm_release/install.sh -H -u -I -e -P ${RAND} -U ${RAND}"
# Ensure install is up and running
ready_check
# Pull tester image
docker pull ${ORG_NAME}/kasm-tester:1.14.0
# Run test
cp /root/.ssh/id_rsa $(dirname ${CI_PROJECT_DIR})/sshkey
chmod 777 $(dirname ${CI_PROJECT_DIR})/sshkey
docker pull kasmweb/kasm-tester:1.14.0
docker run --rm \
-e TZ=US/Pacific \
-e KASM_HOST=${IPS[0]} \
-e KASM_PORT=443 \
-e KASM_PASSWORD="${RAND}" \
-e SSH_USER=$USER \
-e DOCKERUSER=$DOCKER_HUB_USERNAME \
-e DOCKERPASS=$DOCKER_HUB_PASSWORD \
-e TEST_IMAGE="${ORG_NAME}/image-cache-private:${ARCH}-${NAME}-${SANITIZED_BRANCH}-${CI_PIPELINE_ID}" \
-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 \
-e AUTOMATED=true \
-v $(dirname ${CI_PROJECT_DIR})/sshkey:/sshkey:ro ${SLIM_FLAG} \
kasmweb/kasm-tester:1.14.0
# Shutdown Instances
turnoff

View File

@ -0,0 +1,55 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-alpine-318"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root
ENV DISTRO=alpine318
ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
WORKDIR $HOME
### Envrionment config
ENV SKIP_CLEAN=true \
INST_DIR=$STARTUPDIR/install \
INST_SCRIPTS="/alpine/install/tools/install_tools_deluxe.sh \
/alpine/install/misc/install_tools.sh \
/alpine/install/chromium/install_chromium.sh \
/alpine/install/firefox/install_firefox.sh \
/alpine/install/remmina/install_remmina.sh \
/alpine/install/gimp/gimp/install_gimp.sh \
/alpine/install/ansible/install_ansible.sh \
/alpine/install/terraform/install_terraform.sh \
/alpine/install/thunderbird/install_thunderbird.sh \
/alpine/install/audacity/install_audacity.sh \
/alpine/install/blender/install_blender.sh \
/alpine/install/geany/install_geany.sh \
/alpine/install/inkscape/install_inkscape.sh \
/alpine/install/libre_office/install_libre_office.sh \
/alpine/install/pinta/install_pinta.sh \
/alpine/install/obs/install_obs.sh \
/alpine/install/filezilla/install_filezilla.sh \
/ubuntu/install/langpacks/install_langpacks.sh \
/ubuntu/install/cleanup/cleanup.sh"
# Copy install scripts
COPY ./src/ $INST_DIR
# Run installations
RUN \
for SCRIPT in $INST_SCRIPTS; do \
bash ${INST_DIR}${SCRIPT}; \
done && \
$STARTUPDIR/set_user_permission.sh $HOME && \
rm -f /etc/X11/xinit/Xclients && \
chown 1000:0 $HOME && \
mkdir -p /home/kasm-user && \
chown -R 1000:0 /home/kasm-user && \
rm -Rf ${INST_DIR}
# Userspace Runtime
ENV HOME /home/kasm-user
WORKDIR $HOME
USER 1000
CMD ["--tail-log"]

View File

@ -0,0 +1,57 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-debian-bookworm"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root
ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
WORKDIR $HOME
### Envrionment config
ENV DEBIAN_FRONTEND=noninteractive \
SKIP_CLEAN=true \
KASM_RX_HOME=$STARTUPDIR/kasmrx \
DONT_PROMPT_WSL_INSTALL="No_Prompt_please" \
INST_DIR=$STARTUPDIR/install \
INST_SCRIPTS="/ubuntu/install/tools/install_tools_deluxe.sh \
/ubuntu/install/misc/install_tools.sh \
/ubuntu/install/chrome/install_chrome.sh \
/ubuntu/install/chromium/install_chromium.sh \
/ubuntu/install/firefox/install_firefox.sh \
/ubuntu/install/sublime_text/install_sublime_text.sh \
/ubuntu/install/vs_code/install_vs_code.sh \
/ubuntu/install/remmina/install_remmina.sh \
/ubuntu/install/only_office/install_only_office.sh \
/ubuntu/install/signal/install_signal.sh \
/ubuntu/install/gimp/install_gimp.sh \
/ubuntu/install/zoom/install_zoom.sh \
/ubuntu/install/obs/install_obs.sh \
/ubuntu/install/ansible/install_ansible.sh \
/ubuntu/install/terraform/install_terraform.sh \
/ubuntu/install/telegram/install_telegram.sh \
/ubuntu/install/thunderbird/install_thunderbird.sh \
/ubuntu/install/gamepad_utils/install_gamepad_utils.sh \
/ubuntu/install/cleanup/cleanup.sh"
# Copy install scripts
COPY ./src/ $INST_DIR
# Run installations
RUN \
for SCRIPT in $INST_SCRIPTS; do \
bash ${INST_DIR}${SCRIPT}; \
done && \
$STARTUPDIR/set_user_permission.sh $HOME && \
rm -f /etc/X11/xinit/Xclients && \
chown 1000:0 $HOME && \
mkdir -p /home/kasm-user && \
chown -R 1000:0 /home/kasm-user && \
rm -Rf ${INST_DIR}
# Userspace Runtime
ENV HOME /home/kasm-user
WORKDIR $HOME
USER 1000
CMD ["--tail-log"]

View File

@ -0,0 +1,53 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-fedora-38"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root
ENV DISTRO=fedora37
ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
WORKDIR $HOME
### Envrionment config
ENV SKIP_CLEAN=true \
KASM_RX_HOME=$STARTUPDIR/kasmrx \
DONT_PROMPT_WSL_INSTALL="No_Prompt_please" \
INST_DIR=$STARTUPDIR/install \
INST_SCRIPTS="/oracle/install/tools/install_tools_deluxe.sh \
/oracle/install/misc/install_tools.sh \
/ubuntu/install/chromium/install_chromium.sh \
/ubuntu/install/firefox/install_firefox.sh \
/oracle/install/sublime_text/install_sublime_text.sh \
/oracle/install/vs_code/install_vs_code.sh \
/ubuntu/install/remmina/install_remmina.sh \
/oracle/install/only_office/install_only_office.sh \
/oracle/install/gimp/install_gimp.sh \
/oracle/install/zoom/install_zoom.sh \
/oracle/install/ansible/install_ansible.sh \
/oracle/install/terraform/install_terraform.sh \
/oracle/install/telegram/install_telegram.sh \
/ubuntu/install/thunderbird/install_thunderbird.sh \
/ubuntu/install/cleanup/cleanup.sh"
# Copy install scripts
COPY ./src/ $INST_DIR
# Run installations
RUN \
for SCRIPT in $INST_SCRIPTS; do \
bash ${INST_DIR}${SCRIPT}; \
done && \
$STARTUPDIR/set_user_permission.sh $HOME && \
rm -f /etc/X11/xinit/Xclients && \
chown 1000:0 $HOME && \
mkdir -p /home/kasm-user && \
chown -R 1000:0 /home/kasm-user && \
rm -Rf ${INST_DIR}
# Userspace Runtime
ENV HOME /home/kasm-user
WORKDIR $HOME
USER 1000
CMD ["--tail-log"]

View File

@ -0,0 +1,7 @@
# About This Image
This Image contains a browser-accessible Alpine 3.18 Desktop with various productivity and development apps installed.
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://info.kasmweb.com/hubfs/dockerhub/image-screenshots/alpine-317-desktop.png "Image Screenshot"

View File

@ -0,0 +1,9 @@
# Live Demo
<a href="https://app.kasmweb.com/#/cast/6708319219" target="_blank"><img src="https://info.kasmweb.com/hubfs/dockerhub/GIFs/ubuntu-jammy-desktop.gif" width="640" height="360"></a>
**Launch a real-time demo in a new browser window:** <a href="https://app.kasmweb.com/#/cast/6708319219" target="_blank">Live Demo</a>.
<a href="https://app.kasmweb.com/#/cast/6708319219" target="_blank"><img src="https://5856039.fs1.hubspotusercontent-na1.net/hub/5856039/hubfs/dockerhub/casting-buttons/UbuntuJammyDesktop.png" width="300" height="104"></a>
&lowast;*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.*

View File

@ -0,0 +1 @@
Alpine 3.18 desktop for Kasm Workspaces

View File

@ -0,0 +1,7 @@
# About This Image
This Image contains a browser-accessible Debian Bookworm Desktop with various productivity and development apps installed.
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://info.kasmweb.com/hubfs/dockerhub/image-screenshots/debian-bullseye-desktop.png "Image Screenshot"

View File

@ -0,0 +1,9 @@
# Live Demo
<a href="https://app.kasmweb.com/#/cast/6708319219" target="_blank"><img src="https://info.kasmweb.com/hubfs/dockerhub/GIFs/ubuntu-jammy-desktop.gif" width="640" height="360"></a>
**Launch a real-time demo in a new browser window:** <a href="https://app.kasmweb.com/#/cast/6708319219" target="_blank">Live Demo</a>.
<a href="https://app.kasmweb.com/#/cast/6708319219" target="_blank"><img src="https://5856039.fs1.hubspotusercontent-na1.net/hub/5856039/hubfs/dockerhub/casting-buttons/UbuntuJammyDesktop.png" width="300" height="104"></a>
&lowast;*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.*

View File

@ -0,0 +1 @@
Debian Bookworm desktop for Kasm Workspaces

View File

@ -0,0 +1,7 @@
# About This Image
This Image contains a browser-accessible Fedora 38 Desktop with various productivity and development apps installed.
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://info.kasmweb.com/hubfs/dockerhub/image-screenshots/fedora-37-desktop.png "Image Screenshot"

View File

@ -0,0 +1,9 @@
# Live Demo
<a href="https://app.kasmweb.com/#/cast/6708319219" target="_blank"><img src="https://info.kasmweb.com/hubfs/dockerhub/GIFs/ubuntu-jammy-desktop.gif" width="640" height="360"></a>
**Launch a real-time demo in a new browser window:** <a href="https://app.kasmweb.com/#/cast/6708319219" target="_blank">Live Demo</a>.
<a href="https://app.kasmweb.com/#/cast/6708319219" target="_blank"><img src="https://5856039.fs1.hubspotusercontent-na1.net/hub/5856039/hubfs/dockerhub/casting-buttons/UbuntuJammyDesktop.png" width="300" height="104"></a>
&lowast;*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.*

View File

@ -0,0 +1 @@
Fedora 38 desktop for Kasm Workspaces

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -ex
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf install -y ansible
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash
set -ex
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf install -y gimp
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all

View File

@ -7,7 +7,7 @@ if [ "$ARCH" == "amd64" ] ; then
exit 0
fi
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf install -y \
libreoffice-core \
libreoffice-writer \

View File

@ -8,7 +8,7 @@ if [ "$ARCH" == "arm64" ] ; then
fi
curl -L -o only_office.rpm "https://download.onlyoffice.com/install/desktop/editors/linux/onlyoffice-desktopeditors.$(arch).rpm"
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf localinstall -y only_office.rpm
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all

View File

@ -21,7 +21,7 @@ version=4.12.2
# This path may not be accurate once arm64 support arrives. Specifically I don't know if it will still be under x64
wget -q https://downloads.slack-edge.com/releases/linux/${version}/prod/x64/slack-${version}-0.1.fc21.x86_64.rpm -O slack.rpm
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf localinstall -y slack.rpm
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all

View File

@ -8,7 +8,7 @@ fi
rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf config-manager --add-repo https://download.sublimetext.com/rpm/stable/$(arch)/sublime-text.repo
dnf install -y sublime-text
if [ -z ${SKIP_CLEAN+x} ]; then

View File

@ -14,7 +14,7 @@ if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almali
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all
fi
elif [ "${DISTRO}" == "fedora37" ]; then
elif [[ "${DISTRO}" == @(fedora37|fedora38) ]]; then
dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo
dnf install -y terraform
if [ -z ${SKIP_CLEAN+x} ]; then

View File

@ -3,7 +3,7 @@ set -ex
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/x64/g')
wget -q https://update.code.visualstudio.com/latest/linux-rpm-${ARCH}/stable -O vs_code.rpm
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
wget -q https://update.code.visualstudio.com/latest/linux-rpm-${ARCH}/stable -O vs_code.rpm
dnf localinstall -y vs_code.rpm
else
@ -20,7 +20,7 @@ chown 1000:1000 $HOME/Desktop/code.desktop
rm vs_code.rpm
# Conveniences for python development
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf install -y python3-setuptools python3-virtualenv
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all

View File

@ -8,7 +8,7 @@ fi
wget -q https://zoom.us/client/latest/zoom_$(arch).rpm
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf localinstall -y zoom_$(arch).rpm
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all

View File

@ -9,8 +9,8 @@ if [[ "${DISTRO}" == @(debian|opensuse|ubuntu) ]] && [ ${ARCH} = 'amd64' ] && [
exit 0
fi
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf install -y chromium
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all
@ -121,7 +121,7 @@ if [ "${DISTRO}" != "opensuse" ] && ! grep -q "ID=debian" /etc/os-release && ! g
cp /usr/bin/chromium-browser /usr/bin/chromium
fi
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37) ]]; then
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37|fedora38) ]]; then
cat >> $HOME/.config/mimeapps.list <<EOF
[Default Applications]
x-scheme-handler/http=${REAL_BIN}.desktop

View File

@ -4,7 +4,7 @@ set -ex
# Distro package cleanup
if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then
yum clean all
elif [[ "${DISTRO}" == @(almalinux8|almalinux9|fedora37|oracle8|oracle9|rockylinux8|rockylinux9) ]]; then
elif [[ "${DISTRO}" == @(almalinux8|almalinux9|fedora37|fedora38|oracle8|oracle9|rockylinux8|rockylinux9) ]]; then
dnf clean all
elif [ "${DISTRO}" == "opensuse" ]; then
zypper clean --all

View File

@ -13,8 +13,8 @@ set_desktop_icon() {
}
echo "Install Firefox"
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf install -y firefox p11-kit
else
yum install -y firefox p11-kit
@ -68,8 +68,8 @@ for LANG in ${LANGS}; do
done
# Cleanup and install flash if supported
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all
fi
@ -101,14 +101,14 @@ else
fi
fi
if [[ "${DISTRO}" != @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37) ]]; then
if [[ "${DISTRO}" != @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37|fedora38) ]]; then
# Update firefox to utilize the system certificate store instead of the one that ships with firefox
rm -f /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|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [ "${DISTRO}" == "fedora37" ]; then
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
if [[ "${DISTRO}" == @(fedora37|fedora38) ]]; then
preferences_file=/usr/lib64/firefox/browser/defaults/preferences/firefox-redhat-default-prefs.js
else
preferences_file=/usr/lib64/firefox/browser/defaults/preferences/all-redhat.js
@ -132,7 +132,7 @@ pref("browser.aboutwelcome.enabled", false);
EOF
fi
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37) ]]; then
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37|fedora38) ]]; then
# Creating a default profile
firefox -headless -CreateProfile "kasm $HOME/.mozilla/firefox/kasm"
# Generate a certdb to be detected on squid start
@ -154,7 +154,7 @@ else
firefox -headless -CreateProfile "kasm $HOME/.mozilla/firefox/kasm"
fi
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37) ]]; then
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37|fedora38) ]]; then
set_desktop_icon
fi
@ -162,13 +162,13 @@ fi
# based off the installation path. Because that path will be static for our deployments we can assume the hash
# and thus assign our profile to the default for the installation
if [[ "${DISTRO}" != @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37) ]]; then
if [[ "${DISTRO}" != @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37|fedora38) ]]; then
cat >>$HOME/.mozilla/firefox/profiles.ini <<EOL
[Install4F96D1932A9F858E]
Default=kasm
Locked=1
EOL
elif [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37) ]]; then
elif [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|opensuse|fedora37|fedora38) ]]; then
cat >>$HOME/.mozilla/firefox/profiles.ini <<EOL
[Install11457493C5A56847]
Default=kasm

View File

@ -1,13 +1,13 @@
#!/usr/bin/env bash
set -ex
if [[ "${DISTRO}" == @(centos|oracle7|oracle8|oracle9|rockylinux9|rockylinux8|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(centos|oracle7|oracle8|oracle9|rockylinux9|rockylinux8|almalinux9|almalinux8|fedora37|fedora38) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux8|almalinux8) ]]; then
dnf install -y remmina remmina-plugins-rdp remmina-plugins-secret remmina-plugins-spice xdotool
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all
fi
elif [[ "${DISTRO}" == @(rockylinux9|oracle9|almalinux9|fedora37) ]]; then
elif [[ "${DISTRO}" == @(rockylinux9|oracle9|almalinux9|fedora37|fedora38) ]]; then
dnf install -y remmina remmina-plugins-rdp remmina-plugins-secret xdotool
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all

View File

@ -2,8 +2,8 @@
set -ex
# Install
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37) ]]; then
if [[ "${DISTRO}" == @(centos|oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|almalinux9|almalinux8|fedora37|fedora38) ]]; then
dnf install -y thunderbird
if [ -z ${SKIP_CLEAN+x} ]; then
dnf clean all
@ -48,7 +48,7 @@ Pin-Priority: 1001
fi
# Desktop icon
if [ "${DISTRO}" == "fedora37" ]; then
if [[ "${DISTRO}" == @(fedora37|fedora38) ]]; then
cp /usr/share/applications/mozilla-thunderbird.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/mozilla-thunderbird.desktop
else