What Dutest does
- Plans and stages
- Stages run in order. Jobs within a stage run in parallel, each on one agent, and every step of a job shares that agent's workspace.
- Agents
- Connect out over gRPC and advertise what they can do. A job is only offered to an agent that satisfies its requirements.
- Runtimes
- Native subprocesses, or a Docker container per job.
- Artifacts
- Produced by one stage, consumed by a later one, downloadable from the build page, and hashed on the way in so their provenance is signed.
- Tests
- Read from JUnit XML, with history and quarantine. A case is labelled against the last run of its job, so a regression stands out from what was already failing.
- Deployments
- Named releases sent to an ordered set of environments, with their own permissions. A plan can ship itself.
- Secrets
- Encrypted at rest, scoped from global down to one environment, never readable back through the API, and struck out of build output on the agent.
- Permissions and audit
- Projects, plans, deployment projects and environments, for local accounts, OIDC users and groups, and API tokens. Everything anyone changed is on an append-only trail.