mirror of
https://github.com/kasmtech/workspaces-images.git
synced 2024-11-25 01:23:07 +01:00
Resolve KASM-3718 "Feature/ gate images 2"
This commit is contained in:
parent
7df17d7a22
commit
01a5d3267e
1212
.gitlab-ci.yml
1212
.gitlab-ci.yml
File diff suppressed because it is too large
Load Diff
24
ci-scripts/build.sh
Executable file
24
ci-scripts/build.sh
Executable file
@ -0,0 +1,24 @@
|
||||
#!/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}')
|
||||
|
||||
# Determine if we are using private images
|
||||
if [ ${USE_PRIVATE_IMAGES} -eq 1 ]; then
|
||||
BASE=${BASE}-private
|
||||
fi
|
||||
|
||||
# Determine if this is a rolling build
|
||||
if [ "${CI_PIPELINE_SOURCE}" == "schedule" ]; then
|
||||
BASE_TAG=${BASE_TAG}-rolling
|
||||
fi
|
||||
|
||||
## 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
104
ci-scripts/manifest.sh
Executable 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
12
ci-scripts/readme.sh
Executable 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
|
223
ci-scripts/test.sh
Executable file
223
ci-scripts/test.sh
Executable file
@ -0,0 +1,223 @@
|
||||
#!/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
|
||||
|
||||
# Exit 1 if test failed or file does not exist
|
||||
STATUS=$(curl -sL https://kasm-ci.s3.amazonaws.com/${CI_COMMIT_SHA}/${ARCH}/kasmweb/image-cache-private/${ARCH}-${NAME}-${SANITIZED_BRANCH}-${CI_PIPELINE_ID}/ci-status.yml | awk -F'"' '{print $2}')
|
||||
if [ ! "${STATUS}" == "PASS" ]; then
|
||||
exit 1
|
||||
fi
|
55
dockerfile-kasm-alpine-318-desktop
Normal file
55
dockerfile-kasm-alpine-318-desktop
Normal 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"]
|
57
dockerfile-kasm-debian-bookworm-desktop
Normal file
57
dockerfile-kasm-debian-bookworm-desktop
Normal 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"]
|
53
dockerfile-kasm-fedora-38-desktop
Normal file
53
dockerfile-kasm-fedora-38-desktop
Normal 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"]
|
7
docs/alpine-318-desktop/README.md
Normal file
7
docs/alpine-318-desktop/README.md
Normal 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"
|
9
docs/alpine-318-desktop/demo.txt
Normal file
9
docs/alpine-318-desktop/demo.txt
Normal 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>
|
||||
|
||||
∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.*
|
1
docs/alpine-318-desktop/description.txt
Normal file
1
docs/alpine-318-desktop/description.txt
Normal file
@ -0,0 +1 @@
|
||||
Alpine 3.18 desktop for Kasm Workspaces
|
7
docs/debian-bookworm-desktop/README.md
Normal file
7
docs/debian-bookworm-desktop/README.md
Normal 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"
|
9
docs/debian-bookworm-desktop/demo.txt
Normal file
9
docs/debian-bookworm-desktop/demo.txt
Normal 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>
|
||||
|
||||
∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.*
|
1
docs/debian-bookworm-desktop/description.txt
Normal file
1
docs/debian-bookworm-desktop/description.txt
Normal file
@ -0,0 +1 @@
|
||||
Debian Bookworm desktop for Kasm Workspaces
|
7
docs/fedora-38-desktop/README.md
Normal file
7
docs/fedora-38-desktop/README.md
Normal 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"
|
9
docs/fedora-38-desktop/demo.txt
Normal file
9
docs/fedora-38-desktop/demo.txt
Normal 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>
|
||||
|
||||
∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.*
|
1
docs/fedora-38-desktop/description.txt
Normal file
1
docs/fedora-38-desktop/description.txt
Normal file
@ -0,0 +1 @@
|
||||
Fedora 38 desktop for Kasm Workspaces
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user