From 9d5747453e49914c8781094181cef5a7cebfab76 Mon Sep 17 00:00:00 2001 From: Ryan Kuba Date: Mon, 25 Sep 2023 09:41:12 +0000 Subject: [PATCH] Resolve KASM-5044 "Feature/ templated pipelines" --- .gitlab-ci.yml | 234 ++--------------- ci-scripts/build.sh | 12 +- ci-scripts/gitlab-ci.template | 237 +++++++++++++++++ ci-scripts/manifest.sh | 10 +- ci-scripts/readme.sh | 4 +- ci-scripts/template-gitlab.py | 32 +++ ci-scripts/template-vars.yaml | 244 ++++++++++++++++++ ci-scripts/test.sh | 18 +- dockerfile-kasm-core-alpine | 1 + .../install/fonts/install_custom_fonts.sh | 2 +- 10 files changed, 556 insertions(+), 238 deletions(-) create mode 100644 ci-scripts/gitlab-ci.template create mode 100644 ci-scripts/template-gitlab.py create mode 100644 ci-scripts/template-vars.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1d955e2..fbea0ee 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,227 +5,31 @@ image: docker:24.0.6 services: - docker:24.0.6-dind stages: - - readme - - revert - - build - - test - - manifest + - template + - run variables: - DOCKER_HOST: tcp://docker:2375 - DOCKER_TLS_CERTDIR: "" - DOCKER_AUTH_CONFIG: ${_DOCKER_AUTH_CONFIG} KASM_RELEASE: "1.14.0" TEST_INSTALLER: "https://kasm-static-content.s3.amazonaws.com/kasm_release_1.14.0.7f3582.tar.gz" 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')" -################ -# YAML anchors # -################ - -# Metadata format - name-part1|name-part2|baseimage|wallpaper|distro|dockerfile -.MULTI_ARCH_BUILDS: &MULTI_ARCH_BUILDS - - "ubuntu|bionic|ubuntu:18.04|bg_bionic.png|ubuntu|dockerfile-kasm-core" - - "ubuntu|focal|ubuntu:20.04|bg_focal.png|ubuntu|dockerfile-kasm-core" - - "ubuntu|jammy|ubuntu:22.04|bg_jammy.png|ubuntu|dockerfile-kasm-core" - - "debian|bullseye|debian:bullseye-slim|bg_debian.svg|debian|dockerfile-kasm-core" - - "debian|bookworm|debian:bookworm-slim|bg_debian.svg|debian|dockerfile-kasm-core" - - "kali|rolling|kalilinux/kali-rolling:latest|bg_kasm.png|kali|dockerfile-kasm-core" - - "oracle|8|oraclelinux:8|bg_oracle.png|oracle8|dockerfile-kasm-core-oracle" - - "oracle|9|oraclelinux:9|bg_oracle.png|oracle9|dockerfile-kasm-core-oracle" - - "rockylinux|8|rockylinux:8|bg_rocky.png|rockylinux8|dockerfile-kasm-core-oracle" - - "rockylinux|9|rockylinux:9|bg_rocky.png|rockylinux9|dockerfile-kasm-core-oracle" - - "almalinux|8|almalinux:8|bg_almalinux.png|almalinux8|dockerfile-kasm-core-oracle" - - "almalinux|9|almalinux:9|bg_almalinux.png|almalinux9|dockerfile-kasm-core-oracle" - - "opensuse|15|opensuse/leap:15.5|bg_opensuse.png|opensuse|dockerfile-kasm-core-suse" - - "fedora|37|fedora:37|bg_fedora.png|fedora37|dockerfile-kasm-core-fedora" - - "fedora|38|fedora:38|bg_fedora.png|fedora38|dockerfile-kasm-core-fedora" - - "parrotos|5|parrotsec/core:latest|bg_parrotos5.jpg|parrotos5|dockerfile-kasm-core" - - "alpine|317|alpine:3.17|bg_alpine.png|alpine|dockerfile-kasm-core-alpine" - - "alpine|318|alpine:3.18|bg_alpine.png|alpine|dockerfile-kasm-core-alpine" -.SINGLE_ARCH_BUILDS: &SINGLE_ARCH_BUILDS - - "cuda|focal|nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04|bg_focal.png|ubuntu|dockerfile-kasm-core" - - "centos|7|centos:centos7|bg_centos.png|centos|dockerfile-kasm-core-centos" - - "oracle|7|oraclelinux:7|bg_oracle.png|oracle7|dockerfile-kasm-core-oracle" - -############################################### -# Build Containers and push to cache endpoint # -############################################### -build_multi_containers: - stage: build +####################### +# Build from template # +####################### +template: + stage: template script: - - apk add bash - - bash ci-scripts/build.sh "${BUILD_META}" - except: - variables: - - $README_USERNAME - - $README_PASSWORD - - $DOCKERHUB_REVERT - - $REVERT_IS_ROLLING - tags: - - ${TAG} - retry: 1 - parallel: - matrix: - - TAG: [ oci-fixed-amd, oci-fixed-arm ] - BUILD_META: *MULTI_ARCH_BUILDS - -build_single_containers: - stage: build - script: - - apk add bash - - bash ci-scripts/build.sh "${BUILD_META}" - except: - variables: - - $README_USERNAME - - $README_PASSWORD - - $DOCKERHUB_REVERT - - $REVERT_IS_ROLLING + - apk add py3-jinja2 py3-yaml + - cd ci-scripts + - python3 template-gitlab.py tags: - oci-fixed-amd - retry: 1 - parallel: - matrix: - - BUILD_META: *SINGLE_ARCH_BUILDS - -###################################### -# Test containers and upload results # -###################################### -test_multi: - stage: test - when: always - script: - - apk add bash - - bash ci-scripts/test.sh "${BUILD_META}" "${ARCH}" "${EC2_LAUNCHER_ID}" "${EC2_LAUNCHER_SECRET}" - except: - variables: - - $README_USERNAME - - $README_PASSWORD - - $DOCKERHUB_REVERT - - $REVERT_IS_ROLLING - tags: - - oci-fixed-amd - retry: 1 - parallel: - matrix: - - ARCH: [ "x86_64", "aarch64" ] - BUILD_META: *MULTI_ARCH_BUILDS - -test_single: - stage: test - when: always - script: - - apk add bash - - bash ci-scripts/test.sh "${BUILD_META}" "x86_64" "${EC2_LAUNCHER_ID}" "${EC2_LAUNCHER_SECRET}" - except: - variables: - - $README_USERNAME - - $README_PASSWORD - - $DOCKERHUB_REVERT - - $REVERT_IS_ROLLING - tags: - - oci-fixed-amd - retry: 1 - parallel: - matrix: - - BUILD_META: *SINGLE_ARCH_BUILDS - -############################################ -# Manifest Containers if their test passed # -############################################ -manifest_multi: - stage: manifest - when: always - script: - - apk add bash - - bash ci-scripts/manifest.sh "${BUILD_META}" "multi" - except: - variables: - - $README_USERNAME - - $README_PASSWORD - - $DOCKERHUB_REVERT - - $REVERT_IS_ROLLING - tags: - - oci-fixed-amd - parallel: - matrix: - - BUILD_META: *MULTI_ARCH_BUILDS - -manifest_single: - stage: manifest - when: always - script: - - apk add bash - - bash ci-scripts/manifest.sh "${BUILD_META}" "single" - except: - variables: - - $README_USERNAME - - $README_PASSWORD - - $DOCKERHUB_REVERT - - $REVERT_IS_ROLLING - tags: - - oci-fixed-amd - parallel: - matrix: - - BUILD_META: *SINGLE_ARCH_BUILDS - -#################### -# Helper Functions # -#################### - -## Update Readmes ## -update_readmes_multi: - stage: readme - script: - - apk add bash - - bash ci-scripts/readme.sh "${BUILD_META}" - only: - variables: - - $README_USERNAME - - $README_PASSWORD - tags: - - oci-fixed-amd - parallel: - matrix: - - BUILD_META: *MULTI_ARCH_BUILDS - -update_readmes_single: - stage: readme - script: - - apk add bash - - bash ci-scripts/readme.sh "${BUILD_META}" - only: - variables: - - $README_USERNAME - - $README_PASSWORD - tags: - - oci-fixed-amd - parallel: - matrix: - - BUILD_META: *SINGLE_ARCH_BUILDS - -## Revert Images to specific build id ## -dockerhub_revert_multi: - stage: revert - script: - - /bin/bash ci-scripts/manifest.sh "${BUILD_META}" "multi" "${DOCKERHUB_REVERT}" "${REVERT_IS_ROLLING}" - only: - variables: - - $DOCKERHUB_REVERT - - $REVERT_IS_ROLLING - parallel: - matrix: - - BUILD_META: *MULTI_ARCH_BUILDS - -dockerhub_revert_single: - stage: revert - script: - - /bin/bash ci-scripts/manifest.sh "${BUILD_META}" "single" "${DOCKERHUB_REVERT}" "${REVERT_IS_ROLLING}" - only: - variables: - - $DOCKERHUB_REVERT - - $REVERT_IS_ROLLING - parallel: - matrix: - - BUILD_META: *SINGLE_ARCH_BUILDS + artifacts: + paths: + - gitlab-ci.yml +pipeline: + stage: run + trigger: + include: + - artifact: gitlab-ci.yml + job: template diff --git a/ci-scripts/build.sh b/ci-scripts/build.sh index 361589a..6ef2356 100755 --- a/ci-scripts/build.sh +++ b/ci-scripts/build.sh @@ -1,12 +1,12 @@ #!/bin/bash ## Parse input ## -NAME1=$(echo $1| awk -F'|' '{print $1}') -NAME2=$(echo $1| awk -F'|' '{print $2}') -BASE=$(echo $1| awk -F'|' '{print $3}') -BG=$(echo $1| awk -F'|' '{print $4}') -DISTRO=$(echo $1| awk -F'|' '{print $5}') -DOCKERFILE=$(echo $1| awk -F'|' '{print $6}') +NAME1=$1 +NAME2=$2 +BASE=$3 +BG=$4 +DISTRO=$5 +DOCKERFILE=$6 ## Build/Push image to cache endpoint by pipeline ID ## docker build \ diff --git a/ci-scripts/gitlab-ci.template b/ci-scripts/gitlab-ci.template new file mode 100644 index 0000000..68babc8 --- /dev/null +++ b/ci-scripts/gitlab-ci.template @@ -0,0 +1,237 @@ +############ +# Settings # +############ +image: docker:24.0.6 +services: + - docker:24.0.6-dind +stages: + - readme + - revert + - build + - test + - manifest +variables: + KASM_RELEASE: "{{ KASM_RELEASE }}" + TEST_INSTALLER: "{{ TEST_INSTALLER }}" + DOCKER_HOST: tcp://docker:2375 + DOCKER_TLS_CERTDIR: "" +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')" + +############################################### +# Build Containers and push to cache endpoint # +############################################### +{% for IMAGE in multiImages %} +build_{{ IMAGE.name1 }}_{{ IMAGE.name2 }}: + stage: build + script: + - apk add bash + - bash ci-scripts/build.sh "{{ IMAGE.name1 }}" "{{ IMAGE.name2 }}" "{{ IMAGE.base }}" "{{ IMAGE.bg }}" "{{ IMAGE.distro }}" "{{ IMAGE.dockerfile }}" + {% if FILE_LIMITS %}only: + changes: + {% for FILE in files %}- {{ FILE }} + {% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }} + {% endfor %}{% endif %} + except: + variables: + - $README_USERNAME + - $README_PASSWORD + - $DOCKERHUB_REVERT + - $REVERT_IS_ROLLING + tags: + - ${TAG} + retry: 1 + parallel: + matrix: + - TAG: [ oci-fixed-amd, oci-fixed-arm ] +{% endfor %} + +{% for IMAGE in singleImages %} +build_{{ IMAGE.name1 }}_{{ IMAGE.name2 }}: + stage: build + script: + - apk add bash + - bash ci-scripts/build.sh "{{ IMAGE.name1 }}" "{{ IMAGE.name2 }}" "{{ IMAGE.base }}" "{{ IMAGE.bg }}" "{{ IMAGE.distro }}" "{{ IMAGE.dockerfile }}" + {% if FILE_LIMITS %}only: + changes: + {% for FILE in files %}- {{ FILE }} + {% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }} + {% endfor %}{% endif %} + except: + variables: + - $README_USERNAME + - $README_PASSWORD + - $DOCKERHUB_REVERT + - $REVERT_IS_ROLLING + tags: + - oci-fixed-amd + retry: 1 +{% endfor %} + +###################################### +# Test containers and upload results # +###################################### +{% for IMAGE in multiImages %} +test_{{ IMAGE.name1 }}_{{ IMAGE.name2 }}: + stage: test + when: always + script: + - apk add bash + - bash ci-scripts/test.sh "{{ IMAGE.name1 }}" "{{ IMAGE.name2 }}" "{{ IMAGE.base }}" "{{ IMAGE.bg }}" "{{ IMAGE.distro }}" "{{ IMAGE.dockerfile }}" "${ARCH}" "${EC2_LAUNCHER_ID}" "${EC2_LAUNCHER_SECRET}" + {% if FILE_LIMITS %}only: + changes: + {% for FILE in files %}- {{ FILE }} + {% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }} + {% endfor %}{% endif %} + except: + variables: + - $README_USERNAME + - $README_PASSWORD + - $DOCKERHUB_REVERT + - $REVERT_IS_ROLLING + needs: + - build_{{ IMAGE.name1 }}_{{ IMAGE.name2 }} + when: on_success + tags: + - oci-fixed-amd + retry: 1 + parallel: + matrix: + - ARCH: [ "x86_64", "aarch64" ] +{% endfor %} + +{% for IMAGE in singleImages %} +test_{{ IMAGE.name1 }}_{{ IMAGE.name2 }}: + stage: test + when: always + script: + - apk add bash + - bash ci-scripts/test.sh "{{ IMAGE.name1 }}" "{{ IMAGE.name2 }}" "{{ IMAGE.base }}" "{{ IMAGE.bg }}" "{{ IMAGE.distro }}" "{{ IMAGE.dockerfile }}" "x86_64" "${EC2_LAUNCHER_ID}" "${EC2_LAUNCHER_SECRET}" + {% if FILE_LIMITS %}only: + changes: + {% for FILE in files %}- {{ FILE }} + {% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }} + {% endfor %}{% endif %} + except: + variables: + - $README_USERNAME + - $README_PASSWORD + - $DOCKERHUB_REVERT + - $REVERT_IS_ROLLING + needs: + - build_{{ IMAGE.name1 }}_{{ IMAGE.name2 }} + when: on_success + tags: + - oci-fixed-amd + retry: 1 +{% endfor %} + +############################################ +# Manifest Containers if their test passed # +############################################ +{% for IMAGE in multiImages %} +manifest_{{ IMAGE.name1 }}_{{ IMAGE.name2 }}: + stage: manifest + when: always + script: + - apk add bash + - bash ci-scripts/manifest.sh "{{ IMAGE.name1 }}" "{{ IMAGE.name2 }}" "multi" + {% if FILE_LIMITS %}only: + changes: + {% for FILE in files %}- {{ FILE }} + {% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }} + {% endfor %}{% endif %} + except: + variables: + - $README_USERNAME + - $README_PASSWORD + - $DOCKERHUB_REVERT + - $REVERT_IS_ROLLING + needs: + - test_{{ IMAGE.name1 }}_{{ IMAGE.name2 }} + when: on_success + tags: + - oci-fixed-amd +{% endfor %} + +{% for IMAGE in singleImages %} +manifest_{{ IMAGE.name1 }}_{{ IMAGE.name2 }}: + stage: manifest + when: always + script: + - apk add bash + - bash ci-scripts/manifest.sh "{{ IMAGE.name1 }}" "{{ IMAGE.name2 }}" "single" + {% if FILE_LIMITS %}only: + changes: + {% for FILE in files %}- {{ FILE }} + {% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }} + {% endfor %}{% endif %} + except: + variables: + - $README_USERNAME + - $README_PASSWORD + - $DOCKERHUB_REVERT + - $REVERT_IS_ROLLING + needs: + - test_{{ IMAGE.name1 }}_{{ IMAGE.name2 }} + when: on_success + tags: + - oci-fixed-amd +{% endfor %} + +#################### +# Helper Functions # +#################### + +## Update Readmes ## +{% for IMAGE in multiImages %} +update_readmes_{{ IMAGE.name1 }}_{{ IMAGE.name2 }}: + stage: readme + script: + - apk add bash + - bash ci-scripts/readme.sh "{{ IMAGE.name1 }}" "{{ IMAGE.name2 }}" + only: + variables: + - $README_USERNAME + - $README_PASSWORD + tags: + - oci-fixed-amd +{% endfor %} + +{% for IMAGE in singleImages %} +update_readmes_{{ IMAGE.name1 }}_{{ IMAGE.name2 }}: + stage: readme + script: + - apk add bash + - bash ci-scripts/readme.sh "{{ IMAGE.name1 }}" "{{ IMAGE.name2 }}" + only: + variables: + - $README_USERNAME + - $README_PASSWORD + tags: + - oci-fixed-amd +{% endfor %} + +## Revert Images to specific build id ## +{% for IMAGE in multiImages %} +dockerhub_revert_{{ IMAGE.name1 }}_{{ IMAGE.name2 }}: + stage: revert + script: + - /bin/bash ci-scripts/manifest.sh "{{ IMAGE.name1 }}" "{{ IMAGE.name2 }}" "multi" "${DOCKERHUB_REVERT}" "${REVERT_IS_ROLLING}" + only: + variables: + - $DOCKERHUB_REVERT + - $REVERT_IS_ROLLING +{% endfor %} + +{% for IMAGE in singleImages %} +dockerhub_revert_{{ IMAGE.name1 }}_{{ IMAGE.name2 }}: + stage: revert + script: + - /bin/bash ci-scripts/manifest.sh "{{ IMAGE.name1 }}" "{{ IMAGE.name2 }}" "single" "${DOCKERHUB_REVERT}" "${REVERT_IS_ROLLING}" + only: + variables: + - $DOCKERHUB_REVERT + - $REVERT_IS_ROLLING +{% endfor %} diff --git a/ci-scripts/manifest.sh b/ci-scripts/manifest.sh index 1528570..0833f1e 100755 --- a/ci-scripts/manifest.sh +++ b/ci-scripts/manifest.sh @@ -5,11 +5,11 @@ FAILED="false" # Ingest cli variables ## Parse input ## -NAME1=$(echo $1| awk -F'|' '{print $1}') -NAME2=$(echo $1| awk -F'|' '{print $2}') -TYPE=$2 -REVERT_PIPELINE_ID=$3 -IS_ROLLING=$4 +NAME1=$1 +NAME2=$2 +TYPE=$3 +REVERT_PIPELINE_ID=$4 +IS_ROLLING=$5 PULL_BRANCH=${SANITIZED_BRANCH} # Determine if this is a private or public build diff --git a/ci-scripts/readme.sh b/ci-scripts/readme.sh index 5fc39a9..ed4ee8d 100755 --- a/ci-scripts/readme.sh +++ b/ci-scripts/readme.sh @@ -1,8 +1,8 @@ #! /bin/bash ## Parse input ## -NAME1=$(echo $1| awk -F'|' '{print $1}') -NAME2=$(echo $1| awk -F'|' '{print $2}') +NAME1=$1 +NAME2=$2 ## Run readme updater ## docker run -v $PWD/docs:/docs \ diff --git a/ci-scripts/template-gitlab.py b/ci-scripts/template-gitlab.py new file mode 100644 index 0000000..ee909fa --- /dev/null +++ b/ci-scripts/template-gitlab.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 + +from jinja2 import Template +import yaml +import os + +# Determine if this is a feature branch +fileLimits = True +if os.getenv('SANITIZED_BRANCH').startswith('release') or os.getenv('SANITIZED_BRANCH') == 'develop': + fileLimits = False +if os.getenv('CI_PIPELINE_SOURCE') == 'schedule': + fileLimits = False + +# Read yaml file with variables +with open("template-vars.yaml", 'r') as stream: + templateVars = yaml.safe_load(stream) + templateVars['KASM_RELEASE'] = os.getenv('KASM_RELEASE') + templateVars['TEST_INSTALLER'] = os.getenv('TEST_INSTALLER') + templateVars['SANITIZED_BRANCH'] = os.getenv('SANITIZED_BRANCH') + templateVars['FILE_LIMITS'] = fileLimits + +# Read template file +with open("gitlab-ci.template", 'r') as stream: + template = stream.read() + +# Template the variables in +jinjaTemplate = Template(template) +gitlabCi = jinjaTemplate.render(templateVars) + +# Write out the gitlab file +with open('../gitlab-ci.yml', 'w') as out: + out.write(gitlabCi + '\n') diff --git a/ci-scripts/template-vars.yaml b/ci-scripts/template-vars.yaml new file mode 100644 index 0000000..e89a78e --- /dev/null +++ b/ci-scripts/template-vars.yaml @@ -0,0 +1,244 @@ +files: &UNIVERSAL_CHANGE_FILES + - src/common/** + - src/ubuntu/install/audio/** + - src/ubuntu/install/audio_input/** + - src/ubuntu/install/cleanup/** + - src/ubuntu/install/cursors/** + - src/ubuntu/install/emblems/** + - src/ubuntu/install/fonts/** + - src/ubuntu/install/gamepad/** + - src/ubuntu/install/kasm_upload_server/** + - src/ubuntu/install/kasm_vnc/** + - src/ubuntu/install/langpacks/** + - src/ubuntu/install/maximize_script/** + - src/ubuntu/install/package_rules/** + - src/ubuntu/install/printer/** + - src/ubuntu/install/profile_sync/** + - src/ubuntu/install/squid/** + - src/ubuntu/install/tools/** + - src/ubuntu/install/webcam/** + - ci-scripts/** + - .gitlab-ci.yml + +multiImages: + - name1: ubuntu + name2: bionic + base: ubuntu:18.04 + bg: bg_bionic.png + distro: ubuntu + dockerfile: dockerfile-kasm-core + changeFiles: + - dockerfile-kasm-core + - src/ubuntu/xfce/** + - src/ubuntu/nvidia/** + - src/ubuntu/sysbox/** + - src/ubuntu/virtualgl/** + - name1: ubuntu + name2: focal + base: ubuntu:20.04 + bg: bg_focal.png + distro: ubuntu + dockerfile: dockerfile-kasm-core + changeFiles: + - dockerfile-kasm-core + - src/ubuntu/xfce/** + - src/ubuntu/nvidia/** + - src/ubuntu/sysbox/** + - src/ubuntu/virtualgl/** + - name1: ubuntu + name2: jammy + base: ubuntu:22.04 + bg: bg_jammy.png + distro: ubuntu + dockerfile: dockerfile-kasm-core + changeFiles: + - dockerfile-kasm-core + - src/ubuntu/xfce/** + - src/ubuntu/nvidia/** + - src/ubuntu/sysbox/** + - src/ubuntu/virtualgl/** + - name1: debian + name2: bullseye + base: debian:bullseye-slim + bg: bg_debian.svg + distro: debian + dockerfile: dockerfile-kasm-core + changeFiles: + - dockerfile-kasm-core + - src/debian/** + - src/ubuntu/sysbox/** + - src/ubuntu/virtualgl/** + - name1: debian + name2: bookworm + base: debian:bookworm-slim + bg: bg_debian.svg + distro: debian + dockerfile: dockerfile-kasm-core + changeFiles: + - dockerfile-kasm-core + - src/debian/** + - src/ubuntu/nvidia/** + - src/ubuntu/sysbox/** + - src/ubuntu/virtualgl/** + - name1: kali + name2: rolling + base: kalilinux/kali-rolling:latest + bg: bg_kasm.png + distro: kali + dockerfile: dockerfile-kasm-core + changeFiles: + - dockerfile-kasm-core + - src/kali/** + - src/ubuntu/install/extra/kali.sh + - src/ubuntu/nvidia/** + - src/ubuntu/sysbox/** + - src/ubuntu/virtualgl/** + - name1: oracle + name2: 8 + base: oraclelinux:8 + bg: bg_oracle.png + distro: oracle8 + dockerfile: dockerfile-kasm-core-oracle + changeFiles: + - dockerfile-kasm-core-oracle + - src/oracle8/** + - src/ubuntu/sysbox/** + - name1: oracle + name2: 9 + base: oraclelinux:9 + bg: bg_oracle.png + distro: oracle9 + dockerfile: dockerfile-kasm-core-oracle + changeFiles: + - dockerfile-kasm-core-oracle + - src/oracle9/** + - src/ubuntu/sysbox/** + - name1: rockylinux + name2: 8 + base: rockylinux:8 + bg: bg_rocky.png + distro: rockylinux8 + dockerfile: dockerfile-kasm-core-oracle + changeFiles: + - dockerfile-kasm-core-oracle + - src/rockylinux8/** + - src/ubuntu/sysbox/** + - name1: rockylinux + name2: 9 + base: rockylinux:9 + bg: bg_rocky.png + distro: rockylinux9 + dockerfile: dockerfile-kasm-core-oracle + changeFiles: + - dockerfile-kasm-core-oracle + - src/rockylinux9/** + - src/ubuntu/sysbox/** + - name1: almalinux + name2: 8 + base: almalinux:8 + bg: bg_almalinux.png + distro: almalinux8 + dockerfile: dockerfile-kasm-core-oracle + changeFiles: + - dockerfile-kasm-core-oracle + - src/almalinux8/** + - src/ubuntu/sysbox/** + - name1: almalinux + name2: 9 + base: almalinux:9 + bg: bg_almalinux.png + distro: almalinux9 + dockerfile: dockerfile-kasm-core-oracle + changeFiles: + - dockerfile-kasm-core-oracle + - src/almalinux9/** + - src/ubuntu/sysbox/** + - name1: opensuse + name2: 15 + base: opensuse/leap:15.5 + bg: bg_opensuse.png + distro: opensuse + dockerfile: dockerfile-kasm-core-suse + changeFiles: + - dockerfile-kasm-core-suse + - src/opensuse/** + - src/ubuntu/sysbox/** + - name1: fedora + name2: 37 + base: fedora:37 + bg: bg_fedora.png + distro: fedora37 + dockerfile: dockerfile-kasm-core-fedora + changeFiles: + - dockerfile-kasm-core-fedora + - src/fedora37/** + - name1: fedora + name2: 38 + base: fedora:38 + bg: bg_fedora.png + distro: fedora38 + dockerfile: dockerfile-kasm-core-fedora + changeFiles: + - dockerfile-kasm-core-fedora + - src/fedora37/** + - name1: parrotos + name2: 5 + base: parrotsec/core:latest + bg: bg_parrotos5.jpg + distro: parrotos5 + dockerfile: dockerfile-kasm-core + changeFiles: + - dockerfile-kasm-core + - src/parrotos5/** + - src/ubuntu/nvidia/** + - src/ubuntu/sysbox/** + - src/ubuntu/virtualgl/** + - name1: alpine + name2: 317 + base: alpine:3.17 + bg: bg_alpine.png + distro: alpine + dockerfile: dockerfile-kasm-core-alpine + changeFiles: + - dockerfile-kasm-core-alpine + - src/alpine/** + - name1: alpine + name2: 318 + base: alpine:3.18 + bg: bg_alpine.png + distro: alpine + dockerfile: dockerfile-kasm-core-alpine + changeFiles: + - dockerfile-kasm-core-alpine + - src/alpine/** +singleImages: + - name1: cuda + name2: focal + base: nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04 + bg: bg_focal.png + distro: ubuntu + dockerfile: dockerfile-kasm-core + changeFiles: + - dockerfile-kasm-core + - src/ubuntu/xfce/** + - src/ubuntu/nvidia/** + - src/ubuntu/sysbox/** + - src/ubuntu/virtualgl/** + - name1: centos + name2: 7 + base: centos:centos7 + bg: bg_centos.png + distro: centos + dockerfile: dockerfile-kasm-core-centos + changeFiles: + - dockerfile-kasm-core-centos + - src/centos/** + - name1: oracle + name2: 7 + base: oraclelinux:7 + bg: bg_oracle.png + distro: oracle7 + dockerfile: dockerfile-kasm-core-oracle + changeFiles: + - dockerfile-kasm-core-oracle + - src/oracle7/** diff --git a/ci-scripts/test.sh b/ci-scripts/test.sh index d2ad290..7a05f5c 100755 --- a/ci-scripts/test.sh +++ b/ci-scripts/test.sh @@ -2,15 +2,15 @@ set -e ## Parse input ## -NAME1=$(echo $1| awk -F'|' '{print $1}') -NAME2=$(echo $1| awk -F'|' '{print $2}') -BASE=$(echo $1| awk -F'|' '{print $3}') -BG=$(echo $1| awk -F'|' '{print $4}') -DISTRO=$(echo $1| awk -F'|' '{print $5}') -DOCKERFILE=$(echo $1| awk -F'|' '{print $6}') -ARCH=$2 -AWS_ID=$3 -AWS_KEY=$4 +NAME1=$1 +NAME2=$2 +BASE=$3 +BG=$4 +DISTRO=$5 +DOCKERFILE=$6 +ARCH=$7 +AWS_ID=$8 +AWS_KEY=$9 # Setup aws cli export AWS_ACCESS_KEY_ID="${AWS_ID}" diff --git a/dockerfile-kasm-core-alpine b/dockerfile-kasm-core-alpine index 2a5d2ac..f7a9483 100644 --- a/dockerfile-kasm-core-alpine +++ b/dockerfile-kasm-core-alpine @@ -16,6 +16,7 @@ RUN ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g') && \ wget --progress=dot:giga "https://kasmweb-build-artifacts.s3.amazonaws.com/kasm-squid-builder/f2b6ac26e7f91240e57d6d6e1dad4cc2704445ee/output/kasm-squid-builder_alpine_${ARCH}.tar.gz" RUN tar -xzf kasm-squid-builder_*.tar.gz -C / +### Layer from squid changes FROM install_tools as base_layer ### Environment config diff --git a/src/ubuntu/install/fonts/install_custom_fonts.sh b/src/ubuntu/install/fonts/install_custom_fonts.sh index 7578f3d..4693e08 100644 --- a/src/ubuntu/install/fonts/install_custom_fonts.sh +++ b/src/ubuntu/install/fonts/install_custom_fonts.sh @@ -44,7 +44,7 @@ elif [[ "${DISTRO}" == @(oracle8|oracle9|rockylinux9|rockylinux8|almalinux9|alma done elif [ "${DISTRO}" == "opensuse" ]; then zypper addrepo -G \ - https://ftp.lysator.liu.se/pub/opensuse/repositories/M17N:/fonts/openSUSE_Leap_15.3/ fonts-x86_64 + https://download.opensuse.org/repositories/M17N:/fonts/15.5/ fonts-x86_64 zypper install -ny \ glibc-i18ndata \ glibc-locale \