Class: BuildDefinition
Describes all inputs to the build in enough detail to initialise and reproduce the build. The accuracy and completeness are implied by the builder identified in runDetails.
URI: slsa:BuildDefinition
classDiagram
class BuildDefinition
click BuildDefinition href "../BuildDefinition/"
BuildDefinition : buildType
BuildDefinition : externalParameters
BuildDefinition : hermeticBuild
BuildDefinition : internalParameters
BuildDefinition : pipelineOrchestrator
BuildDefinition : provenanceGenerationTool
BuildDefinition : resolvedDependencies
BuildDefinition --> "*" ResourceDescriptor : resolvedDependencies
click ResourceDescriptor href "../ResourceDescriptor/"
Slots
| Name | Cardinality and Range | Description | Inheritance |
|---|---|---|---|
| buildType | 1 String |
URI identifying the template for how to perform the build and how to interpre... | direct |
| externalParameters | 0..1 String |
Top-level, independent inputs under external (tenant or user) control | direct |
| internalParameters | 0..1 String |
Parameters set internally by the build platform | direct |
| resolvedDependencies | * ResourceDescriptor |
Unordered collection of artifacts needed at build time (config files, source,... | direct |
| hermeticBuild | 0..1 Boolean |
Whether all build inputs are fully isolated to the dependencies declared in r... | direct |
| provenanceGenerationTool | 0..1 String |
URI or name of the tool used to generate provenance for this build (e | direct |
| pipelineOrchestrator | 0..1 String |
URI or name of the CI/CD pipeline orchestration system that coordinated this ... | direct |
Usages
| used by | used in | type | used |
|---|---|---|---|
| SlsaDocument | buildDefinition | range | BuildDefinition |
| BuildProvenance | buildDefinition | range | BuildDefinition |
In Subsets
Notes
- Hermetic build challenge (Tamanna et al., 2024, CI.1): Over 50% of practitioners surveyed by OpenSSF found hermetic builds difficult to implement. Non-build configurations (e.g., GoReleaser publish-only steps) lack explicit hermetic-build tool support. Use hermeticBuild to record whether L3 isolation is satisfied.
- Provenance generation standardization (Tamanna et al., 2024, S3.1): Recording which tool generated this provenance via provenanceGenerationTool supports standardization, reproducibility verification, and incident response.
Identifier and Mapping Information
Schema Source
- from schema: https://w3id.org/lmodel/slsa
Mappings
| Mapping Type | Mapped Value |
|---|---|
| self | slsa:BuildDefinition |
| native | slsa:BuildDefinition |
LinkML Source
Direct
name: BuildDefinition
description: Describes all inputs to the build in enough detail to initialise and
reproduce the build. The accuracy and completeness are implied by the builder identified
in runDetails.
notes:
- 'Hermetic build challenge (Tamanna et al., 2024, CI.1): Over 50% of practitioners
surveyed by OpenSSF found hermetic builds difficult to implement. Non-build configurations
(e.g., GoReleaser publish-only steps) lack explicit hermetic-build tool support.
Use hermeticBuild to record whether L3 isolation is satisfied.'
- 'Provenance generation standardization (Tamanna et al., 2024, S3.1): Recording which
tool generated this provenance via provenanceGenerationTool supports standardization,
reproducibility verification, and incident response.'
in_subset:
- slsa_build_track
from_schema: https://w3id.org/lmodel/slsa
slots:
- buildType
- externalParameters
- internalParameters
- resolvedDependencies
- hermeticBuild
- provenanceGenerationTool
- pipelineOrchestrator
Induced
name: BuildDefinition
description: Describes all inputs to the build in enough detail to initialise and
reproduce the build. The accuracy and completeness are implied by the builder identified
in runDetails.
notes:
- 'Hermetic build challenge (Tamanna et al., 2024, CI.1): Over 50% of practitioners
surveyed by OpenSSF found hermetic builds difficult to implement. Non-build configurations
(e.g., GoReleaser publish-only steps) lack explicit hermetic-build tool support.
Use hermeticBuild to record whether L3 isolation is satisfied.'
- 'Provenance generation standardization (Tamanna et al., 2024, S3.1): Recording which
tool generated this provenance via provenanceGenerationTool supports standardization,
reproducibility verification, and incident response.'
in_subset:
- slsa_build_track
from_schema: https://w3id.org/lmodel/slsa
attributes:
buildType:
name: buildType
description: URI identifying the template for how to perform the build and how
to interpret the parameters and dependencies. SHOULD resolve to a human-readable
specification. REQUIRED at SLSA Build L1.
in_subset:
- slsa_build_track
from_schema: https://w3id.org/lmodel/slsa
rank: 1000
alias: buildType
owner: BuildDefinition
domain_of:
- BuildDefinition
range: string
required: true
externalParameters:
name: externalParameters
description: Top-level, independent inputs under external (tenant or user) control.
MUST be complete at SLSA Build L3. Stored as a JSON object. Verifiers SHOULD
reject unrecognized fields.
notes:
- 'SSF pipeline definition files (CNCF TAG-Security Secure Software Factory):
In Tekton-based SSF pipelines, externalParameters typically contains the PipelineRun
YAML reference or TaskRun definition URI. For GitHub Actions, it would contain
the workflow file path and ref. These values MUST be complete and verifiable
at SLSA Build L3 so that consumers can confirm the exact build recipe. Use pipelineOrchestrator
to record the CI system and provenanceGenerationTool (in BuildDefinition) to
record the attestation generator (e.g., Tekton Chains).'
in_subset:
- slsa_build_track
from_schema: https://w3id.org/lmodel/slsa
rank: 1000
alias: externalParameters
owner: BuildDefinition
domain_of:
- BuildDefinition
range: string
internalParameters:
name: internalParameters
description: Parameters set internally by the build platform. Intended for debugging,
incident response, and enabling reproducible builds. Stored as a JSON object;
need not be verified by consumers.
in_subset:
- slsa_build_track
from_schema: https://w3id.org/lmodel/slsa
rank: 1000
alias: internalParameters
owner: BuildDefinition
domain_of:
- BuildDefinition
range: string
resolvedDependencies:
name: resolvedDependencies
description: Unordered collection of artifacts needed at build time (config files,
source, build tools). Completeness is best effort through SLSA Build L3.
in_subset:
- slsa_build_track
from_schema: https://w3id.org/lmodel/slsa
rank: 1000
alias: resolvedDependencies
owner: BuildDefinition
domain_of:
- BuildDefinition
range: ResourceDescriptor
multivalued: true
inlined: true
inlined_as_list: true
hermeticBuild:
name: hermeticBuild
description: Whether all build inputs are fully isolated to the dependencies declared
in resolvedDependencies, with no network access or filesystem references outside
the explicit build graph. Hermetic builds are a stated requirement for SLSA
Build L3; practitioners identified this as one of the most commonly cited implementation
barriers, with over 50% of surveyed practitioners finding hermetic build requirements
difficult to implement (Tamanna et al., 2024, CI.1).
in_subset:
- slsa_build_track
- slsa_adoption_study
from_schema: https://w3id.org/lmodel/slsa
rank: 1000
alias: hermeticBuild
owner: BuildDefinition
domain_of:
- BuildDefinition
range: boolean
provenanceGenerationTool:
name: provenanceGenerationTool
description: URI or name of the tool used to generate provenance for this build
(e.g., "https://github.com/slsa-framework/slsa-github-generator"). Standardizing
this field across builds reduces confusion, supports reproducibility verification,
and aligns with the recommended strategy of simplifying and standardizing provenance
generation processes (Tamanna et al., 2024, S3.1).
in_subset:
- slsa_build_track
- slsa_adoption_study
from_schema: https://w3id.org/lmodel/slsa
rank: 1000
alias: provenanceGenerationTool
owner: BuildDefinition
domain_of:
- BuildDefinition
range: string
pipelineOrchestrator:
name: pipelineOrchestrator
description: URI or name of the CI/CD pipeline orchestration system that coordinated
this build (e.g., "https://tekton.dev", "https://github.com/features/actions",
"https://jenkins.io"). In the SSF reference architecture this is the Build Service
layer that feeds the Artifact Registry. Providing this field helps distinguish
the orchestrator from the provenance-generating builder identity (builder.id)
in complex deployments where they differ (e.g., a Tekton Pipeline running on
Google Cloud Pipelines).
in_subset:
- slsa_build_track
- slsa_ssf
from_schema: https://w3id.org/lmodel/slsa
rank: 1000
alias: pipelineOrchestrator
owner: BuildDefinition
domain_of:
- BuildDefinition
range: string