KasmVNC/builder
2021-11-05 10:05:13 -04:00
..
startup Deb: make easy-start script easier to modify 2021-03-14 21:19:08 +13:00
build_and_deploy_kasm.sh Initial commit 2020-09-20 12:16:44 +00:00
build_www.sh fixes 2021-04-11 21:35:13 +00:00
build-and-test-deb Move build-and-test-* to builder/ 2021-02-28 21:28:14 +13:00
build-and-test-rpm Move build-and-test-* to builder/ 2021-02-28 21:28:14 +13:00
build-deb Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
build-deb-inside-docker Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
build-package Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
build-rpm Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
build-rpm-inside-docker Rpm: run rpmlint after building rpm 2021-02-12 23:07:03 +13:00
build-tarball Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
build.sh Feature/kasm 786 arm support (#71) 2021-10-19 15:44:36 -04:00
bump-package-version Add bump-package-version(1) and document it (#74) 2021-11-05 10:05:13 -04:00
bump-package-version-inside-docker-deb Add bump-package-version(1) and document it (#74) 2021-11-05 10:05:13 -04:00
dockerfile.bump-package-version Add bump-package-version(1) and document it (#74) 2021-11-05 10:05:13 -04:00
dockerfile.centos_core.barebones.rpm.test Deb/rpm: update barebones images 2021-03-26 01:10:43 +13:00
dockerfile.centos_core.build Feature/kasm 786 arm support (#71) 2021-10-19 15:44:36 -04:00
dockerfile.centos_core.rpm.build Rpm: run rpmlint after building rpm 2021-02-12 23:07:03 +13:00
dockerfile.centos_core.rpm.test Rpm: group kasmvnc -> kasmvnc-cert 2021-02-22 22:28:30 +13:00
dockerfile.debian_bullseye.build Feature/kasm 786 arm support (#71) 2021-10-19 15:44:36 -04:00
dockerfile.debian_bullseye.deb.build Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.debian_bullseye.deb.test Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.debian_buster.barebones.deb.test Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.debian_buster.build Feature/kasm 786 arm support (#71) 2021-10-19 15:44:36 -04:00
dockerfile.debian_buster.deb.build Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.debian_buster.deb.test Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.fedora_thirtythree.barebones.rpm.test Deb/rpm: update barebones images 2021-03-26 01:10:43 +13:00
dockerfile.fedora_thirtythree.build Feature/kasm 786 arm support (#71) 2021-10-19 15:44:36 -04:00
dockerfile.fedora_thirtythree.rpm.build tarball: include Xvnc.1 man page 2021-02-19 22:58:38 +13:00
dockerfile.fedora_thirtythree.rpm.test Rpm: group kasmvnc -> kasmvnc-cert 2021-02-22 22:28:30 +13:00
dockerfile.kali_kali-rolling.build Feature/kasm 786 arm support (#71) 2021-10-19 15:44:36 -04:00
dockerfile.kali_kali-rolling.deb.build Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.kali_kali-rolling.deb.test Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.ubuntu1604.build Slash a minute off tarball build 2021-08-17 00:00:55 +12:00
dockerfile.ubuntu_bionic.build Feature/kasm 786 arm support (#71) 2021-10-19 15:44:36 -04:00
dockerfile.ubuntu_bionic.deb.build Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.ubuntu_bionic.deb.test Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.ubuntu_bionic.test Deb: release numbers (18.04) -> codenames (bionic) 2021-01-28 22:10:46 +13:00
dockerfile.ubuntu_bionic+libjpeg-turbo_latest.build Feature/kasm 786 arm support (#71) 2021-10-19 15:44:36 -04:00
dockerfile.ubuntu_bionic+libjpeg-turbo_latest.deb.build Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.ubuntu_bionic+libjpeg-turbo_latest.deb.test Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.ubuntu_focal.barebones.deb.test Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.ubuntu_focal.build Feature/kasm 786 arm support (#71) 2021-10-19 15:44:36 -04:00
dockerfile.ubuntu_focal.deb.build Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.ubuntu_focal.deb.test Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
dockerfile.ubuntu_focal.test Deb: release numbers (18.04) -> codenames (bionic) 2021-01-28 22:10:46 +13:00
dockerfile.www.build added dockerfile build process for www 2021-01-10 19:03:13 +00:00
os_ver_cli.sh Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
README.md Add bump-package-version(1) and document it (#74) 2021-11-05 10:05:13 -04:00
test-deb Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
test-deb-barebones Deb: update Debian Buster barebones test to work 2021-03-03 22:47:48 +13:00
test-rpm Add verbose logging via KASMVNC_VERBOSE_LOGGING env var 2021-02-28 21:21:49 +13:00
test-rpm-barebones Deb/rpm: change test user password to "foobar" 2021-02-28 20:48:17 +13:00

REQIUREMENTS

Docker CE

Build a deb/rpm package

# builder/build-package <os> <os_codename> <build_tag>
# os_codename is what "lsb_release -c" outputs, e.g. buster, focal.
#
# build_tag allows building multiple versions of deb package (rpm not supported)
# targeting a single distro release (e.g. Ubuntu Bionic). If build_tag is given,
# the package name will include build_tag as part of Debian revision. For
# example:
# * with build_tag: kasmvncserver_0.9.1~beta-1+libjpeg-turbo-latest_amd64.deb
# * without build_tag: kasmvncserver_0.9.1~beta-1_amd64.deb
# You need to have .build and .deb.build for the build_tag.
#
# Packages will be placed under builder/build/

builder/build-package ubuntu bionic
builder/build-package ubuntu focal
builder/build-package debian buster
builder/build-package debian bullseye
builder/build-package kali kali-rolling
builder/build-package centos core # CentOS 7
builder/build-package fedora thirtythree

Build and test a package

builder/build-and-test-deb ubuntu focal
builder/build-and-test-rpm centos core

Open browser and point to https://localhost:443/ or https://<ip-address>:443/

3 default users are created:

  • 'foo' with default password 'foobar'. It can use mouse and keyboard.
  • 'foo-ro' with default password 'foobar'. It can only view.
  • 'foo-owner' with default password 'foobar'. It can manage other users.

Test a package

If you want to test deb/rpm package you've already built, please use this:

builder/test-deb ubuntu focal

It will install the package inside a new container and run KasmVNC.

Open browser and point to https://localhost:443/ or https://<ip-address>:443/

Package development

deb/rpm package building and testing

First, a tarball is built, and then its files are copied to deb/rpm package as it is being built. Package testing stage installs the deb/rpm package in a fresh docker container and runs KasmVNC.

builder/build-tarball debian buster
builder/build-deb debian buster
builder/test-deb debian buster

Use build-and-test-deb to perform the whole dev lifecycle, but to iterate quickly, you'll need to skip building the tarball (which takes a long time), and just build your deb/rpm with build-deb and test with test-deb.

build-rpm and test-rpm are also available.

Ensuring packages have all dependencies they need.

If you're working on a deb/rpm package, testing that it has all the necessary dependencies is done via testing in a barebones environment (read: no XFCE). In this way we can be sure that runtime dependencies aren't met accidentally by packages installed with XFCE.

builder/test-deb-barebones ubuntu focal

Preparing a release

Deb and rpm packages need their versions bumped to the new release version. It can be done with:

builder/bump-package-version 0.9.4-beta

This will update corresponding package files, use git diff to see changes.

If you've ran the command and curious about Debian version specifics, here's an explanation: Deb version will be 0.9.4~beta-1. ~ (and not -) is required by packaging guidelines, and -1 is Debian package revision for 0.9.4 upstream release. If a Debian-specific patch was later added on top of 0.9.4, it'd be -2 for the next Debian version. Rpm has a corresponding revision in its .spec file.

CI development

S3 upload code is extracted to various files in .ci. It's possible to iterate locally by doing stuff like this:

bash -c '
. .ci/upload.sh;
prepare_upload_filename "bionic/kasmvncserver_0.9.1~beta-1+libjpeg-turbo-latest_amd64.deb";
echo $upload_filename;'

ARM

KasmVNC is supported on ARM, however, the build process needs to be broken into two parts with one occuring on a x64 system and the other on an ARM system. All our testing and official builds are done on AWS Graviton instances.

Build www code on x86 System

The www code is webpacked for performance and thus requires building. There are NPM packages, phantomjs, which do not have an ARM build. Therefore, this must be built on x86 and then copied over to the ARM system for final packaging.

cd ~/KasmVNC
mkdir builder/www
sudo docker build -t kasmweb/www -f builder/dockerfile.www.build .
sudo docker run --rm -v $PWD/builder/www:/build kasmweb/www:latest
cd builder
tar -zcvf /tmp/kasm_www.tar.gz www

Now transfer kasm_www.tar.gz to the ARM system.

Build KasmVNC ARM

These instructions assume KasmVNC has been cloned at $HOME and kasm_www.tar.gz has been placed at $HOME as well, adjust for your environment.

cd ~
tar -zxf kasm_www.tar.gz -C KasmVNC/builder/
cd KasmVNC
sudo builder/build-package ubuntu bionic

The resulting deb package can be found under ~/KasmVNC/builder/build/bionic Replace bionic with focal to build for Ubuntu 20.04LTS. At this time, only Ubuntu Bionic has been tested, however, other Debian based builds we support should also work.