Skip to main content

Linux Ubuntu Images

Available On

This page describes the Ubuntu images supported on Semaphore Cloud.

Overview

The Operating System image defines what OS and software are pre-installed in your agents.

This page describes OS images to run on Linux-based Semaphore Cloud machines. You can add more OS options using self-hosted agents.

Installing packages

You have full sudo passwordless permissions to install and modify OS packages as needed. Ubuntu package manager is apt.

To install a package, run:

sudo apt-get update
sudo apt-get install -y <package-name>
info

Packages are installed from a package repository located near the machines for more performance.

Disabled repositories

Due to occasional issues with some of the repositories that break the pipeline during the apt-get update command, the following package sources repositories have been disabled and moved to /etc/apt/sources.list.d/disabled:

  • azure-cli.list
  • devel_kubic_libcontainers_stable.list
  • docker.list
  • firefox.list
  • git.list
  • google-cloud-sdk.list
  • gradle.list
  • helm.list
  • pypy.list
  • python.list
  • yarn.list

If you need any of these package repositories, execute the following command:

sudo mv /etc/apt/sources.list.d/disabled/<package-repository-file.list> /etc/apt/sources.list.d/
sudo apt-get update

Nested virtualization

Linux-based machines support nested virtualization. You can create virtual machines inside the virtual machine running your agent using [libvirt]

Follow these commands to use nested virtualization:

  1. Check that nested virtualization is supported. The output should be 0
    grep -cw vmx /proc/cpuinfo
  2. Install the required packages
    sudo apt-get install -y uvtool sshpass net-tools netcat-openbsd
  3. Download prebuilt Ubuntu cloud image
    uvt-simplestreams-libvirt --verbose sync --source http://cloud-images.ubuntu.com/daily release=focal arch=amd64
    uvt-simplestreams-libvirt query
  4. Create a new SSH keypair
    rm -rf ~/.ssh/id_rsa
    echo | ssh-keygen -t rsa -f ~/.ssh/id_rsa
  5. Create the VM
    uvt-kvm create vm1 --memory 1024 --cpu 1 --disk 4 --password ubuntu --bridge virbr0
    uvt-kvm list
  6. Wait for the machine to be up and IP to be available
    IP=""
    while [ -z $IP ];do IP=$(arp -an | grep $(virsh dumpxml vm1| grep "mac address" | cut -d"'" -f2)|cut -d"(" -f2|cut -d")" -f1);done
    echo $IP
    while ! nc -w5 -z $IP 22; do echo "Sleep while $IP is up";sleep 1; done
  7. Run the commands in the VM using SSH. For example, this runs uname -a
    sshpass -p "ubuntu" -v  ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ubuntu@$IP -t 'uname -a'

The predefined default network for nested virtualization is 192.168.123.0/24. The base VM provides virbr0 interface with the IP address: 192.168.123.1.

Ubuntu 22.04 (x86_64)

note

The Ubuntu 22.04 images is not available for the older generation agent type e1-standard. This OS version is in technical preview and versions of preinstalled software are subject to change.

This is a customized x86_64 image based on Ubuntu 22.04 (Jammy Jellyfish LTS).

This section describes the software pre-installed on the image.

Version control

The following version control tools are pre-installed:

  • Git 2.46.0
  • Git LFS (Git Large File Storage) 3.5.1
  • GitHub CLI 2.55.0
  • Mercurial 6.1.1
  • Svn 1.14.1

Browsers

The following browsers and headless browsers are pre-installed. Chrome and Firefox support headless mode.

  • Firefox 102.11.0 (102, default, esr)
  • Geckodriver 0.33.0
  • Google Chrome 121
  • ChromeDriver 121
  • Xvfb (X Virtual Framebuffer)
  • Phantomjs 2.1.1

Docker

Docker toolset is installed and the following versions are available:

  • Docker 27.2.0
  • Docker-compose 1.29.2 (used as docker-compose --version)
  • Docker-compose 2.29.2 (used as docker compose version)
  • Docker-buildx 0.16.2
  • Docker-machine 0.16.2
  • Dockerize 0.7.0
  • Buildah 1.23.1
  • Podman 3.4.4
  • Skopeo 1.4.1

Cloud CLIs

The following cloud tools are pre-installed:

  • Aws-cli 2.17.40 (used as aws)
  • Azure-cli 2.64.0
  • Ecs-cli 1.21.0
  • Doctl 1.111.0
  • Gcloud 492.0.0
  • Gke-gcloud-auth-plugin 492.0.0
  • Kubectl 1.29.1
  • Heroku 9.2.1
  • Terraform 1.9.5
  • Helm 3.15.4

Utilities

The following utilities are pre-installed:

  • Httpie 3.2.2
  • Curl 8.5.0
  • Rsync 3.2.7
  • gcc 11, 12, and 13 (default)

Languages

The following languages and toolsets are pre-installed.

JavaScript and Node

Node.js versions are managed by nvm.

You can install any version you need with nvm install <version>.

Pre-installed tools:

  • Node.js: v20.17.0 (set as default, with alias 20.17), includes npm 10.8.2
  • Yarn: 1.22.22
Python

Python versions are installed and managed by virtualenv. Installed versions:

  • 3.10.14
  • 3.11.9
  • 3.12.3

Supporting libraries:

  • pypy3: 7.3.17
  • pip: 24.2
  • venv: 20.26.3
Ruby

Available versions:

  • 3.0.x
  • 3.1.x
  • 3.2.x
  • 3.3.x
  • jruby-9.4.1.0

The default installed Ruby version is 3.3.4

Erlang and Elixir

Erlang versions are installed and managed via kerl. Elixir versions are installed with kiex.

  • Erlang: 24.3, 25.0, 25.1, 25.2, 25.3, 26.0, 26.1, 26.2, 27.0 (default)
  • Elixir: 1.12.x, 1.13.x, 1.14.x, 1.15.x, 1.16.x, 1.17.x (1.17.2 as default)

Additional libraries:

  • Rebar3: 3.22.1
Go
  • 1.10.x
  • 1.11.x
  • 1.12.x
  • 1.13.x
  • 1.14.x
  • 1.15.x
  • 1.16.x
  • 1.17.x
  • 1.18.x
  • 1.19.x
  • 1.20.x
  • 1.21.x
  • 1.22.x
  • 1.23.x (1.23.0 as default)
Java and JVM languages
  • Java: 11.0.24, 17.0.12 (default), 21.0.4
  • Scala: 3.2.2
  • Leiningen: 2.11.2 (Clojure)
  • Sbt 1.10.1

Build tools:

  • Maven: 3.9.6
  • Gradle: 8.10
  • Bazel: 7.3.1
PHP

PHP versions are managed by phpbrew. Available versions:

  • 8.1.x
  • 8.2.x
  • 8.3.x

The default installed PHP version is 8.1.29

Additional tools:

  • PHPUnit: 9.5.28
Rust
  • 1.81.0

Ubuntu 22.04 (ARM)

This is a customized ARM image based on Ubuntu 22.04 (Jammy Jellyfish LTS).

This section describes the software pre-installed on the image.

Version control

Following version control tools are pre-installed:

  • Git 2.42.0
  • Git LFS (Git Large File Storage) 3.4.1
  • GitHub CLI 2.42.1
  • Mercurial 6.1.1
  • Svn 1.14.1

Browsers

The following browsers and headless browsers are pre-installed. Chrome and Firefox support headless mode.

  • Firefox 115.7.0 (115, default, esr)
  • Geckodriver 0.33.0
  • Chromium 120
  • Chromium Driver 120
  • Xvfb (X Virtual Framebuffer)

Docker

The Docker toolset is installed and the following versions are available:

  • Docker 24.0.7
  • Docker-compose 2.24.2 (used as docker compose version)
  • Docker-buildx 0.12.1
  • Docker-machine 0.16.2
  • Dockerize 0.7.0
  • Buildah 1.23.1
  • Podman 3.4.4
  • Skopeo 1.4.1

Cloud CLIs

The following cloud CLIs are pre-installed:

  • Aws-cli 2.15.11 (used as aws)
  • Azure-cli 2.56.0
  • Eb-cli 3.20.10
  • Ecs-cli 1.21.0
  • Doctl 1.102.0
  • Gcloud 425.0.0
  • Gke-gcloud-auth-plugin 425.0.0
  • Kubectl 1.29.1
  • Terraform 1.7.0
  • Helm 3.13.3

Utilites

The following utilities are pre-installed:

  • Httpie 3.2.2
  • Curl 7.81.0
  • Rsync 3.2.7
  • gcc 11 (default) and gcc 12

Languages

JavaScript and Node

Node.js versions are managed by nvm.

You can install any version you need with nvm install <version>.

Pre-installed tools:

  • Node.js: v20.11.0 (set as default, with alias 20.11), includes npm 10.2.4
  • Yarn: 1.22.19
Python

Python versions are installed and managed by virtualenv. Installed versions:

  • 3.10.12
  • 3.11.7
  • 3.12.1

Supporting libraries:

  • pypy: 7.3.9
  • pypy3: 7.3.15
  • pip: 24.0
  • venv: 20.25.0
Ruby

Available versions:

  • 2.7.0 to 2.7.8
  • 3.0.0 to 3.0.7
  • 3.1.0 to 3.1.6
  • 3.2.0 to 3.2.4
  • 3.3.0 to 3.3.4
  • jruby-9.3.10.0
  • jruby-9.4.2.0

The default installed Ruby version is 3.2.3.

Erlang and Elixir

Erlang versions are installed and managed via kerl. Elixir versions are installed with kiex.

  • Erlang: 24.3, 25.0, 25.1, 25.2, 25.3 (default), 26.0, 26.1, 26.2, 27.0
  • Elixir: 1.9.x, 1.10.x, 1.11.x, 1.12.x, 1.13.x, 1.14.x (1.14.5 as default), 1.15.x, 1.16.x, 1.17.x

Additional libraries:

  • Rebar3: 3.22.1
Go
  • 1.19.x
  • 1.20.x
  • 1.21.x (1.21.6 as default)
  • 1.22.x
Java and JVM languages
  • Java: 11.0.21, 17.0.9 (default)
  • Scala: 3.2.2
  • Leiningen: 2.10.0 (Clojure)
  • Sbt 1.9.7

Build tools:

  • Maven: 3.9.6
  • Gradle: 8.3
  • Bazel: 7.0.2
PHP

PHP versions are managed by phpbrew. Available versions:

  • 8.1.x
  • 8.2.x
  • 8.3.x

The default installed PHP version is 8.1.27.

Additional tools:

  • PHPUnit: 9.5.28
Rust
  • 1.75.0

Ubuntu 20.04 (x86_64)

This is a customized x86_64 image based on Ubuntu 20.04 (Focal Fossa LTS).

This section describes the software pre-installed on the image.

Version control

The following version control tools are pre-installed:

  • Git 2.46.0
  • Git LFS (Git Large File Storage) 3.5.1
  • GitHub CLI 2.55.0
  • Mercurial 5.3.1
  • Svn 1.13.0

Browsers

The following browsers and headless browsers are pre-installed. Chrome and Firefox support headless mode.

  • Firefox 68.9 (68, esr-old), 78.1 (78, default, esr), 102.11.0 (102, esr-new, esr-latest)
  • Geckodriver 0.33.0
  • Google Chrome 128
  • ChromeDriver 128
  • Xvfb (X Virtual Framebuffer)
  • Phantomjs 2.1.1

Docker

Docker toolset is installed and the following versions are available:

  • Docker 25.0.2
  • Docker-compose 1.29.2 (used as docker-compose --version)
  • Docker-compose 2.24.5 (used as docker compose version)
  • Docker-buildx 0.12.1
  • Docker-machine 0.16.2
  • Dockerize 0.7.0
  • Buildah 1.22.3
  • Podman 3.4.2
  • Skopeo 1.5.0

Cloud CLIs

The following cloud tools are pre-installed:

  • Aws-cli v1 (used as aws) 1.32.35
  • Aws-cli v2 (used as aws2) 2.15.17
  • Azure-cli 2.57.0
  • Eb-cli 3.20.10
  • Ecs-cli 1.21.0
  • Doctl 1.104.0
  • Gcloud 425.0.0
  • Gke-gcloud-auth-plugin 425.0.0
  • Kubectl 1.29.1
  • Heroku 8.7.1
  • Terraform 1.7.2
  • Helm 3.14.0

Utilities

The following utilities are pre-installed:

  • Httpie 3.2.2
  • Curl 7.68.0
  • Rsync 3.1.3
  • gcc 10 (default), and gcc 9

Languages

The following languages and toolsets are pre-installed.

JavaScript and Node

Node.js versions are managed by nvm.

You can install any version you need with nvm install <version>.

Pre-installed tools:

  • Node.js: v20.11.0 (set as default, with alias 20.11), includes npm 10.2.4
  • Yarn: 1.22.19
Python

Python versions are installed and managed by virtualenv. Installed versions:

  • 3.8.10 (default)
  • 3.9.19
  • 3.10.13
  • 3.11.7
  • 3.12.1

Supporting libraries:

  • pypy: 7.3.9
  • pypy3: 7.3.15
  • pip: 24.0
  • venv: 20.25.0
Ruby

Available versions:

  • 2.6.0 to 2.6.10
  • 2.7.0 to 2.7.8
  • 3.0.0 to 3.0.7
  • 3.1.0 to 3.1.6
  • 3.2.0 to 3.2.4
  • 3.3.0 to 3.3.4
  • jruby-9.2.11.1
  • jruby-9.3.9.0
  • jruby-9.4.0.0

The default installed Ruby version is 2.7.8.

Erlang and Elixir

Erlang versions are installed and managed via kerl. Elixir versions are installed with kiex.

  • Erlang: 22.3, 23.3, 24.1, 24.2, 24.3 (default), 25.0, 25.1, 25.2, 25.3, 26.0, 26.1, 26.2, 27.0
  • Elixir: 1.9.x, 1.10.x, 1.11.x, 1.12.x, 1.13.x (1.13.4 as default), 1.14.x, 1.15.x, 1.16.x, 1.17.x

Additional libraries:

  • Rebar: 2.6.4
  • Rebar3: 3.22.1
Go
  • 1.10.x
  • 1.11.x
  • 1.12.x
  • 1.13.x
  • 1.14.x
  • 1.15.x
  • 1.16.x
  • 1.17.x
  • 1.18.x
  • 1.19.x
  • 1.20.x
  • 1.21.x (1.21.6 as default)
  • 1.22.x
Java and JVM languages
  • Java: 11.0.21 (default), 17.0.9
  • Scala: 2.12.15, 3.1.3
  • Leiningen: 2.11.1 (Clojure)
  • Sbt 1.9.8

Build tools:

  • Maven: 3.9.6
  • Gradle: 8.3
  • Bazel: 7.0.2
PHP

PHP versions are managed by phpbrew. Available versions:

  • 7.4.x
  • 8.0.x
  • 8.1.x
  • 8.2.x
  • 8.3.x

The default installed PHP version is 7.4.33.

Additional tools:

  • PHPUnit: 7.5.20
Rust
  • 1.75.0

See also