Ubuntu 20.04 Image#
ubuntu2004 is a customized image based on Ubuntu 20.04 LTS
optimized for CI/CD. It comes with a set of preinstalled languages, databases,
and utility tools commonly used for CI/CD workflows. The image can be paired
with any Linux machine type when defining the agent
of your pipeline or block.
ubuntu2004 is a virtual machine (VM) image. The user in the environment,
semaphore, has full
sudo access. The image will be updated bi-weekly, on first and third Monday of every month.
Updates can be followed on Semaphore Changelog.
ubuntu2004 VM uses an APT mirror that is in the same data center as
Semaphore's build cluster, which means that caching packages will have little
Using the ubuntu2004 OS image in your agent configuration#
To use the
ubuntu2004 OS image, define it as the
os_image of your agent's
version: 1.0 name: Ubuntu18 Based Pipeline agent: machine: type: e1-standard-2 os_image: ubuntu2004 blocks: - name: "Unit tests" task: jobs: - name: Tests commands: - make test
Available machine types
ubuntu2004 image will only work on
e1-standard-2 agents for now.
When switching the
ubuntu2004 make sure that the
e1-standard-2 machine type is selected.
ubuntu2004 comes with two utility tools. One for managing background
services and database, and one for managing language versions.
- sem-version: Managing language version on Linux
- sem-service: Managing databases and services on Linux
Following version control tools are pre-installed:
- Git (2.x)
- Git LFS (Git Large File Storage)
- Mercurial (4.5.x)
- Svn (1.9.x)
Browsers and Headless Browser Testing#
- Firefox 78.1
- geckodriver 0.26.0
- Google Chrome
- Xvfb (X Virtual Framebuffer)
- Phantomjs 2.1.1
Chrome and Firefox both support headless mode. You shouldn't need to do more than install and use the relevant Selenium library for your language. Refer to the documentation of associated libraries when configuring your project.
Docker toolset is installed and following versions are available:
- Docker 20.10
- docker-compose 1.29.2
Erlang and Elixir#
- Erlang: 23.3, 24
- Elixir: 1.11.4, 1.12.3
- rebar3: 3.14.3
Java and JVM languages#
- Java: 11, 13
- Scala: 2.12.10
- Leiningen: 2.9.1 (Clojure)
Additional build tools#
- Maven: 3.6.3
- Gradle: 7.0
Node.js versions are managed by nvm.
You can install any version you need with
nvm install [version].
- v10.15.3 (set as default)
- Yarn: 1.22.5
PHP versions are managed by phpbrew. Installed versions:
The default installed PHP version is
Python versions are installed and managed by virtualenv. Installed versions:
- pypy: 7.3.5
- pypy3: 7.3.5
- pip: 21.2
- venv: 16.0.0
- 2.6.0 to 2.6.8
- 2.7.0 to 2.7.4
- 3.0.0 to 3.0.2
Installing dependencies with apt package manager#
The Semaphore Ubuntu:20.04 image has most of the popular programming languages, tools and databases preinstalled.
If the dependency you need is not present in the list above, you can install it with the Ubuntu package manager or using an alternative method such as compiling it from the source, or manually downloading binaries.
To install dependecies using the package manager (apt-get) you can use the template command below and add it to your pipeline:
sudo apt-get update sudo apt-get install -y [your-dependency]