A compiled output from a CI build
A build artifact is the immutable output of a build process: a compiled binary, a container image, a packaged library. The build turns source code into the thing that actually runs, and the artifact is that thing, frozen. The discipline around it rests on one principle: build once, deploy many. You build the artifact a single time, then promote that exact artifact through testing, staging, and production unchanged. The tension this resolves is identity. If each environment rebuilds from source, you can never be certain the code you tested is the code you shipped. A single immutable artifact removes the doubt.
Build-once-deploy-many became doctrine as continuous delivery matured. Jez Humble and David Farley's Continuous Delivery (2010) argued that the same binary should flow through every stage of the pipeline, because rebuilding per environment reintroduces the very riskRiskComplianceA risk to the product or businessView reference → the pipeline exists to remove. Artifact registries, from Maven Central through container registries, gave these outputs a versioned, addressable home.
The recent shift is from identity to provenance. A 2021 supply-chain attack wave, including the SolarWinds compromise where malicious code was injected into the build, made a hard question urgent: was this artifact actually built from the source we approved? The answer is SLSA, Supply-chain Levels for Software Artifacts, which attaches signed provenance to each artifact describing how, where, and from what source it was built. Provenance is expressed as a signed attestation, and once published for an artifact it is immutable and cannot be overwritten (Kusari). The artifact stopped being a passive output and became a verifiable claim about its own origin.
A team's CI pipelineCI PipelineDevOps & PlatformA CI/CD pipelineView reference → builds a container image once, tags it with the commit hash, and pushes it to a registry. That same image, byte-for-byte, is pulled into the test environmentTest EnvironmentQuality AssuranceA testing environmentView reference →, then staging, then production. No environment rebuilds. When the image is built, the pipeline also generates SLSA provenance: a signed statement naming the source commit, the build steps, and the builder identity. Three months later a vulnerabilityVulnerabilitySecurityA known vulnerabilityView reference → surfaces in a dependencyDependencyTeam & OrganisationA cross-team or system dependencyView reference →. The team queries the registry for every artifact whose provenance lists that dependency, finds the affected images in minutes, and proves which production deploymentDeploymentEngineeringA deployment eventView reference → shipped which build. Without the immutable artifact and its attestation, that audit would be guesswork against environments that may each have rebuilt differently.
In the Unified Product Graph, a build artifact sits in the engineering region as the immutable output of building. Two edges define its origin: ServiceproducesBuild Artifacthierarchy ties an artifact to the service it embodies, and service_produces_build_artifactCI PipelineproducesBuild Artifacthierarchy ties it to the pipeline run that made it. Modelling the artifact as its own node, distinct from both the service and the pipeline, is what makes provenance queryable: you can walk from a running deployment back to the exact artifact, then back to the pipeline and source that produced it, which is the chain a supply-chain audit has to follow.ci_pipeline_produces_build_artifact
Type-specific fields on BaseNode
artifact_typestringType
versionstringVersion
sizestringHuman-readable size (e.g. "12.4 MB")
registrystringRegistry or storage location
build_urlstringURL of the producing CI/CD build run (GitHub Actions, CircleCI, etc.).
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
2 edge types connected to this entity.
service_produces_build_artifactci_pipeline_produces_build_artifact