Skip to content

Projects and Tasks

A project is a group of people, machines and caches. A task inside a project is one repository plus the flake outputs to build from that repository.

flowchart LR
    workers[Workers] -- enabled per project --> project
    subgraph project[Project]
        tasks[Tasks]
    end
    project -- subscribed to --> cache[(Caches)]
    workers -- build outputs --> cache

Project

  • Members and Roles: Admin, Write, View, or custom roles built from single permissions.
  • SSH Key: one Ed25519 key per project, generated automatically, for cloning private repositories.
  • Workers: workers only receive jobs from projects with the worker enabled.
  • Teams: granted teams bring their users with a role, their workers, or both.
  • Cache Subscriptions: build outputs of a project go to every subscribed cache.
  • Integrations: connections to GitHub, Gitea / Forgejo or GitLab for incoming events and outgoing status.

Task

Part Purpose
Repository URL Location of the flake
Evaluation Wildcard Which flake outputs to build, see wildcards
Triggers Start condition and branch of an evaluation: push, pull request, polling (every 300 s by default) or a cron schedule
Actions Follow-up steps: mail, web request, Git host status, flake update pull request
Flake Input Overrides Replace a flake input for every evaluation, e.g. a newer nixpkgs
Keep Evaluations How many finished evaluations stay, 30 by default

Concurrency

A task is limited to one active evaluation at a time. Triggers firing during a running evaluation follow the task's concurrency policy.

Policy Running evaluation Running builds
soft_abort (default) Aborted, with the new evaluation taking over Finish, and the new evaluation will reuse their outputs
hard_abort Aborted Cancelled
skip Running on Keep running. The new event is dropped
all Running on, with the new evaluation running alongside Keep running
  • First Project: create a project and a task
  • Overview: the whole path from evaluation and build to worker and cache