Merge branch 'feature/QA-136_staggering_builds_for_1.16.0' into 'release/1.16.0'

QA-136 staggering builds for 1.16.0

See merge request kasm-technologies/internal/workspaces-images!311
This commit is contained in:
Richard Koliser
2025-08-04 18:20:07 +00:00
4 changed files with 341 additions and 127 deletions

View File

@ -21,28 +21,37 @@ before_script:
#######################
template:
stage: template
rules:
- when: always
script:
- apk add py3-jinja2 py3-yaml
- cd ci-scripts
- python3 template-gitlab.py
tags:
- oci-fixed-amd
- oci-amd-scheduled
artifacts:
paths:
- gitlab-ci.yml
pipeline:
stage: run
except:
variables:
- $README_USERNAME_RUN
- $README_PASSWORD_RUN
- $QUAY_API_KEY_RUN
- $DOCKERHUB_REVERT_RUN
- $REVERT_IS_ROLLING_RUN
rules:
- if: >
$README_USERNAME ||
$README_PASSWORD ||
$QUAY_API_KEY ||
$DOCKERHUB_REVERT ||
$REVERT_IS_ROLLING
when: never
- when: on_success
variables:
PARENT_PIPELINE_SOURCE: "$CI_PIPELINE_SOURCE"
RUN_SET: "$RUN_SET"
trigger:
include:
- artifact: gitlab-ci.yml
job: template
pipeline_readme:
stage: run
only:
@ -56,6 +65,7 @@ pipeline_readme:
include:
- artifact: gitlab-ci.yml
job: template
pipeline_readme_quay:
stage: run
only:
@ -67,6 +77,7 @@ pipeline_readme_quay:
include:
- artifact: gitlab-ci.yml
job: template
pipeline_revert:
stage: run
only:

View File

@ -23,7 +23,6 @@ before_script:
- if [ "$CI_COMMIT_REF_PROTECTED" == "true" ]; then docker login --username $QUAY_USERNAME --password $QUAY_PASSWORD quay.io; fi
- if [ "$CI_COMMIT_REF_PROTECTED" == "true" ]; then docker login --username $GHCR_USERNAME --password $GHCR_PASSWORD ghcr.io; fi
- export SANITIZED_BRANCH="$(echo $CI_COMMIT_REF_NAME | sed -r 's#^release/##' | sed 's/\//_/g')"
- export BASE_TAG="{{ BASE_TAG }}"
###############################################
# Build Containers and push to cache endpoint #
@ -31,49 +30,55 @@ before_script:
{% for IMAGE in multiImages %}
build_{{ IMAGE.name }}:
stage: build
script:
- apk add bash
- bash ci-scripts/build.sh "{{ IMAGE.name }}" "{{ IMAGE.base }}" "{{ IMAGE.dockerfile }}"
{% if FILE_LIMITS %}only:
changes:
rules:
- if: >
$README_USERNAME ||
$README_PASSWORD ||
$QUAY_API_KEY ||
$DOCKERHUB_REVERT ||
$REVERT_IS_ROLLING
when: never
{% if FILE_LIMITS %}- changes:
{% for FILE in files %}- {{ FILE }}
{% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }}
{% endfor %}{% endif %}
except:
variables:
- $README_USERNAME
- $README_PASSWORD
- $QUAY_API_KEY
- $DOCKERHUB_REVERT
- $REVERT_IS_ROLLING
- if: $PARENT_PIPELINE_SOURCE == "schedule" && $RUN_SET != "{{ IMAGE.runset }}"
when: never
- when: on_success
script:
- apk add bash
- bash ci-scripts/build.sh "{{ IMAGE.name }}" "{{ IMAGE.base }}" "{{ IMAGE.dockerfile }}"
tags:
- ${TAG}
retry: 1
parallel:
matrix:
- TAG: [ oci-fixed-amd, oci-fixed-arm ]
- TAG: [ oci-amd-scheduled, oci-arm-scheduled ]
{% endfor %}
{% for IMAGE in singleImages %}
build_{{ IMAGE.name }}:
stage: build
script:
- apk add bash
- bash ci-scripts/build.sh "{{ IMAGE.name }}" "{{ IMAGE.base }}" "{{ IMAGE.dockerfile }}"
{% if FILE_LIMITS %}only:
changes:
rules:
- if: >
$README_USERNAME ||
$README_PASSWORD ||
$QUAY_API_KEY ||
$DOCKERHUB_REVERT ||
$REVERT_IS_ROLLING
when: never
{% if FILE_LIMITS %}- changes:
{% for FILE in files %}- {{ FILE }}
{% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }}
{% endfor %}{% endif %}
except:
variables:
- $README_USERNAME
- $README_PASSWORD
- $QUAY_API_KEY
- $DOCKERHUB_REVERT
- $REVERT_IS_ROLLING
- if: $PARENT_PIPELINE_SOURCE == "schedule" && $RUN_SET != "{{ IMAGE.runset }}"
when: never
- when: on_success
script:
- apk add bash
- bash ci-scripts/build.sh "{{ IMAGE.name }}" "{{ IMAGE.base }}" "{{ IMAGE.dockerfile }}"
tags:
- oci-fixed-amd
- oci-amd-scheduled
retry: 1
{% endfor %}
@ -83,27 +88,28 @@ build_{{ IMAGE.name }}:
{% for IMAGE in multiImages %}
test_{{ IMAGE.name }}:
stage: test
when: always
script:
- apk add bash
- bash ci-scripts/test.sh "{{ IMAGE.name }}" "{{ IMAGE.base }}" "{{ IMAGE.dockerfile }}" "${ARCH}" "${EC2_LAUNCHER_ID}" "${EC2_LAUNCHER_SECRET}"
{% if FILE_LIMITS %}only:
changes:
rules:
- if: >
$README_USERNAME ||
$README_PASSWORD ||
$QUAY_API_KEY ||
$DOCKERHUB_REVERT ||
$REVERT_IS_ROLLING
when: never
- if: $PARENT_PIPELINE_SOURCE == "schedule" && $RUN_SET != "{{ IMAGE.runset }}"
when: never
{% if FILE_LIMITS %}- changes:
{% for FILE in files %}- {{ FILE }}
{% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }}
{% endfor %}{% endif %}
except:
variables:
- $README_USERNAME
- $README_PASSWORD
- $QUAY_API_KEY
- $DOCKERHUB_REVERT
- $REVERT_IS_ROLLING
- when: on_success
script:
- apk add bash
- bash ci-scripts/test.sh "{{ IMAGE.name }}" "{{ IMAGE.base }}" "{{ IMAGE.dockerfile }}" "${ARCH}" "${EC2_LAUNCHER_ID}" "${EC2_LAUNCHER_SECRET}"
needs:
- build_{{ IMAGE.name }}
when: on_success
tags:
- oci-fixed-amd
- oci-amd-scheduled
retry: 1
parallel:
matrix:
@ -113,27 +119,28 @@ test_{{ IMAGE.name }}:
{% for IMAGE in singleImages %}
test_{{ IMAGE.name }}:
stage: test
when: always
script:
- apk add bash
- bash ci-scripts/test.sh "{{ IMAGE.name }}" "{{ IMAGE.base }}" "{{ IMAGE.dockerfile }}" "x86_64" "${EC2_LAUNCHER_ID}" "${EC2_LAUNCHER_SECRET}"
{% if FILE_LIMITS %}only:
changes:
rules:
- if: >
$README_USERNAME ||
$README_PASSWORD ||
$QUAY_API_KEY ||
$DOCKERHUB_REVERT ||
$REVERT_IS_ROLLING
when: never
- if: $PARENT_PIPELINE_SOURCE == "schedule" && $RUN_SET != "{{ IMAGE.runset }}"
when: never
{% if FILE_LIMITS %}- changes:
{% for FILE in files %}- {{ FILE }}
{% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }}
{% endfor %}{% endif %}
except:
variables:
- $README_USERNAME
- $README_PASSWORD
- $QUAY_API_KEY
- $DOCKERHUB_REVERT
- $REVERT_IS_ROLLING
- when: on_success
script:
- apk add bash
- bash ci-scripts/test.sh "{{ IMAGE.name }}" "{{ IMAGE.base }}" "{{ IMAGE.dockerfile }}" "x86_64" "${EC2_LAUNCHER_ID}" "${EC2_LAUNCHER_SECRET}"
needs:
- build_{{ IMAGE.name }}
when: on_success
tags:
- oci-fixed-amd
- oci-amd-scheduled
retry: 1
{% endfor %}
@ -143,63 +150,117 @@ test_{{ IMAGE.name }}:
{% for IMAGE in multiImages %}
manifest_{{ IMAGE.name }}:
stage: manifest
when: always
rules:
- if: >
$README_USERNAME ||
$README_PASSWORD ||
$QUAY_API_KEY ||
$DOCKERHUB_REVERT ||
$REVERT_IS_ROLLING
when: never
- if: $PARENT_PIPELINE_SOURCE == "schedule" && $RUN_SET != "{{ IMAGE.runset }}"
when: never
{% if FILE_LIMITS %}- changes:
{% for FILE in files %}- {{ FILE }}
{% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }}
{% endfor %}{% endif %}
- when: on_success
variables:
SCHEDULED: "{{ SCHEDULED }}"
SCHEDULE_NAME: "{{ SCHEDULE_NAME }}"
script:
- apk add bash tar
- bash ci-scripts/manifest.sh "{{ IMAGE.name }}" "multi"{% if IMAGE.singleapp %}
- bash ci-scripts/app-layer.sh "{{ IMAGE.name }}" "multi" "{{ IMAGE.base }}"{% endif %}
{% 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
- $QUAY_API_KEY
- $DOCKERHUB_REVERT
- $REVERT_IS_ROLLING
- bash ci-scripts/manifest.sh "{{ IMAGE.name }}" "multi"
# Disabling app layer build due to feature not being used
#{% if IMAGE.singleapp %}
#- bash ci-scripts/app-layer.sh "{{ IMAGE.name }}" "multi" "{{ IMAGE.base }}"{% endif %}
needs:
- test_{{ IMAGE.name }}
when: on_success
retry: 1
tags:
- oci-fixed-amd
- oci-amd-scheduled
{% endfor %}
{% for IMAGE in singleImages %}
manifest_{{ IMAGE.name }}:
stage: manifest
when: always
rules:
- if: >
$README_USERNAME ||
$README_PASSWORD ||
$QUAY_API_KEY ||
$DOCKERHUB_REVERT ||
$REVERT_IS_ROLLING
when: never
- if: $PARENT_PIPELINE_SOURCE == "schedule" && $RUN_SET != "{{ IMAGE.runset }}"
when: never
{% if FILE_LIMITS %}- changes:
{% for FILE in files %}- {{ FILE }}
{% endfor %}{% for FILE in IMAGE.changeFiles %}- {{ FILE }}
{% endfor %}{% endif %}
- when: on_success
variables:
SCHEDULED: "{{ SCHEDULED }}"
SCHEDULE_NAME: "{{ SCHEDULE_NAME }}"
script:
- apk add bash tar
- bash ci-scripts/manifest.sh "{{ IMAGE.name }}" "single"{% if IMAGE.singleapp %}
- bash ci-scripts/app-layer.sh "{{ IMAGE.name }}" "single" "{{ IMAGE.base }}"{% endif %}
{% 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
- $QUAY_API_KEY
- $DOCKERHUB_REVERT
- $REVERT_IS_ROLLING
- bash ci-scripts/manifest.sh "{{ IMAGE.name }}" "single"
# Disabling app layer build due to feature not being used
#{% if IMAGE.singleapp %}
#- bash ci-scripts/app-layer.sh "{{ IMAGE.name }}" "single" "{{ IMAGE.base }}"{% endif %}
needs:
- test_{{ IMAGE.name }}
when: on_success
retry: 1
tags:
- oci-fixed-amd
- oci-amd-scheduled
{% endfor %}
#############################
# Manifest for Weekly Build #
#############################
{% for IMAGE in multiImages %}
weekly_manifest_{{ IMAGE.name }}:
stage: manifest
rules:
- if: >
$README_USERNAME ||
$README_PASSWORD ||
$QUAY_API_KEY ||
$DOCKERHUB_REVERT ||
$REVERT_IS_ROLLING
when: never
- if: $PARENT_PIPELINE_SOURCE == "schedule" && $RUN_SET == "schedule"
when: always
- when: never
script:
- apk add bash tar
- bash ci-scripts/weekly-manifest.sh "{{ IMAGE.name }}" "multi"
retry: 1
tags:
- oci-amd-scheduled
{% endfor %}
{% for IMAGE in singleImages %}
weekly_manifest_{{ IMAGE.name }}:
stage: manifest
rules:
- if: >
$README_USERNAME ||
$README_PASSWORD ||
$QUAY_API_KEY ||
$DOCKERHUB_REVERT ||
$REVERT_IS_ROLLING
when: never
- if: $PARENT_PIPELINE_SOURCE == "schedule" && $RUN_SET == "schedule"
when: always
- when: never
script:
- apk add bash tar
- bash ci-scripts/weekly-manifest.sh "{{ IMAGE.name }}" "single"
retry: 1
tags:
- oci-amd-scheduled
{% endfor %}
####################
@ -210,81 +271,85 @@ manifest_{{ IMAGE.name }}:
{% for IMAGE in multiImages %}
update_readmes_{{ IMAGE.name }}:
stage: readme
rules:
- if: >
$README_USERNAME &&
$README_PASSWORD
when: always
script:
- apk add bash
- bash ci-scripts/readme.sh "{{ IMAGE.name }}"
only:
variables:
- $README_USERNAME
- $README_PASSWORD
tags:
- oci-fixed-amd
- oci-amd-scheduled
{% endfor %}
{% for IMAGE in singleImages %}
update_readmes_{{ IMAGE.name }}:
stage: readme
rules:
- if: >
$README_USERNAME &&
$README_PASSWORD
when: always
script:
- apk add bash
- bash ci-scripts/readme.sh "{{ IMAGE.name }}"
only:
variables:
- $README_USERNAME
- $README_PASSWORD
tags:
- oci-fixed-amd
- oci-amd-scheduled
{% endfor %}
## Update Quay Readmes ##
{% for IMAGE in multiImages %}
update_quay_readmes_{{ IMAGE.name }}:
stage: readme
rules:
- if: $QUAY_API_KEY
when: always
script:
- apk add bash
- bash ci-scripts/quay_readme.sh "{{ IMAGE.name }}"
only:
variables:
- $QUAY_API_KEY
tags:
- oci-fixed-amd
- oci-amd-scheduled
{% endfor %}
{% for IMAGE in singleImages %}
update_quay_readmes_{{ IMAGE.name }}:
stage: readme
rules:
- if: $QUAY_API_KEY
when: always
script:
- apk add bash
- bash ci-scripts/quay_readme.sh "{{ IMAGE.name }}"
only:
variables:
- $QUAY_API_KEY
tags:
- oci-fixed-amd
- oci-amd-scheduled
{% endfor %}
## Revert Images to specific build id ##
{% for IMAGE in multiImages %}
dockerhub_revert_{{ IMAGE.name }}:
stage: revert
rules:
- if: >
$DOCKERHUB_REVERT &&
$REVERT_IS_ROLLING
when: always
script:
- /bin/bash ci-scripts/manifest.sh "{{ IMAGE.name }}" "multi" "${DOCKERHUB_REVERT}" "${REVERT_IS_ROLLING}"
only:
variables:
- $DOCKERHUB_REVERT
- $REVERT_IS_ROLLING
tags:
- oci-fixed-amd
- oci-amd-scheduled
{% endfor %}
{% for IMAGE in singleImages %}
dockerhub_revert_{{ IMAGE.name }}:
stage: revert
rules:
- if: >
$DOCKERHUB_REVERT &&
$REVERT_IS_ROLLING
when: always
script:
- /bin/bash ci-scripts/manifest.sh "{{ IMAGE.name }}" "single" "${DOCKERHUB_REVERT}" "${REVERT_IS_ROLLING}"
only:
variables:
- $DOCKERHUB_REVERT
- $REVERT_IS_ROLLING
tags:
- oci-fixed-amd
- oci-amd-scheduled
{% endfor %}

View File

@ -5,6 +5,7 @@ files: &UNIVERSAL_CHANGE_FILES
multiImages:
- name: audacity
runset: set-a
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-audacity
@ -12,6 +13,7 @@ multiImages:
- dockerfile-kasm-audacity
- src/ubuntu/install/audacity/**
- name: chromium
runset: set-b
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-chromium
@ -21,6 +23,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- src/ubuntu/install/certificates/**
- name: deluge
runset: set-a
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-deluge
@ -28,6 +31,7 @@ multiImages:
- dockerfile-kasm-deluge
- src/ubuntu/install/deluge/**
- name: doom
runset: set-b
singleapp: true
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-doom
@ -36,6 +40,7 @@ multiImages:
- src/ubuntu/install/doom/**
- name: filezilla
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-filezilla
changeFiles:
@ -43,6 +48,7 @@ multiImages:
- src/ubuntu/install/filezilla/**
- name: firefox
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-firefox
changeFiles:
@ -52,6 +58,7 @@ multiImages:
- src/ubuntu/install/certificates/**
- name: gimp
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-gimp
changeFiles:
@ -59,6 +66,7 @@ multiImages:
- src/ubuntu/install/gimp/**
- name: inkscape
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-inkscape
changeFiles:
@ -66,6 +74,7 @@ multiImages:
- src/ubuntu/install/inkscape/**
- name: java-dev
singleapp: false
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-java-dev
changeFiles:
@ -80,6 +89,7 @@ multiImages:
- src/ubuntu/install/eclipse/**
- name: libre-office
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-libre-office
changeFiles:
@ -87,6 +97,7 @@ multiImages:
- src/ubuntu/install/libre_office/**
- name: nessus
singleapp: false
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-nessus
changeFiles:
@ -96,6 +107,7 @@ multiImages:
- src/ubuntu/install/cleanup/**
- name: opensuse-15-desktop
singleapp: false
runset: set-b
base: core-opensuse-15
dockerfile: dockerfile-kasm-opensuse-15-desktop
changeFiles:
@ -112,6 +124,7 @@ multiImages:
- src/opensuse/install/**
- name: oracle-8-desktop
singleapp: false
runset: set-a
base: core-oracle-8
dockerfile: dockerfile-kasm-oracle-8-desktop
changeFiles:
@ -126,6 +139,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: pinta
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-pinta
changeFiles:
@ -133,12 +147,14 @@ multiImages:
- src/ubuntu/install/pinta/**
- name: qbittorrent
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-qbittorrent
changeFiles:
- dockerfile-kasm-qbittorrent
- src/ubuntu/install/qbittorrent/**
- name: redroid
runset: set-b
singleapp: false
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-redroid
@ -155,6 +171,7 @@ multiImages:
- src/ubuntu/install/cleanup/**
- name: remmina
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-remmina
changeFiles:
@ -162,6 +179,7 @@ multiImages:
- src/ubuntu/install/remmina/**
- name: spiderfoot
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-spiderfoot
changeFiles:
@ -172,6 +190,7 @@ multiImages:
- src/ubuntu/install/cleanup/**
- name: sublime-text
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-sublime-text
changeFiles:
@ -179,6 +198,7 @@ multiImages:
- src/ubuntu/install/sublime_text/**
- name: telegram
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-telegram
changeFiles:
@ -187,6 +207,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- name: terminal
singleapp: false
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-terminal
changeFiles:
@ -196,6 +217,7 @@ multiImages:
- src/ubuntu/install/terminal/**
- name: thunderbird
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-thunderbird
changeFiles:
@ -203,6 +225,7 @@ multiImages:
- src/ubuntu/install/thunderbird/**
- name: tor-browser
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-tor-browser
changeFiles:
@ -211,6 +234,7 @@ multiImages:
- src/ubuntu/install/torbrowser/**
- name: ubuntu-focal-desktop
singleapp: false
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-ubuntu-focal-desktop
changeFiles:
@ -238,6 +262,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: ubuntu-focal-desktop-vpn
singleapp: false
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-ubuntu-focal-desktop-vpn
changeFiles:
@ -266,6 +291,7 @@ multiImages:
- src/ubuntu/install/vpn/**
- name: ubuntu-jammy-desktop
singleapp: false
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-ubuntu-jammy-desktop
changeFiles:
@ -293,6 +319,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: ubuntu-noble-desktop
singleapp: false
runset: set-a
base: core-ubuntu-noble
dockerfile: dockerfile-kasm-ubuntu-noble-desktop
changeFiles:
@ -320,6 +347,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: vlc
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-vlc
changeFiles:
@ -327,6 +355,7 @@ multiImages:
- src/ubuntu/install/vlc/**
- name: vs-code
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-vs-code
changeFiles:
@ -335,6 +364,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- name: almalinux-8-desktop
singleapp: false
runset: set-b
base: core-almalinux-8
dockerfile: dockerfile-kasm-almalinux-8-desktop
changeFiles:
@ -349,6 +379,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: almalinux-9-desktop
singleapp: false
runset: set-a
base: core-almalinux-9
dockerfile: dockerfile-kasm-almalinux-9-desktop
changeFiles:
@ -362,6 +393,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: alpine-317-desktop
singleapp: false
runset: set-b
base: core-alpine-317
dockerfile: dockerfile-kasm-alpine-317-desktop
changeFiles:
@ -371,6 +403,7 @@ multiImages:
- src/alpine/install/**
- name: alpine-318-desktop
singleapp: false
runset: set-a
base: core-alpine-318
dockerfile: dockerfile-kasm-alpine-318-desktop
changeFiles:
@ -380,6 +413,7 @@ multiImages:
- src/alpine/install/**
- name: alpine-319-desktop
singleapp: false
runset: set-b
base: core-alpine-319
dockerfile: dockerfile-kasm-alpine-319-desktop
changeFiles:
@ -389,6 +423,7 @@ multiImages:
- src/alpine/install/**
- name: alpine-320-desktop
singleapp: false
runset: set-a
base: core-alpine-320
dockerfile: dockerfile-kasm-alpine-320-desktop
changeFiles:
@ -398,6 +433,7 @@ multiImages:
- src/alpine/install/**
- name: brave
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-brave
changeFiles:
@ -406,6 +442,7 @@ multiImages:
- src/ubuntu/install/brave/**
- name: debian-bullseye-desktop
singleapp: false
runset: set-a
base: core-debian-bullseye
dockerfile: dockerfile-kasm-debian-bullseye-desktop
changeFiles:
@ -431,6 +468,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: debian-bookworm-desktop
singleapp: false
runset: set-b
base: core-debian-bookworm
dockerfile: dockerfile-kasm-debian-bookworm-desktop
changeFiles:
@ -456,6 +494,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: fedora-39-desktop
singleapp: false
runset: set-a
base: core-fedora-39
dockerfile: dockerfile-kasm-fedora-39-desktop
changeFiles:
@ -469,6 +508,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: fedora-40-desktop
singleapp: false
runset: set-b
base: core-fedora-40
dockerfile: dockerfile-kasm-fedora-40-desktop
changeFiles:
@ -482,6 +522,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: kali-rolling-desktop
singleapp: false
runset: set-a
base: core-kali-rolling
dockerfile: dockerfile-kasm-kali-rolling-desktop
changeFiles:
@ -491,6 +532,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- name: maltego
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-maltego
changeFiles:
@ -499,6 +541,7 @@ multiImages:
- src/ubuntu/install/firefox/**
- name: minetest
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-minetest
changeFiles:
@ -506,6 +549,7 @@ multiImages:
- src/ubuntu/install/minetest/**
- name: oracle-9-desktop
singleapp: false
runset: set-b
base: core-oracle-9
dockerfile: dockerfile-kasm-oracle-9-desktop
changeFiles:
@ -519,6 +563,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: parrotos-6-desktop
singleapp: false
runset: set-a
base: core-parrotos-6
dockerfile: dockerfile-kasm-parrotos-6-desktop
changeFiles:
@ -529,6 +574,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- name: retroarch
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-retroarch
changeFiles:
@ -536,6 +582,7 @@ multiImages:
- src/ubuntu/install/retroarch/**
- name: rockylinux-8-desktop
singleapp: false
runset: set-a
base: core-rockylinux-8
dockerfile: dockerfile-kasm-rockylinux-8-desktop
changeFiles:
@ -550,6 +597,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: rockylinux-9-desktop
singleapp: false
runset: set-b
base: core-rockylinux-9
dockerfile: dockerfile-kasm-rockylinux-9-desktop
changeFiles:
@ -563,6 +611,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: super-tux-kart
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-super-tux-kart
changeFiles:
@ -570,6 +619,7 @@ multiImages:
- src/ubuntu/install/super_tux_kart/**
- name: ubuntu-focal-dind
singleapp: false
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-ubuntu-focal-dind
changeFiles:
@ -584,6 +634,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- name: ubuntu-focal-dind-rootless
singleapp: false
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-ubuntu-focal-dind-rootless
changeFiles:
@ -598,6 +649,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- name: ubuntu-jammy-dind
singleapp: false
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-ubuntu-jammy-dind
changeFiles:
@ -612,6 +664,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- name: ubuntu-jammy-dind-rootless
singleapp: false
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-ubuntu-jammy-dind-rootless
changeFiles:
@ -627,6 +680,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- name: ubuntu-noble-dind
singleapp: false
runset: set-b
base: core-ubuntu-noble
dockerfile: dockerfile-kasm-ubuntu-noble-dind
changeFiles:
@ -641,6 +695,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- name: ubuntu-noble-dind-rootless
singleapp: false
runset: set-a
base: core-ubuntu-noble
dockerfile: dockerfile-kasm-ubuntu-noble-dind-rootless
changeFiles:
@ -656,6 +711,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- name: vivaldi
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-vivaldi
changeFiles:
@ -666,6 +722,7 @@ multiImages:
singleImages:
- name: blender
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-blender
changeFiles:
@ -673,6 +730,7 @@ singleImages:
- src/ubuntu/install/blender/**
- name: chrome
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-chrome
changeFiles:
@ -682,6 +740,7 @@ singleImages:
- src/ubuntu/install/chrome/**
- name: desktop
singleapp: false
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-desktop
changeFiles:
@ -691,6 +750,7 @@ singleImages:
- src/ubuntu/install/chrome/**
- name: desktop-deluxe
singleapp: false
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-desktop-deluxe
changeFiles:
@ -714,6 +774,7 @@ singleImages:
- src/ubuntu/install/chrome/**
- name: discord
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-discord
changeFiles:
@ -721,6 +782,7 @@ singleImages:
- src/ubuntu/install/discord/**
- name: edge
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-edge
changeFiles:
@ -729,6 +791,7 @@ singleImages:
- src/ubuntu/install/edge/**
- name: hunchly
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-hunchly
changeFiles:
@ -737,6 +800,7 @@ singleImages:
- src/ubuntu/install/hunchly/**
- name: insomnia
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-insomnia
changeFiles:
@ -744,12 +808,14 @@ singleImages:
- src/ubuntu/install/insomnia/**
- name: only-office
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-only-office
changeFiles:
- dockerfile-kasm-only-office
- name: kasmos-desktop
singleapp: false
runset: set-b
base: core-kasmos
dockerfile: dockerfile-kasmos-desktop
changeFiles:
@ -770,6 +836,7 @@ singleImages:
- src/ubuntu/install/cleanup/**
- name: postman
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-postman
changeFiles:
@ -778,6 +845,7 @@ singleImages:
- src/ubuntu/install/postman/**
- name: remnux-focal-desktop
singleapp: false
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-remnux-focal-desktop
changeFiles:
@ -786,6 +854,7 @@ singleImages:
- src/ubuntu/install/remnux/**
- name: signal
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-signal
changeFiles:
@ -793,6 +862,7 @@ singleImages:
- src/ubuntu/install/signal/**
- name: slack
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-slack
changeFiles:
@ -803,6 +873,7 @@ singleImages:
- src/ubuntu/install/cleanup/**
- name: steam
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-steam
changeFiles:
@ -810,6 +881,7 @@ singleImages:
- src/ubuntu/install/steam/**
- name: tracelabs
singleapp: false
runset: set-b
base: core-kali-rolling
dockerfile: dockerfile-kasm-tracelabs
changeFiles:
@ -819,6 +891,7 @@ singleImages:
- src/ubuntu/install/tracelabs/**
- name: unityhub
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-unityhub
changeFiles:
@ -828,6 +901,7 @@ singleImages:
- src/ubuntu/install/unityhub/**
- name: zoom
singleapp: true
runset: set-b
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-zoom
changeFiles:
@ -836,6 +910,7 @@ singleImages:
- src/ubuntu/install/chrome/**
- name: zsnes
singleapp: true
runset: set-a
base: core-ubuntu-focal
dockerfile: dockerfile-kasm-zsnes
changeFiles:
@ -843,6 +918,7 @@ singleImages:
- src/ubuntu/install/zsnes/**
- name: forensic-osint
singleapp: false
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-forensic-osint
changeFiles:

View File

@ -0,0 +1,62 @@
#!/bin/bash
REGISTRY_MIRRORS=("quay.io" "ghcr.io")
NAME=$1
TYPE=$2
BASE=$3
APPS="kasm-apps"
SANITIZED_BRANCH_DAILY=${SANITIZED_BRANCH}-rolling-daily
SANITIZED_BRANCH=${SANITIZED_BRANCH}-rolling-weekly
tagImage() {
docker pull "$1"
docker tag "$1" "$2"
docker push "$2"
}
manifest() {
docker manifest push --purge "$1" || :
docker manifest create "$1" "$2":x86_64-"$3" "$2":aarch64-"$3"
docker manifest annotate "$1" "$2":aarch64-"$3" --os linux --arch arm64 --variant v8
docker manifest push --purge "$1"
}
# Manifest for multi pull and push for single arch
# Will pull the daily rolling images and retag them to weekly
if [[ "${TYPE}" == "multi" ]]; then
# Pulling and retagging daily image
tagImage "${ORG_NAME}/${NAME}:x86_64-${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${NAME}:x86_64-${SANITIZED_BRANCH}"
tagImage "${ORG_NAME}/${NAME}:aarch64-${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${NAME}:aarch64-${SANITIZED_BRANCH}"
# Manifest tag
manifest "${ORG_NAME}/${NAME}:${SANITIZED_BRANCH}" "${ORG_NAME}/${NAME}" "${SANITIZED_BRANCH}"
for MIRROR in "${REGISTRY_MIRRORS[@]}"; do
tagImage "${ORG_NAME}/${NAME}:x86_64-${SANITIZED_BRANCH_DAILY}" "${MIRROR}/${MIRROR_ORG_NAME}/${NAME}:x86_64-${SANITIZED_BRANCH}"
tagImage "${ORG_NAME}/${NAME}:aarch64-${SANITIZED_BRANCH_DAILY}" "${MIRROR}/${MIRROR_ORG_NAME}/${NAME}:aarch64-${SANITIZED_BRANCH}"
manifest "${MIRROR}/${MIRROR_ORG_NAME}/${NAME}:${SANITIZED_BRANCH}" "${MIRROR}/${MIRROR_ORG_NAME}/${NAME}" "${SANITIZED_BRANCH}"
done
# Single App Layer Images
# Disabling Single App Layer due to functionality not being used currently
# if [ ! -z "${BASE}" ];then
# tagImage "${ORG_NAME}/${APPS}:x86_64-${BASE}-${NAME}-${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${APPS}:x86_64-${BASE}-${NAME}-${SANITIZED_BRANCH}"
# tagImage "${ORG_NAME}/${APPS}:aarch64-${BASE}-${NAME}-${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${APPS}:aarch64-${BASE}-${NAME}-${SANITIZED_BRANCH}"
# manifest "${ORG_NAME}/${APPS}:${BASE}-${NAME}-${SANITIZED_BRANCH}" "${ORG_NAME}/${APPS}" "${BASE}-${NAME}-${SANITIZED_BRANCH}"
# fi
# Single arch image just pull and push
else
tagImage "${ORG_NAME}/${NAME}:${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${NAME}:${SANITIZED_BRANCH}"
for MIRROR in "${REGISTRY_MIRRORS[@]}"; do
tagImage "${ORG_NAME}/${NAME}:${SANITIZED_BRANCH_DAILY}" "${MIRROR}/${MIRROR_ORG_NAME}/${NAME}:${SANITIZED_BRANCH}"
done
# Single App Layer Images
# Disabling Single App Layer due to functionality not being used currently
# if [ ! -z "${BASE}" ];then
# tagImage "${ORG_NAME}/${APPS}:${BASE}-${NAME}-${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${APPS}:x86_64-${BASE}-${NAME}-${SANITIZED_BRANCH}"
# fi
fi