From ff092761003034ba02b4e99917aab217ed4fe7fc Mon Sep 17 00:00:00 2001 From: Huan Truong Date: Tue, 3 Jun 2025 15:47:17 -0500 Subject: [PATCH 01/33] QA-21 switched runners from AWS to OCI --- .gitlab-ci.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2b3973d..47bd30f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,6 +2,15 @@ image: docker services: - docker:dind +variables: + DOCKER_HOST: tcp://docker:2375 + DOCKER_TLS_CERTDIR: "" + DOCKER_AUTH_CONFIG: ${_DOCKER_AUTH_CONFIG} + +default: + tags: + - oci-fixed-amd + stages: - upload @@ -17,5 +26,3 @@ push_to_s3: - aws s3 cp ${CI_COMMIT_SHA}.tar.gz s3://${S3_BUCKET}/wizard/ - aws s3 cp ${CI_COMMIT_SHA}.tar.gz s3://${S3_BUCKET}/wizard/${SANITIZED_BRANCH}.tar.gz - curl --request POST --header "PRIVATE-TOKEN:${GITLAB_API_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/statuses/${CI_COMMIT_SHA}?state=success&name=build-url&target_url=${S3_URL}" - tags: - - aws-autoscale From 81279dcf88a64d2dff96fac6d1fc72b66c8f424a Mon Sep 17 00:00:00 2001 From: "ryan.kuba" Date: Tue, 1 Nov 2022 15:44:15 -0700 Subject: [PATCH 02/33] KASM-3512 adding select dropdown during installation to force a GPU on all containers --- index.js | 23 ++++++++++++++++++++++- public/js/index.js | 12 ++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 46778a2..cd7c119 100644 --- a/index.js +++ b/index.js @@ -19,6 +19,7 @@ var arch = os.arch().replace('x64', 'amd64'); var baseUrl = process.env.SUBFOLDER || '/'; var version = process.env.VERSION || 'stable'; var port = process.env.KASM_PORT || '443'; +const { spawn } = require('node:child_process'); var EULA; var images; // Grab installer variables @@ -68,6 +69,15 @@ io.on('connection', async function (socket) { imagesD.images[image].hidden = true; } } + if (installSettings.forceGpu !== 'disabled') { + let card = installSettings.forceGpu.slice(-1); + let render = (Number(card) + 128).toString(); + console.log(card, render); + for await (let image of Object.keys(images.images)) { + imagesD.images[image]['run_config'] = '{"environment":{"KASM_EGL_CARD":"/dev/dri/card' + card + '","KASM_RENDERD":"/dev/dri/renderD' + render + '"},"devices":["/dev/dri/card' + card + ':/dev/dri/card' + card + ':rwm","/dev/dri/renderD' + render + ':/dev/dri/renderD' + render + ':rwm"]}' + imagesD.images[image]['exec_config'] = '{"first_launch":{"user":"root","cmd": "bash -c \'chown -R kasm-user:kasm-user /dev/dri/*\'"}}' + } + } let yamlStr = yaml.dump(imagesD); await fsw.writeFile('/kasm_release/conf/database/seed_data/default_images_' + arch + '.yaml', yamlStr); let cmd = pty.spawn('/bin/bash', installFlags); @@ -92,7 +102,18 @@ io.on('connection', async function (socket) { dashinfo['port'] = port; socket.emit('renderdash', dashinfo); } else { - socket.emit('renderinstall', [EULA, images]); + let gpuData = []; + let gpuCmd = spawn('/gpuinfo.sh'); + gpuCmd.stdout.on('data', function(data) { + gpuData.push(data); + }); + gpuCmd.on('close', function(code) { + if (code == 0) { + socket.emit('renderinstall', [EULA, images, JSON.parse(gpuData.join(''))]); + } else { + socket.emit('renderinstall', [EULA, images, {}]); + } + }); } } // Disable wizard diff --git a/public/js/index.js b/public/js/index.js index d908e91..f22ce80 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -1,6 +1,7 @@ // Variables var EULA; var images; +var gpus; var term; var installImages = []; var installSettings = {}; @@ -73,6 +74,7 @@ function renderInstall(data) { titleChange('EULA'); EULA = data[0]; images = data[1]; + gpus = data[2]; let EULADiv = $('
', {id: 'EULA'}).text(EULA); $('#container').append(EULADiv); let EULAButton = $('