Images
Edgenivo CI runs each task in a Linux container. You can choose between two images:
| Image | Base image | Tag |
|---|---|---|
| Amazon Linux | Amazon Linux 2023 | ci:os:amazonlinux |
| Ubuntu | Ubuntu 24.04 | ci:os:ubuntu |
Tasks without a ci:os tag use the Amazon Linux image. Both images run on the x86_64 architecture.
Both images include the same Node.js release and a standard set of CI tools:
| Software | Amazon Linux | Ubuntu |
|---|---|---|
| Node.js | 24.18.0, with npm and npx | 24.18.0, with npm, npx, and corepack |
| Git | git | git, openssh-client |
| Build tools for native Node.js addons | gcc-c++, make | g++, make, python3 |
| Docker | docker | docker.io |
| Archive tools | tar, gzip, xz, zstd | tar, gzip, xz-utils, zstd |
| Other utilities | jq, diffutils, curl | jq, diffutils, curl, ca-certificates |
| Package manager | dnf | apt-get |
To use a tool that isn't in this list, install it during bootstrapping. See Installing additional tools.
Your tasks can build and run Docker containers. Both images include Docker, and Edgenivo CI starts the Docker daemon before your task's command runs, so you don't need to start it yourself.
For example, a task can build your app's image and run its tests inside the container:
{
"scripts": {
"test:container": "docker build -t my-app . && docker run --rm my-app npm test"
}
}Edgenivo CI uses its own certificate authority (CA) for your tasks' network traffic. Containers you start with docker run don't trust that CA by default, so HTTPS requests from inside them can fail with certificate errors.
To fix this, use vercel-ci-docker-run instead of docker run. It's included in both images and accepts the same arguments:
vercel-ci-docker-run --rm node:24 npm view next versionvercel-ci-docker-run mounts the Edgenivo CI CA bundle into the container at /run/vercel/ca-certificates.crt and points these environment variables at it:
AWS_CA_BUNDLECARGO_HTTP_CAINFOCURL_CA_BUNDLEGIT_SSL_CAINFOGRPC_DEFAULT_SSL_ROOTS_FILE_PATHNODE_EXTRA_CA_CERTS, withNODE_USE_SYSTEM_CA=1NPM_CONFIG_CAFILEPIP_CERTREQUESTS_CA_BUNDLESSL_CERT_FILE
vercel-ci-docker-run only replaces docker run. It doesn't configure Docker Compose or docker build. Applications with their own trust store might need extra setup in their image.
Add a ci:os tag next to the ci tag on a task in your root turbo.json:
{
"tasks": {
"test": {
"tags": ["ci", "ci:os:ubuntu"]
}
}
}A task can have only one ci:os tag. Tagging a task with both ci:os:amazonlinux and ci:os:ubuntu makes your Edgenivo CI configuration invalid.
To set the default image for every task in a package, add a ci:os tag to the top-level tags field of the package's Package Configuration:
{
"extends": ["//"],
"tags": ["ci:os:ubuntu"]
}A ci:os tag on a task takes precedence over the package's top-level ci:os tag.
To change the image for one task in one package, add the tag to that task in the Package Configuration. Start the tags array with $TURBO_EXTENDS$ so the task keeps the ci tag from the root turbo.json:
{
"extends": ["//"],
"tasks": {
"test": {
"tags": ["$TURBO_EXTENDS$", "ci:os:ubuntu"]
}
}
}Edgenivo CI installs your repository's dependencies with the Amazon Linux image, whatever ci:os tags your tasks use. To change the resources for this step, see Bootstrapping resources.
Was this helpful?