From cfddb502d35a4275cad27ef112f1dcb20d32ed75 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 17 Jul 2026 13:13:02 +0000 Subject: [PATCH] VNC-382 CI: build Ubuntu 26 Resolute Raccoon --- .gitlab-ci.yml | 29 +++++----- builder/dockerfile.opensuse_16.build | 6 +- builder/dockerfile.opensuse_16.rpm.build | 6 +- ...kerfile.ubuntu_resolute.barebones.deb.test | 1 + builder/dockerfile.ubuntu_resolute.build | 45 +++++++++++++++ builder/dockerfile.ubuntu_resolute.deb.build | 16 ++++++ builder/dockerfile.ubuntu_resolute.deb.test | 57 +++++++++++++++++++ builder/dockerfile.ubuntu_resolute.test | 51 +++++++++++++++++ 8 files changed, 196 insertions(+), 15 deletions(-) create mode 120000 builder/dockerfile.ubuntu_resolute.barebones.deb.test create mode 100644 builder/dockerfile.ubuntu_resolute.build create mode 100644 builder/dockerfile.ubuntu_resolute.deb.build create mode 100644 builder/dockerfile.ubuntu_resolute.deb.test create mode 100644 builder/dockerfile.ubuntu_resolute.test diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2e450cb..86385a3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -64,45 +64,48 @@ stages: - DISTRO: 'ubuntu noble' DISTRO_SLUG: 'ubuntu_noble' GROUP: 2 + - DISTRO: 'ubuntu resolute' + DISTRO_SLUG: 'ubuntu_resolute' + GROUP: 3 - DISTRO: 'debian bullseye' DISTRO_SLUG: 'debian_bullseye' - GROUP: 3 + GROUP: 4 - DISTRO: 'debian bookworm' DISTRO_SLUG: 'debian_bookworm' - GROUP: 4 + GROUP: 5 - DISTRO: 'debian trixie' DISTRO_SLUG: 'debian_trixie' - GROUP: 5 + GROUP: 6 - DISTRO: 'kali kali-rolling' DISTRO_SLUG: 'kali_kali-rolling' - GROUP: 6 + GROUP: 7 - DISTRO: 'oracle 8' DISTRO_SLUG: 'oracle_8' - GROUP: 7 + GROUP: 8 - DISTRO: 'oracle 9' DISTRO_SLUG: 'oracle_9' - GROUP: 8 + GROUP: 9 - DISTRO: 'opensuse 15' DISTRO_SLUG: 'opensuse_15' - GROUP: 9 + GROUP: 10 - DISTRO: 'opensuse 16' DISTRO_SLUG: 'opensuse_16' - GROUP: 10 + GROUP: 11 - DISTRO: 'fedora 42' DISTRO_SLUG: 'fedora_42' - GROUP: 11 + GROUP: 12 - DISTRO: 'fedora 43' DISTRO_SLUG: 'fedora_43' - GROUP: 12 + GROUP: 13 - DISTRO: 'alpine 321' DISTRO_SLUG: 'alpine_321' - GROUP: 13 + GROUP: 14 - DISTRO: 'alpine 322' DISTRO_SLUG: 'alpine_322' - GROUP: 14 + GROUP: 15 - DISTRO: 'alpine 323' DISTRO_SLUG: 'alpine_323' - GROUP: 15 + GROUP: 16 default: retry: 2 diff --git a/builder/dockerfile.opensuse_16.build b/builder/dockerfile.opensuse_16.build index 7616b7c..e04864e 100644 --- a/builder/dockerfile.opensuse_16.build +++ b/builder/dockerfile.opensuse_16.build @@ -5,7 +5,11 @@ ENV KASMVNC_BUILD_OS_CODENAME 16 ENV XORG_VER 21.1.15 # Install depends -RUN zypper install -ny \ +RUN sed -i 's|cdn.opensuse.org|downloadcontent.opensuse.org|g' \ + /etc/zypp/repos.d/*.repo \ + /usr/share/zypp/local/service/openSUSE/repo/*.xml && \ + zypper refresh && \ + zypper install -ny \ bdftopcf \ ninja \ nasm \ diff --git a/builder/dockerfile.opensuse_16.rpm.build b/builder/dockerfile.opensuse_16.rpm.build index ba348e2..a4348e9 100644 --- a/builder/dockerfile.opensuse_16.rpm.build +++ b/builder/dockerfile.opensuse_16.rpm.build @@ -3,7 +3,11 @@ FROM opensuse/leap:16.0 ENV KASMVNC_BUILD_OS opensuse ENV KASMVNC_BUILD_OS_CODENAME 16 -RUN zypper -n install -y \ +RUN sed -i 's|cdn.opensuse.org|downloadcontent.opensuse.org|g' \ + /etc/zypp/repos.d/*.repo \ + /usr/share/zypp/local/service/openSUSE/repo/*.xml && \ + zypper refresh && \ + zypper -n install -y \ gpg* \ less \ lsb-release \ diff --git a/builder/dockerfile.ubuntu_resolute.barebones.deb.test b/builder/dockerfile.ubuntu_resolute.barebones.deb.test new file mode 120000 index 0000000..9ec488c --- /dev/null +++ b/builder/dockerfile.ubuntu_resolute.barebones.deb.test @@ -0,0 +1 @@ +dockerfile.debian.barebones.deb.test \ No newline at end of file diff --git a/builder/dockerfile.ubuntu_resolute.build b/builder/dockerfile.ubuntu_resolute.build new file mode 100644 index 0000000..9e8bf43 --- /dev/null +++ b/builder/dockerfile.ubuntu_resolute.build @@ -0,0 +1,45 @@ +FROM ubuntu:resolute + +ENV KASMVNC_BUILD_OS ubuntu +ENV KASMVNC_BUILD_OS_CODENAME resolute +ENV XORG_VER 21.1.22 +ENV DEBIAN_FRONTEND noninteractive + +RUN sed -i 's$Types: deb$Types: deb deb-src$' /etc/apt/sources.list.d/ubuntu.sources + +RUN apt-get update && \ + apt-get -y install sudo + +RUN apt-get update && apt-get install -y --no-install-recommends tzdata +RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev +RUN apt-get update && apt-get -y install ninja-build cmake nasm sccache git libgnutls28-dev vim wget curl +RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev \ + libxcursor-dev libavformat-dev libswscale-dev libva-dev libcrypt-dev + +# x86_64 specific operations +RUN if [ "$(arch)" = "x86_64" ]; then \ + apt-get update && apt-get install -y intel-media-va-driver-non-free; \ + fi + +RUN ARCH=$(arch) && \ + CMAKE_URL="https://cmake.org/files/v3.22/cmake-3.22.0" && \ + if [ "$ARCH" = "x86_64" ]; then \ + CMAKE_URL="${CMAKE_URL}-linux-x86_64.sh"; \ + elif [ "$ARCH" = "aarch64" ]; then \ + CMAKE_URL="${CMAKE_URL}-linux-aarch64.sh"; \ + else \ + echo "Unsupported architecture: $ARCH" && exit 1; \ + fi && \ + curl -fsSL $CMAKE_URL -o cmake.sh && \ + (echo y; echo n) | bash cmake.sh --prefix=/usr/local --skip-license && \ + rm cmake.sh + +ENV SCRIPTS_DIR=/tmp/scripts +COPY builder/scripts $SCRIPTS_DIR + +ARG OUTPUT_OWNER_UID +RUN $SCRIPTS_DIR/add-docker-user "$OUTPUT_OWNER_UID" + +COPY --chown=$OUTPUT_OWNER_UID . /src/ + +ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.ubuntu_resolute.deb.build b/builder/dockerfile.ubuntu_resolute.deb.build new file mode 100644 index 0000000..1caff4e --- /dev/null +++ b/builder/dockerfile.ubuntu_resolute.deb.build @@ -0,0 +1,16 @@ +FROM ubuntu:resolute + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update && \ + apt-get -y install vim build-essential devscripts equivs + +# Install build-deps for the package. +COPY ./debian/control /tmp +RUN apt-get update && echo YYY | mk-build-deps --install --remove /tmp/control + +ENV SCRIPTS_DIR=/tmp/scripts +COPY builder/scripts $SCRIPTS_DIR + +ARG OUTPUT_OWNER_UID +RUN $SCRIPTS_DIR/add-docker-user "$OUTPUT_OWNER_UID" diff --git a/builder/dockerfile.ubuntu_resolute.deb.test b/builder/dockerfile.ubuntu_resolute.deb.test new file mode 100644 index 0000000..0288d5a --- /dev/null +++ b/builder/dockerfile.ubuntu_resolute.deb.test @@ -0,0 +1,57 @@ +FROM ubuntu:resolute + +ENV DISPLAY=:1 \ + VNC_PORT=8443 \ + VNC_RESOLUTION=1280x720 \ + MAX_FRAME_RATE=24 \ + VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ + HOME=/home/user \ + TERM=xterm \ + STARTUPDIR=/dockerstartup \ + INST_SCRIPTS=/dockerstartup/install \ + KASM_RX_HOME=/dockerstartup/kasmrx \ + DEBIAN_FRONTEND=noninteractive \ + VNC_COL_DEPTH=24 \ + VNC_RESOLUTION=1280x1024 \ + VNC_PW=vncpassword \ + VNC_USER=user \ + VNC_VIEW_ONLY_PW=vncviewonlypassword \ + LD_LIBRARY_PATH=/usr/local/lib/ \ + OMP_WAIT_POLICY=PASSIVE \ + SHELL=/bin/bash \ + SINGLE_APPLICATION=0 \ + KASMVNC_BUILD_OS=ubuntu \ + KASMVNC_BUILD_OS_CODENAME=resolute + +EXPOSE $VNC_PORT + +WORKDIR $HOME + +### REQUIRED STUFF ### + +RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext wget dbus-x11 +RUN apt-get purge -y pm-utils xscreensaver* +RUN apt-get update && apt-get install -y vim less +RUN apt-get update && apt-get -y install lsb-release + +RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc + +RUN mkdir -p $STARTUPDIR +COPY builder/startup/ $STARTUPDIR + +### START CUSTOM STUFF #### + +ARG KASMVNC_PACKAGE_DIR +COPY $KASMVNC_PACKAGE_DIR/kasmvncserver_*.deb /tmp/ +RUN rm -f /tmp/kasmvncserver_*+*.deb; dpkg -i /tmp/*.deb; apt-get -yf install + +RUN mkdir ~/.vnc && echo '/usr/bin/xfce4-session &' >> ~/.vnc/xstartup && \ + chmod +x ~/.vnc/xstartup + +### END CUSTOM STUFF ### + +RUN chown -R 1000:0 $HOME +USER 1000:ssl-cert +WORKDIR $HOME + +ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/dockerfile.ubuntu_resolute.test b/builder/dockerfile.ubuntu_resolute.test new file mode 100644 index 0000000..75aeb79 --- /dev/null +++ b/builder/dockerfile.ubuntu_resolute.test @@ -0,0 +1,51 @@ +FROM ubuntu:resolute + +ENV DISPLAY=:1 \ + VNC_PORT=8443 \ + VNC_RESOLUTION=1280x720 \ + MAX_FRAME_RATE=24 \ + VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ + HOME=/home/user \ + TERM=xterm \ + STARTUPDIR=/dockerstartup \ + INST_SCRIPTS=/dockerstartup/install \ + KASM_RX_HOME=/dockerstartup/kasmrx \ + DEBIAN_FRONTEND=noninteractive \ + VNC_COL_DEPTH=24 \ + VNC_RESOLUTION=1280x1024 \ + VNC_PW=vncpassword \ + VNC_USER=user \ + VNC_VIEW_ONLY_PW=vncviewonlypassword \ + LD_LIBRARY_PATH=/usr/local/lib/ \ + OMP_WAIT_POLICY=PASSIVE \ + SHELL=/bin/bash \ + SINGLE_APPLICATION=0 \ + KASMVNC_BUILD_OS=ubuntu \ + KASMVNC_BUILD_OS_CODENAME=resolute + +EXPOSE $VNC_PORT + +WORKDIR $HOME + +### REQUIRED STUFF ### + +RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext wget +RUN apt-get purge -y pm-utils xscreensaver* + +RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc + +RUN mkdir -p $STARTUPDIR +COPY startup/ $STARTUPDIR + +### START CUSTOM STUFF #### + +COPY build/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_CODENAME}.tar.gz /tmp/ +RUN tar -xzvf /tmp/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_CODENAME}.tar.gz --strip 1 -C / + +### END CUSTOM STUFF ### + +RUN chown -R 1000:0 $HOME +USER 1000 +WORKDIR $HOME + +ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ]