From 1e8398399056daa915d634f54d2dce2c2d665993 Mon Sep 17 00:00:00 2001 From: thespad Date: Thu, 16 Apr 2026 09:51:13 +0000 Subject: [PATCH] Final updates for 1.18.1 wizard changes --- .github/workflows/external_trigger.yml | 4 +- Dockerfile | 28 ++++++++----- Dockerfile.aarch64 | 58 ++++++++++---------------- Jenkinsfile | 29 ++++++++----- README.md | 2 +- jenkins-vars.yml | 3 +- readme-vars.yml | 2 +- 7 files changed, 61 insertions(+), 65 deletions(-) diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index 81d7dd3..db3c457 100644 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -29,8 +29,8 @@ jobs: echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY echo "> External trigger running off of master branch. To disable this trigger, add \`kasm_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY - EXT_RELEASE=$(echo 1.18.1) - echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY + EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/kasmtech/kasm-install-wizard/releases/latest" | jq -r '. | .tag_name') + echo "Type is \`github_stable\`" >> $GITHUB_STEP_SUMMARY if grep -q "^kasm_master_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` matches current external release; skipping trigger." >> $GITHUB_STEP_SUMMARY diff --git a/Dockerfile b/Dockerfile index d4c88d1..ec79331 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,20 +17,23 @@ ENV DEBIAN_FRONTEND=noninteractive #Add needed nvidia environment variables for https://github.com/NVIDIA/nvidia-docker ENV NVIDIA_DRIVER_CAPABILITIES="compute,graphics,video,utility" -# Container setup RUN \ echo "**** install packages ****" && \ install -m 0755 -d /etc/apt/keyrings && \ + # Docker curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \ - chmod a+r /etc/apt/keyrings/docker.asc && \ printf "Types: deb\nURIs: https://download.docker.com/linux/ubuntu\nSuites: $(. /etc/os-release && echo ${UBUNTU_CODENAME:-$VERSION_CODENAME})\nComponents: stable\nArchitectures: $(dpkg --print-architecture)\nSigned-By: /etc/apt/keyrings/docker.asc" > /etc/apt/sources.list.d/docker.sources && \ - cat /etc/apt/sources.list.d/docker.sources && \ - curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ + printf "Package: docker-ce docker-ce-cli docker-ce-rootless-extras\nPin: version 5:29.*\nPin-Priority: 1001" > /etc/apt/preferences.d/docker && \ + # Nvidia CTK + curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ - sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ + sed 's#deb https://#deb [signed-by=/etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ tee /etc/apt/sources.list.d/nvidia-container-toolkit.list && \ - curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ - printf "Package: docker-ce docker-ce-cli docker-ce-rootless-extras\nPin: version 5:29.* \nPin-Priority: 1001" > /etc/apt/preferences.d/docker && \ + # NodeJS + curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ + printf "Types: deb\nURIs: https://deb.nodesource.com/node_20.x\nSuites: nodistro\nComponents: main\nArchitectures: $(dpkg --print-architecture)\nSigned-By: /etc/apt/keyrings/nodesource.gpg" > /etc/apt/sources.list.d/nodesource.sources && \ + printf "Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 600" > /etc/apt/preferences.d/nodejs && \ + chmod a+r /etc/apt/keyrings/{*.gpg,*.asc} apt-get update && \ apt-get install -y --no-install-recommends \ btrfs-progs \ @@ -57,7 +60,7 @@ RUN \ usermod -G dockremap dockremap && \ echo 'dockremap:165536:65536' >> /etc/subuid && \ echo 'dockremap:165536:65536' >> /etc/subgid && \ - curl -w "%{response_code}" -o \ + curl -o \ /usr/local/bin/dind -L \ https://raw.githubusercontent.com/moby/moby/master/hack/dind && \ chmod +x /usr/local/bin/dind && \ @@ -71,8 +74,7 @@ RUN \ echo "**** add wizard ****" && \ curl -o \ /tmp/wizard.tar.gz -L \ - # "https://github.com/kasmtech/kasm-install-wizard/archive/refs/tags/${KASM_VERSION}.tar.gz" && \ - "https://github.com/KodeStar/kasm-install-wizard/archive/refs/heads/feature/KASM-8264-registry-based-wizard-installer.tar.gz" && \ + "https://github.com/kasmtech/kasm-install-wizard/archive/refs/tags/${KASM_VERSION}.tar.gz" && \ tar xf \ /tmp/wizard.tar.gz -C \ /wizard --strip-components=1 && \ @@ -85,9 +87,10 @@ RUN \ tar xf \ /tmp/kasm.tar.gz -C \ / && \ - # Don't check for open ports + # Don't check for open ports during upgrades sed -i 's/-N -e -H/-N -B -e -H/g' /kasm_release/upgrade.sh && \ echo "exit 0" > /kasm_release/install_dependencies.sh && \ + # Fix dependencies so containers start in the right order /kasm_release/bin/utils/yq_$(uname -m) -i \ '.services.proxy.depends_on = {"kasm_manager":{"condition": "service_healthy"},"kasm_api":{"condition": "service_healthy"},"kasm_agent":{"condition": "service_started"},"kasm_guac":{"condition": "service_started"}}' \ /kasm_release/docker/docker-compose-all.yaml && \ @@ -103,6 +106,9 @@ RUN \ /kasm_release/bin/utils/yq_$(uname -m) -i \ '.services.kasm_rdp_https_gateway.depends_on = {"proxy":{"condition": "service_started"}}' \ /kasm_release/docker/docker-compose-all.yaml && \ + # Disable containerd snapshotter + jq '. += {"features": {"containerd-snapshotter": false}}' /etc/docker/daemon.json > /tmp/daemon.json && mv /tmp/daemon.json /etc/docker/daemon.json && \ + # Add Kasm and db users useradd -u 70 kasm_db && \ useradd kasm && \ printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 4f6e389..ccddf8a 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -17,18 +17,24 @@ ENV DEBIAN_FRONTEND=noninteractive #Add needed nvidia environment variables for https://github.com/NVIDIA/nvidia-docker ENV NVIDIA_DRIVER_CAPABILITIES="compute,graphics,video,utility" -# Container setup RUN \ echo "**** install packages ****" && \ - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \ - echo "deb [arch=arm64] https://download.docker.com/linux/ubuntu noble stable" > \ - /etc/apt/sources.list.d/docker.list && \ - curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ + install -m 0755 -d /etc/apt/keyrings && \ + # Docker + curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \ + printf "Types: deb\nURIs: https://download.docker.com/linux/ubuntu\nSuites: $(. /etc/os-release && echo ${UBUNTU_CODENAME:-$VERSION_CODENAME})\nComponents: stable\nArchitectures: $(dpkg --print-architecture)\nSigned-By: /etc/apt/keyrings/docker.asc" > /etc/apt/sources.list.d/docker.sources && \ + printf "Package: docker-ce docker-ce-cli docker-ce-rootless-extras\nPin: version 5:29.*\nPin-Priority: 1001" > /etc/apt/preferences.d/docker && \ + # Nvidia CTK + curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ - sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ + sed 's#deb https://#deb [signed-by=/etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ tee /etc/apt/sources.list.d/nvidia-container-toolkit.list && \ - curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ - printf "Package: docker-ce docker-ce-cli docker-ce-rootless-extras\nPin: version 5:29.* \nPin-Priority: 1001" > /etc/apt/preferences.d/docker && \ + # NodeJS + curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ + printf "Types: deb\nURIs: https://deb.nodesource.com/node_20.x\nSuites: nodistro\nComponents: main\nArchitectures: $(dpkg --print-architecture)\nSigned-By: /etc/apt/keyrings/nodesource.gpg" > /etc/apt/sources.list.d/nodesource.sources && \ + printf "Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 600" > /etc/apt/preferences.d/nodejs && \ + chmod a+r /etc/apt/keyrings/{*.gpg,*.asc} + apt-get update && \ apt-get install -y --no-install-recommends \ btrfs-progs \ build-essential \ @@ -68,23 +74,12 @@ RUN \ echo "**** add wizard ****" && \ curl -o \ /tmp/wizard.tar.gz -L \ - # "https://github.com/kasmtech/kasm-install-wizard/archive/refs/tags/${KASM_VERSION}.tar.gz" && \ - "https://github.com/kasmtech/kasm-install-wizard/archive/refs/tags/1.18.0.tar.gz" && \ + "https://github.com/kasmtech/kasm-install-wizard/archive/refs/tags/${KASM_VERSION}.tar.gz" && \ tar xf \ /tmp/wizard.tar.gz -C \ /wizard --strip-components=1 && \ - # Enable rolling service images - sed -i "/installFlags = \[.*/a \ installFlags.push('-O');" /wizard/index.js && \ cd /wizard && \ npm install && \ - echo "**** add image definitions ****" && \ - curl -o \ - /tmp/images.tar.gz -L \ - #"https://kasm-ci.s3.amazonaws.com/${KASM_VERSION}-images-combined.tar.gz" && \ - "https://kasm-ci.s3.amazonaws.com/1.18.0-images-combined.tar.gz" && \ - tar xf \ - /tmp/images.tar.gz -C \ - / && \ echo "**** add installer ****" && \ curl -o \ /tmp/kasm.tar.gz -L \ @@ -92,17 +87,10 @@ RUN \ tar xf \ /tmp/kasm.tar.gz -C \ / && \ - ALVERSION=$(cat /kasm_release/conf/database/seed_data/default_properties.yaml |awk '/alembic_version/ {print $2}') && \ - sed -i \ - '/alembic_version/s/.*/alembic_version: '${ALVERSION}'/' \ - /kasm_release/conf/database/seed_data/default_images_a* && \ - # Don't check for open ports + # Don't check for open ports during upgrades sed -i 's/-N -e -H/-N -B -e -H/g' /kasm_release/upgrade.sh && \ echo "exit 0" > /kasm_release/install_dependencies.sh && \ - # Add our customisations - /kasm_release/bin/utils/yq_$(uname -m) -i \ - '.services.proxy.volumes += "/kasm_release/www/img/thumbnails:/srv/www/img/thumbnails"' \ - /kasm_release/docker/docker-compose-all.yaml && \ + # Fix dependencies so containers start in the right order /kasm_release/bin/utils/yq_$(uname -m) -i \ '.services.proxy.depends_on = {"kasm_manager":{"condition": "service_healthy"},"kasm_api":{"condition": "service_healthy"},"kasm_agent":{"condition": "service_started"},"kasm_guac":{"condition": "service_started"}}' \ /kasm_release/docker/docker-compose-all.yaml && \ @@ -116,15 +104,11 @@ RUN \ '.services.kasm_api.healthcheck += {"start_period": "60s","start_interval": "30s"}' \ /kasm_release/docker/docker-compose-all.yaml && \ /kasm_release/bin/utils/yq_$(uname -m) -i \ - '.services.kasm_rdp_https_gateway.depends_on = {"proxy":{"condition": "service_started"},"rdp_gateway":{"condition": "service_healthy"}}' \ + '.services.kasm_rdp_https_gateway.depends_on = {"proxy":{"condition": "service_started"}}' \ /kasm_release/docker/docker-compose-all.yaml && \ - echo "**** copy assets ****" && \ - cp \ - /kasm_release/www/img/thumbnails/*.png /kasm_release/www/img/thumbnails/*.svg \ - /wizard/public/img/thumbnails/ && \ - cp \ - /kasm_release/conf/database/seed_data/default_images_a* \ - /wizard/ && \ + # Disable containerd snapshotter + jq '. += {"features": {"containerd-snapshotter": false}}' /etc/docker/daemon.json > /tmp/daemon.json && mv /tmp/daemon.json /etc/docker/daemon.json && \ + # Add Kasm and db users useradd -u 70 kasm_db && \ useradd kasm && \ printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \ diff --git a/Jenkinsfile b/Jenkinsfile index 2f37b85..45ce765 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -145,16 +145,23 @@ pipeline { /* ######################## External Release Tagging ######################## */ - // If this is a custom command to determine version use that command - stage("Set tag custom bash"){ - steps{ - script{ - env.EXT_RELEASE = sh( - script: ''' echo 1.18.1 ''', - returnStdout: true).trim() - env.RELEASE_LINK = 'custom_command' - } - } + // If this is a stable github release use the latest endpoint from github to determine the ext tag + stage("Set ENV github_stable"){ + steps{ + script{ + env.EXT_RELEASE = sh( + script: '''curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. | .tag_name' ''', + returnStdout: true).trim() + } + } + } + // If this is a stable or devel github release generate the link for the build message + stage("Set ENV github_link"){ + steps{ + script{ + env.RELEASE_LINK = 'https://github.com/' + env.EXT_USER + '/' + env.EXT_REPO + '/releases/tag/' + env.EXT_RELEASE + } + } } // Sanitize the release tag and strip illegal docker or github characters stage("Sanitize tag"){ @@ -990,7 +997,7 @@ pipeline { "type": "commit",\ "tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' echo "Pushing New release for Tag" - echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json + curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. |.body' > releasebody.json jq -n \ --arg tag_name "$META_TAG" \ --arg target_commitish "master" \ diff --git a/README.md b/README.md index 84f6caa..1a5bfe3 100644 --- a/README.md +++ b/README.md @@ -317,7 +317,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions -* **22.03.26:** - Update for 1.18.1 release. Use rolling service images. +* **16.04.26:** - Update for 1.18.1 release. Use rolling service images. * **13.11.25:** - Pin docker to v28 to avoid API deprecation issues. * **22.10.25:** - Update for 1.18.0 release. * **08.06.25:** - Deprecate develop branch. diff --git a/jenkins-vars.yml b/jenkins-vars.yml index a6a7c8c..a068886 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -2,8 +2,7 @@ # jenkins variables project_name: docker-kasm -external_type: na -custom_version_command: "echo 1.18.1" +external_type: github_stable release_type: stable release_tag: latest ls_branch: master diff --git a/readme-vars.yml b/readme-vars.yml index 85cbe89..d3ef204 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -130,7 +130,7 @@ init_diagram: | "kasm:latest" <- Base Images # changelog changelogs: - - {date: "22.03.26:", desc: "Update for 1.18.1 release. Use rolling service images."} + - {date: "16.04.26:", desc: "Update for 1.18.1 release. Use rolling service images. Bump docker to v29."} - {date: "13.11.25:", desc: "Pin docker to v28 to avoid API deprecation issues."} - {date: "22.10.25:", desc: "Update for 1.18.0 release."} - {date: "08.06.25:", desc: "Deprecate develop branch."}