← Pipelines

Base images

Pre-built, pre-pulled images for every pipeline step. Use any image you want — these are just faster.

How it works

Every pipeline step runs in a container. gittan provides base images that are pre-pulled on every runner — zero pull time. You can use any public or org-registry image instead, but you pay the pull time.

When you omit image: in your .gittan.yaml, auto-detection picks the right gittan image based on your repo contents.

Every image includes

All gittan base images share a common layer with these tools pre-installed:

ToolWhy
gitWorkspace operations, submodules, version info
curlDownloads, webhook notifications, health checks
jqJSON processing in shell scripts
ca-certificatesHTTPS connections to registries and APIs

Language runtimes

One image per language, multiple supported versions. Based on official upstream slim images with the gittan base layer added.

ImageVersionsIncludesAuto-detected by
gittan/node22, 24npm, npx, corepack (pnpm, yarn)package.json
gittan/python3.13, 3.14uv, pip, venvpyproject.toml,requirements.txt
gittan/go1.24go toolchain, gccgo.mod
gittan/rust1.81cargo, rustc, clippyCargo.toml
gittan/java21Eclipse Temurin JDKpom.xml,build.gradle
gittan/dotnet9dotnet SDK, NuGet*.csproj,*.sln
gittan/ruby3.4bundler, gemGemfile
gittan/php8.4PHP CLIcomposer.json
gittan/elixir1.18mix, hexmix.exs

Platform images

For repos that aren't application code — infrastructure, GitOps config, static sites. These include domain-specific toolchains instead of language runtimes.

ImageIncludesAuto-detected by
gittan/dockerdocker CLI (builds via Dagger, not docker-in-docker)Dockerfile
gittan/kube-toolskubeconform, kyverno, kustomizekustomization.yaml
gittan/pulumiPulumi CLI, Node.js runtimePulumi.yaml
gittan/infraTerraform CLImain.tf
gittan/gitopsHelm CLIChart.yaml
gittan/staticHugo extended editionhugo.toml,hugo.yaml

Tool images

Used by org-level policies to inject mandatory steps. Not typically referenced in .gittan.yaml directly — they run because a policy says so.

ImagePurpose
gittan/gitleaksSecret scanning — finds hardcoded tokens, passwords, API keys
gittan/trivyVulnerability scanning — CVEs in dependencies and container images
gittan/kubeconformKubernetes manifest validation against schemas
gittan/kyvernoPolicy validation — security baselines, best practices
gittan/cosignContainer image signing and provenance attestation

Using your own image

Any image works. Use a public registry or push to your org's images.gittan.eu registry.

steps:
  - name: convert
    image: jrottenberg/ffmpeg:7-slim
    run: ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4

The same sandbox applies regardless of image. Your container runs with a read-only root filesystem, no network access (except during dependency install), dropped capabilities, and resource limits. There is no way to install additional packages at runtime or reach internal infrastructure.

gittan images are faster because they are pre-pulled on every runner. External images are pulled on demand — the pull time shows in your pipeline output so you see the cost.

Provenance

Every gittan base image is built with a verified provenance chain: the upstream image signature is verified before build, the resulting image is signed with keyless Sigstore using the build pipeline's OIDC identity, and the runner verifies the signature before running any step. A tampered or unsigned image never executes.

See supply chain security for the full verification chain.

Version pinning

gittan images use major-version tags (gittan/node:22) that resolve to a specific digest internally. The digest is updated when security patches land upstream, but the API surface stays stable within a major version.

For external images, you must provide a digest or a version tag. :latest is rejected. See image pinning for details.

Requesting a new image

Need a language or tool that isn't listed? Open an issue or contact the gittan team. New images are added when there is real demand — we do not maintain images nobody uses.