Linux Ubuntu Images
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>
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:
- Check that nested virtualization is supported. The output should be
0
grep -cw vmx /proc/cpuinfo
- Install the required packages
sudo apt-get install -y uvtool sshpass net-tools netcat-openbsd
- 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 - Create a new SSH keypair
rm -rf ~/.ssh/id_rsa
echo | ssh-keygen -t rsa -f ~/.ssh/id_rsa - Create the VM
uvt-kvm create vm1 --memory 1024 --cpu 1 --disk 4 --password ubuntu --bridge virbr0
uvt-kvm list - 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 - 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)
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
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
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