QA-136 staggering builds for 1.17.0

This commit is contained in:
Huan Truong 2025-08-01 11:29:57 -05:00
parent bdf5b88c7d
commit ef86616831
No known key found for this signature in database
4 changed files with 337 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

@ -6,6 +6,7 @@ files: &UNIVERSAL_CHANGE_FILES
multiImages:
- name: audacity
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-audacity
changeFiles:
@ -13,6 +14,7 @@ multiImages:
- src/ubuntu/install/audacity/**
- name: chromium
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-chromium
changeFiles:
@ -22,6 +24,7 @@ multiImages:
- src/ubuntu/install/certificates/**
- name: deluge
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-deluge
changeFiles:
@ -29,6 +32,7 @@ multiImages:
- src/ubuntu/install/deluge/**
- name: doom
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-doom
changeFiles:
@ -36,6 +40,7 @@ multiImages:
- src/ubuntu/install/doom/**
- name: filezilla
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-filezilla
changeFiles:
@ -43,6 +48,7 @@ multiImages:
- src/ubuntu/install/filezilla/**
- name: firefox
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-firefox
changeFiles:
@ -52,6 +58,7 @@ multiImages:
- src/ubuntu/install/certificates/**
- name: gimp
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-gimp
changeFiles:
@ -59,6 +66,7 @@ multiImages:
- src/ubuntu/install/gimp/**
- name: inkscape
singleapp: true
runset: set-b
base: core-ubuntu-jammy
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-jammy
dockerfile: dockerfile-kasm-java-dev
changeFiles:
@ -80,6 +89,7 @@ multiImages:
- src/ubuntu/install/eclipse/**
- name: kasmos-desktop
singleapp: false
runset: set-b
base: core-kasmos
dockerfile: dockerfile-kasmos-desktop
changeFiles:
@ -100,6 +110,7 @@ multiImages:
- src/ubuntu/install/cleanup/**
- name: libre-office
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-libre-office
changeFiles:
@ -107,6 +118,7 @@ multiImages:
- src/ubuntu/install/libre_office/**
- name: nessus
singleapp: false
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-nessus
changeFiles:
@ -116,6 +128,7 @@ multiImages:
- src/ubuntu/install/cleanup/**
- name: opensuse-15-desktop
singleapp: false
runset: set-a
base: core-opensuse-15
dockerfile: dockerfile-kasm-opensuse-15-desktop
changeFiles:
@ -132,6 +145,7 @@ multiImages:
- src/opensuse/install/**
- name: oracle-8-desktop
singleapp: false
runset: set-b
base: core-oracle-8
dockerfile: dockerfile-kasm-oracle-8-desktop
changeFiles:
@ -146,6 +160,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: pinta
singleapp: true
runset: set-a
base: core-ubuntu-noble
dockerfile: dockerfile-kasm-pinta
changeFiles:
@ -153,6 +168,7 @@ multiImages:
- src/ubuntu/install/pinta/**
- name: qbittorrent
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-qbittorrent
changeFiles:
@ -160,6 +176,7 @@ multiImages:
- src/ubuntu/install/qbittorrent/**
- name: redroid
singleapp: false
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-redroid
changeFiles:
@ -175,6 +192,7 @@ multiImages:
- src/ubuntu/install/cleanup/**
- name: remmina
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-remmina
changeFiles:
@ -182,6 +200,7 @@ multiImages:
- src/ubuntu/install/remmina/**
- name: spiderfoot
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-spiderfoot
changeFiles:
@ -192,6 +211,7 @@ multiImages:
- src/ubuntu/install/cleanup/**
- name: sublime-text
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-sublime-text
changeFiles:
@ -199,6 +219,7 @@ multiImages:
- src/ubuntu/install/sublime_text/**
- name: telegram
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-telegram
changeFiles:
@ -207,6 +228,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- name: terminal
singleapp: false
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-terminal
changeFiles:
@ -216,6 +238,7 @@ multiImages:
- src/ubuntu/install/terminal/**
- name: thunderbird
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-thunderbird
changeFiles:
@ -223,6 +246,7 @@ multiImages:
- src/ubuntu/install/thunderbird/**
- name: tor-browser
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-tor-browser
changeFiles:
@ -231,6 +255,7 @@ multiImages:
- src/ubuntu/install/torbrowser/**
- name: ubuntu-jammy-desktop
singleapp: false
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-ubuntu-jammy-desktop
changeFiles:
@ -258,6 +283,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: ubuntu-jammy-desktop-vpn
singleapp: false
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-ubuntu-jammy-desktop-vpn
changeFiles:
@ -286,6 +312,7 @@ multiImages:
- src/ubuntu/install/vpn/**
- name: ubuntu-noble-desktop
singleapp: false
runset: set-a
base: core-ubuntu-noble
dockerfile: dockerfile-kasm-ubuntu-noble-desktop
changeFiles:
@ -313,6 +340,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: vlc
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-vlc
changeFiles:
@ -320,6 +348,7 @@ multiImages:
- src/ubuntu/install/vlc/**
- name: vs-code
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-vs-code
changeFiles:
@ -328,6 +357,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:
@ -342,6 +372,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:
@ -355,6 +386,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: alpine-319-desktop
singleapp: false
runset: set-b
base: core-alpine-319
dockerfile: dockerfile-kasm-alpine-319-desktop
changeFiles:
@ -364,6 +396,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:
@ -373,6 +406,7 @@ multiImages:
- src/alpine/install/**
- name: alpine-321-desktop
singleapp: false
runset: set-b
base: core-alpine-321
dockerfile: dockerfile-kasm-alpine-321-desktop
changeFiles:
@ -382,6 +416,7 @@ multiImages:
- src/alpine/install/**
- name: brave
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-brave
changeFiles:
@ -390,6 +425,7 @@ multiImages:
- src/ubuntu/install/brave/**
- name: debian-bullseye-desktop
singleapp: false
runset: set-b
base: core-debian-bullseye
dockerfile: dockerfile-kasm-debian-bullseye-desktop
changeFiles:
@ -415,6 +451,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: debian-bookworm-desktop
singleapp: false
runset: set-a
base: core-debian-bookworm
dockerfile: dockerfile-kasm-debian-bookworm-desktop
changeFiles:
@ -440,6 +477,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: fedora-39-desktop
singleapp: false
runset: set-b
base: core-fedora-39
dockerfile: dockerfile-kasm-fedora-39-desktop
changeFiles:
@ -453,6 +491,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: fedora-40-desktop
singleapp: false
runset: set-a
base: core-fedora-40
dockerfile: dockerfile-kasm-fedora-40-desktop
changeFiles:
@ -466,6 +505,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: kali-rolling-desktop
singleapp: false
runset: set-b
base: core-kali-rolling
dockerfile: dockerfile-kasm-kali-rolling-desktop
changeFiles:
@ -475,6 +515,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- name: maltego
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-maltego
changeFiles:
@ -483,6 +524,7 @@ multiImages:
- src/ubuntu/install/firefox/**
- name: minetest
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-minetest
changeFiles:
@ -490,6 +532,7 @@ multiImages:
- src/ubuntu/install/minetest/**
- name: oracle-9-desktop
singleapp: false
runset: set-a
base: core-oracle-9
dockerfile: dockerfile-kasm-oracle-9-desktop
changeFiles:
@ -503,6 +546,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: rhel-9-desktop
singleapp: false
runset: set-b
base: core-rhel-9
dockerfile: dockerfile-kasm-rhel-9-desktop
changeFiles:
@ -516,6 +560,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:
@ -526,6 +571,7 @@ multiImages:
- src/ubuntu/install/chromium/**
- name: retroarch
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-retroarch
changeFiles:
@ -533,6 +579,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:
@ -547,6 +594,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:
@ -560,6 +608,7 @@ multiImages:
- src/ubuntu/install/slack/**
- name: super-tux-kart
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-super-tux-kart
changeFiles:
@ -567,6 +616,7 @@ multiImages:
- src/ubuntu/install/super_tux_kart/**
- name: ubuntu-jammy-dind
singleapp: false
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-ubuntu-jammy-dind
changeFiles:
@ -581,6 +631,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:
@ -596,6 +647,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:
@ -610,6 +662,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:
@ -625,6 +678,7 @@ multiImages:
- src/ubuntu/install/chrome/**
- name: vivaldi
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-vivaldi
changeFiles:
@ -635,6 +689,7 @@ multiImages:
singleImages:
- name: blender
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-blender
changeFiles:
@ -642,6 +697,7 @@ singleImages:
- src/ubuntu/install/blender/**
- name: chrome
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-chrome
changeFiles:
@ -651,6 +707,7 @@ singleImages:
- src/ubuntu/install/chrome/**
- name: desktop
singleapp: false
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-desktop
changeFiles:
@ -660,6 +717,7 @@ singleImages:
- src/ubuntu/install/chrome/**
- name: desktop-deluxe
singleapp: false
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-desktop-deluxe
changeFiles:
@ -683,6 +741,7 @@ singleImages:
- src/ubuntu/install/chrome/**
- name: discord
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-discord
changeFiles:
@ -690,6 +749,7 @@ singleImages:
- src/ubuntu/install/discord/**
- name: edge
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-edge
changeFiles:
@ -698,6 +758,7 @@ singleImages:
- src/ubuntu/install/edge/**
- name: hunchly
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-hunchly
changeFiles:
@ -706,6 +767,7 @@ singleImages:
- src/ubuntu/install/hunchly/**
- name: insomnia
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-insomnia
changeFiles:
@ -713,12 +775,14 @@ singleImages:
- src/ubuntu/install/insomnia/**
- name: only-office
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-only-office
changeFiles:
- dockerfile-kasm-only-office
- name: postman
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-postman
changeFiles:
@ -727,6 +791,7 @@ singleImages:
- src/ubuntu/install/postman/**
- name: signal
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-signal
changeFiles:
@ -734,6 +799,7 @@ singleImages:
- src/ubuntu/install/signal/**
- name: slack
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-slack
changeFiles:
@ -744,6 +810,7 @@ singleImages:
- src/ubuntu/install/cleanup/**
- name: steam
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-steam
changeFiles:
@ -751,6 +818,7 @@ singleImages:
- src/ubuntu/install/steam/**
- name: tracelabs
singleapp: false
runset: set-b
base: core-kali-rolling
dockerfile: dockerfile-kasm-tracelabs
changeFiles:
@ -760,6 +828,7 @@ singleImages:
- src/ubuntu/install/tracelabs/**
- name: unityhub
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-unityhub
changeFiles:
@ -769,6 +838,7 @@ singleImages:
- src/ubuntu/install/unityhub/**
- name: zoom
singleapp: true
runset: set-b
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-zoom
changeFiles:
@ -777,6 +847,7 @@ singleImages:
- src/ubuntu/install/chrome/**
- name: zsnes
singleapp: true
runset: set-a
base: core-ubuntu-jammy
dockerfile: dockerfile-kasm-zsnes
changeFiles:
@ -784,6 +855,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