mirror of
https://github.com/kasmtech/workspaces-core-images.git
synced 2025-06-25 22:41:47 +02:00
Resolve KASM-5044 "Feature/ templated pipelines"
This commit is contained in:
parent
b1c06a853b
commit
9d5747453e
234
.gitlab-ci.yml
234
.gitlab-ci.yml
@ -5,227 +5,31 @@ image: docker:24.0.6
|
|||||||
services:
|
services:
|
||||||
- docker:24.0.6-dind
|
- docker:24.0.6-dind
|
||||||
stages:
|
stages:
|
||||||
- readme
|
- template
|
||||||
- revert
|
- run
|
||||||
- build
|
|
||||||
- test
|
|
||||||
- manifest
|
|
||||||
variables:
|
variables:
|
||||||
DOCKER_HOST: tcp://docker:2375
|
|
||||||
DOCKER_TLS_CERTDIR: ""
|
|
||||||
DOCKER_AUTH_CONFIG: ${_DOCKER_AUTH_CONFIG}
|
|
||||||
KASM_RELEASE: "1.14.0"
|
KASM_RELEASE: "1.14.0"
|
||||||
TEST_INSTALLER: "https://kasm-static-content.s3.amazonaws.com/kasm_release_1.14.0.7f3582.tar.gz"
|
TEST_INSTALLER: "https://kasm-static-content.s3.amazonaws.com/kasm_release_1.14.0.7f3582.tar.gz"
|
||||||
before_script:
|
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')"
|
- export SANITIZED_BRANCH="$(echo $CI_COMMIT_REF_NAME | sed -r 's#^release/##' | sed 's/\//_/g')"
|
||||||
|
|
||||||
################
|
#######################
|
||||||
# YAML anchors #
|
# Build from template #
|
||||||
################
|
#######################
|
||||||
|
template:
|
||||||
# Metadata format - name-part1|name-part2|baseimage|wallpaper|distro|dockerfile
|
stage: template
|
||||||
.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
|
|
||||||
script:
|
script:
|
||||||
- apk add bash
|
- apk add py3-jinja2 py3-yaml
|
||||||
- bash ci-scripts/build.sh "${BUILD_META}"
|
- cd ci-scripts
|
||||||
except:
|
- python3 template-gitlab.py
|
||||||
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
|
|
||||||
tags:
|
tags:
|
||||||
- oci-fixed-amd
|
- oci-fixed-amd
|
||||||
retry: 1
|
artifacts:
|
||||||
parallel:
|
paths:
|
||||||
matrix:
|
- gitlab-ci.yml
|
||||||
- BUILD_META: *SINGLE_ARCH_BUILDS
|
pipeline:
|
||||||
|
stage: run
|
||||||
######################################
|
trigger:
|
||||||
# Test containers and upload results #
|
include:
|
||||||
######################################
|
- artifact: gitlab-ci.yml
|
||||||
test_multi:
|
job: template
|
||||||
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
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
## Parse input ##
|
## Parse input ##
|
||||||
NAME1=$(echo $1| awk -F'|' '{print $1}')
|
NAME1=$1
|
||||||
NAME2=$(echo $1| awk -F'|' '{print $2}')
|
NAME2=$2
|
||||||
BASE=$(echo $1| awk -F'|' '{print $3}')
|
BASE=$3
|
||||||
BG=$(echo $1| awk -F'|' '{print $4}')
|
BG=$4
|
||||||
DISTRO=$(echo $1| awk -F'|' '{print $5}')
|
DISTRO=$5
|
||||||
DOCKERFILE=$(echo $1| awk -F'|' '{print $6}')
|
DOCKERFILE=$6
|
||||||
|
|
||||||
## Build/Push image to cache endpoint by pipeline ID ##
|
## Build/Push image to cache endpoint by pipeline ID ##
|
||||||
docker build \
|
docker build \
|
||||||
|
237
ci-scripts/gitlab-ci.template
Normal file
237
ci-scripts/gitlab-ci.template
Normal file
@ -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 %}
|
@ -5,11 +5,11 @@ FAILED="false"
|
|||||||
|
|
||||||
# Ingest cli variables
|
# Ingest cli variables
|
||||||
## Parse input ##
|
## Parse input ##
|
||||||
NAME1=$(echo $1| awk -F'|' '{print $1}')
|
NAME1=$1
|
||||||
NAME2=$(echo $1| awk -F'|' '{print $2}')
|
NAME2=$2
|
||||||
TYPE=$2
|
TYPE=$3
|
||||||
REVERT_PIPELINE_ID=$3
|
REVERT_PIPELINE_ID=$4
|
||||||
IS_ROLLING=$4
|
IS_ROLLING=$5
|
||||||
PULL_BRANCH=${SANITIZED_BRANCH}
|
PULL_BRANCH=${SANITIZED_BRANCH}
|
||||||
|
|
||||||
# Determine if this is a private or public build
|
# Determine if this is a private or public build
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
|
|
||||||
## Parse input ##
|
## Parse input ##
|
||||||
NAME1=$(echo $1| awk -F'|' '{print $1}')
|
NAME1=$1
|
||||||
NAME2=$(echo $1| awk -F'|' '{print $2}')
|
NAME2=$2
|
||||||
|
|
||||||
## Run readme updater ##
|
## Run readme updater ##
|
||||||
docker run -v $PWD/docs:/docs \
|
docker run -v $PWD/docs:/docs \
|
||||||
|
32
ci-scripts/template-gitlab.py
Normal file
32
ci-scripts/template-gitlab.py
Normal file
@ -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')
|
244
ci-scripts/template-vars.yaml
Normal file
244
ci-scripts/template-vars.yaml
Normal file
@ -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/**
|
@ -2,15 +2,15 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
## Parse input ##
|
## Parse input ##
|
||||||
NAME1=$(echo $1| awk -F'|' '{print $1}')
|
NAME1=$1
|
||||||
NAME2=$(echo $1| awk -F'|' '{print $2}')
|
NAME2=$2
|
||||||
BASE=$(echo $1| awk -F'|' '{print $3}')
|
BASE=$3
|
||||||
BG=$(echo $1| awk -F'|' '{print $4}')
|
BG=$4
|
||||||
DISTRO=$(echo $1| awk -F'|' '{print $5}')
|
DISTRO=$5
|
||||||
DOCKERFILE=$(echo $1| awk -F'|' '{print $6}')
|
DOCKERFILE=$6
|
||||||
ARCH=$2
|
ARCH=$7
|
||||||
AWS_ID=$3
|
AWS_ID=$8
|
||||||
AWS_KEY=$4
|
AWS_KEY=$9
|
||||||
|
|
||||||
# Setup aws cli
|
# Setup aws cli
|
||||||
export AWS_ACCESS_KEY_ID="${AWS_ID}"
|
export AWS_ACCESS_KEY_ID="${AWS_ID}"
|
||||||
|
@ -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"
|
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 /
|
RUN tar -xzf kasm-squid-builder_*.tar.gz -C /
|
||||||
|
|
||||||
|
### Layer from squid changes
|
||||||
FROM install_tools as base_layer
|
FROM install_tools as base_layer
|
||||||
|
|
||||||
### Environment config
|
### Environment config
|
||||||
|
@ -44,7 +44,7 @@ elif [[ "${DISTRO}" == @(oracle8|oracle9|rockylinux9|rockylinux8|almalinux9|alma
|
|||||||
done
|
done
|
||||||
elif [ "${DISTRO}" == "opensuse" ]; then
|
elif [ "${DISTRO}" == "opensuse" ]; then
|
||||||
zypper addrepo -G \
|
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 \
|
zypper install -ny \
|
||||||
glibc-i18ndata \
|
glibc-i18ndata \
|
||||||
glibc-locale \
|
glibc-locale \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user