Skip to content

Commit 20d9e9f

Browse files
laurentsimonIan Lewisolivekl
authored
docs: Improve selection of builder (#2512)
closes #2501 @olivekl ptal /cc @ianlewis --------- Signed-off-by: laurentsimon <[email protected]> Signed-off-by: laurentsimon <[email protected]> Co-authored-by: Ian Lewis <[email protected]> Co-authored-by: olivekl <[email protected]>
1 parent c3ae3e3 commit 20d9e9f

File tree

1 file changed

+53
-47
lines changed

1 file changed

+53
-47
lines changed

README.md

Lines changed: 53 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919
- [Hall of Fame](#hall-of-fame)
2020
- [Generation of Provenance](#generation-of-provenance)
2121
- [Builder Creation](#builder-creation)
22-
- [Roadmap](#roadmap)
23-
- [Generation of provenance](#generation-of-provenance)
22+
- [Generate provenance](#generate-provenance)
2423
- [Referencing SLSA builders and generators](#referencing-slsa-builders-and-generators)
2524
- [Builders](#builders)
26-
- [Provenance-only generators](#provenance-only-generators)
27-
- [Verification of provenance](#verification-of-provenance)
25+
- [Generators](#generators)
26+
- [Verify provenance](#verify-provenance)
2827
- [Installation](#installation)
2928
- [Inputs](#inputs)
3029
- [Command line examples](#command-line-examples)
3130
- [Build Your Own Builder](#build-your-own-builder)
31+
- [Project Roadmap](#project-roadmap)
3232
- [Technical design](#technical-design)
3333
- [Specifications](#specifications)
3434
- [Provenance format](#provenance-format)
@@ -38,9 +38,13 @@
3838

3939
## Overview
4040

41+
This repository contains free tools to generate and verify SLSA Build Level 3 provenance for native GitHub projects using GitHub Actions.
42+
Developers can build their software using a secure process that protects against many supply chain attacks and tampering.
43+
Users of their software can verify a tamper-proof statement of the process to know how the software was created.
44+
4145
### What is SLSA?
4246

43-
[Supply chain Levels for Software Artifacts](https://slsa.dev), or SLSA (salsa),
47+
[Supply-chain Levels for Software Artifacts](https://slsa.dev), or SLSA (salsa),
4448
is a security framework, a check-list of standards and controls to prevent
4549
tampering, improve integrity, and secure packages and infrastructure in your
4650
projects, businesses or enterprises.
@@ -88,8 +92,8 @@ While slsa-github-generator can help you achieve SLSA Build level 3, use of the
8892
only is not sufficient to meet all of the requirements at SLSA Build level 3.
8993
Specifically, these workflows do not address provenance
9094
[distribution](https://slsa.dev/spec/v1.0/distributing-provenance) or
91-
[verification](https://slsa.dev/spec/v1.0/verifying-artifacts). Those requirements
92-
must be handled separately to meet SLSA Build level 3+.
95+
[verification](https://slsa.dev/spec/v1.0/verifying-artifacts).
96+
You can use the [slsa-verifier](#verify-provenance) to verify the provenance.
9397

9498
### Hall of Fame
9599

@@ -101,26 +105,23 @@ Below is a non-exhaustive list of projects that use the builders in this reposit
101105

102106
#### Builder Creation
103107

104-
Several builders have been built using the "Build Your Own Builder" (BYOB):
108+
Several builders have been built using the ["Build Your Own Builder" (BYOB) framework](#build-your-own-builder):
105109

106110
1. [nodejs builder](https://github.com/slsa-framework/slsa-github-generator/tree/main/internal/builders/nodejs#readme), by @ianlewis
107111
2. [JReleaser builder](https://github.com/jreleaser/release-action/tree/java#slsa-builder), by @aalmiray
108112
3. [Maven builder](https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/maven/README.md), by @AdamKorcz
109113
4. [Gradle builder](https://github.com/slsa-framework/slsa-github-generator/tree/main/internal/builders/gradle/README.md), by @AdamKorcz
110114
5. Coming soon! [Bazel builder](https://github.com/slsa-framework/slsa-github-generator/tree/main/internal/builders/bazel/README.md), by @enteraga6
111115

112-
## Roadmap
116+
## Generate provenance
113117

114-
The project roadmap is tracked via milestones. You can track progress and open
115-
issues via the [milestones page](https://github.com/slsa-framework/slsa-github-generator/milestones?direction=asc&sort=due_date&state=open).
116-
Each milestone includes a description of what is being worked on and a rough
117-
timeline for completion.
118-
119-
## Generation of provenance
120-
121-
Below we describe the various builders and generators in this repository. They let you build and / or generate non-forgeable provenance
118+
Below we describe the various [builders](#builders) and [generators](#generators) in this repository. They build and / or generate non-forgeable provenance
122119
using a trusted / isolated re-usable workflow. You can read up on the design in our [technical design document](#technical-design).
123120

121+
To select the right option to geneate provenance for your use case, take into account the programming language and build toolchain you already use, e.g. `go`, `mvn`, `bazel`, etc. Select a [builder](#builders) for your ecosystem.
122+
For example, if you use Go, use the [Go builder](internal/builders/go/README.md). If you use Java and build Maven packages, use the [Maven builder](internal/builders/maven/README.md), and so on.
123+
If your release scripts are more complex than what the builder supports; or if there is no builder for your ecosystem, use a provenance [generator](#generators) instead.
124+
124125
### Referencing SLSA builders and generators
125126

126127
At present, the GitHub Actions provided in this repository as builders and generators **MUST** be referenced
@@ -134,54 +135,50 @@ For guidance on how to configure renovate see [RENOVATE.md](RENOVATE.md).
134135

135136
### Builders
136137

137-
Build platforms build and generate provenance. They let you meet the
138+
Builders build and generate provenance. They let you meet the
138139
[provenance generation](https://slsa.dev/spec/v1.0/requirements#provenance-generation) and
139140
[isolation strength](https://slsa.dev/spec/v1.0/requirements#isolation-strength)
140141
requirements for [SLSA Build level 3 and above](https://slsa.dev/spec/v1.0/levels).
141142

142143
This repository hosts the following builders:
143144

144-
1. [Go Builder](internal/builders/go/README.md). **Status**: [available since v1.0.0](https://github.com/slsa-framework/slsa-github-generator/milestone/1). This builder builds and generates provenance for your [Go](https://go.dev/) projects.
145-
2. [Node.js Builder](internal/builders/nodejs/README.md).
146-
**Status**: [Beta since v1.6.0](https://github.com/slsa-framework/slsa-github-generator/milestone/8).
147-
[Expected GA release Sept 2023](https://github.com/slsa-framework/slsa-github-generator/milestone/17).
148-
3. [Container-based Builder](internal/builders/docker/README.md). **Status**: [Beta release since v1.7.0](https://github.com/slsa-framework/slsa-github-generator/milestone/4). This builder builds arbitrary artifacts by executing a user-supplied container image.
149-
4. [Maven builder](internal/builders/maven/README.md). **Status**: [Beta since v1.8.0](https://github.com/slsa-framework/slsa-github-generator/milestone/14). This builder builds [Maven](https://maven.apache.org/) packages. The package and its attestations can be uploaded to [Maven central](https://search.maven.org).
150-
5. [Gradle builder](internal/builders/gradle/README.md). **Status**: [Beta since v1.8.0](https://github.com/slsa-framework/slsa-github-generator/milestone/15). This builder builds [Gradle](https://gradle.org/) projects. The Maven package and its attestations can be uploaded to Maven central.
151-
6. [Bazel builder](internal/builders/bazel/README.md). **Status**: [WIP](https://github.com/slsa-framework/slsa-github-generator/milestone/16).
152-
[Expected beta-release Sept 2023](https://github.com/slsa-framework/slsa-github-generator/milestone/16). This builder builds [Bazel](https://bazel.build/) projects.
153-
7. Container Builder. **Status**: [WIP](https://github.com/slsa-framework/slsa-github-generator/milestone/5).
154-
This builder builds your container image and generate provenance. The generated provenance is compatible with
155-
[cosign](https://github.com/sigstore/cosign)'s attestation format.
145+
| Ecosystem | Builder | Description | Status |
146+
|:-----------|:-----------------|:------------|:--------|
147+
| [Go](https://go.dev/) projects | [Go Builder](internal/builders/go/README.md) | Builds and generates provenance for Go projects | [available since v1.0.0](https://github.com/slsa-framework/slsa-github-generator/milestone/1) |
148+
| [Node.js](https://nodejs.org) projects | [Node.js Builder](internal/builders/nodejs/README.md) | Builds and generates provenance for npm packages | [Beta since v1.6.0](https://github.com/slsa-framework/slsa-github-generator/milestone/8). [Expected GA release Sept 2023](https://github.com/slsa-framework/slsa-github-generator/milestone/17)
149+
| [Maven](https://maven.apache.org/) projects | [Maven builder](internal/builders/maven/README.md) | Build Maven packages and generates provenance. Can be uploaded to [Maven central](https://search.maven.org) | [Beta since v1.8.0](https://github.com/slsa-framework/slsa-github-generator/milestone/14) |
150+
| [Gradle](https://gradle.org/) projects | [Gradle builder](internal/builders/gradle/README.md) | Build Gradle projects and generates provenance. Can be uploaded to [Maven central](https://search.maven.org) | [Beta since v1.8.0](https://github.com/slsa-framework/slsa-github-generator/milestone/15) |
151+
| [Bazel](https://bazel.build/) projects | [Bazel builder](internal/builders/bazel/README.md) | Builds [Bazel](https://bazel.build/) projects and generates provenance | [Beta release August 2023](https://github.com/slsa-framework/slsa-github-generator/milestone/16) |
152+
| [docker](https://www.docker.com/) images | Container Builder | Builds docker containers and generates provenance. The generated provenance is compatible with [cosign](https://github.com/sigstore/cosign)'s attestation format | [WIP](https://github.com/slsa-framework/slsa-github-generator/milestone/5) |
153+
| Any | [Container-based Builder](internal/builders/docker/README.md) | Builds projects whose build pipeline is defined with a Dockerfile | [Beta since v1.7.0](https://github.com/slsa-framework/slsa-github-generator/milestone/16) |
156154

157155
There are other available builders using this repository's [BYOB framework](#build-your-own-builder) and not hosted in this repository:
158156

159-
1. [JReleaser builder](https://github.com/jreleaser/release-action/tree/java#slsa-builder). Lets you build and generate provenance using [JReleaser](https://jreleaser.org/).
157+
| Ecosystem | Builder | Description | Status |
158+
|:-----------|:-----------------|:------------|:--------|
159+
| [JReleaser](https://jreleaser.org/) projects | [JReleaser builder](https://github.com/jreleaser/release-action/tree/java#slsa-builder) | Builds and generates provenance using [JReleaser](https://jreleaser.org/) | [Beta since v1.8.0](https://github.com/slsa-framework/slsa-github-generator/milestone/16) |
160160

161-
If you would rather build your project yourself, use the generators instead as explained in the next section.
161+
If none of these options fit your needs, use a [generator](#generators) as described below:
162162

163-
### Provenance-only generators
163+
### Generators
164164

165-
Provenance-only generators let you build your artifact, and only generate provenance for you.
166-
They let you meet the [provenance generation](https://slsa.dev/spec/v1.0/requirements#provenance-generation) requirements
167-
for [SLSA Build level 3](https://slsa.dev/spec/v1.0/levels).
165+
Generators only generate provenance for you. They let you meet the
166+
[provenance generation](https://slsa.dev/spec/v1.0/requirements#provenance-generation) and
167+
[isolation strength](https://slsa.dev/spec/v1.0/requirements#isolation-strength)
168+
requirements for [SLSA Build level 3 and above](https://slsa.dev/spec/v1.0/levels).
168169

169170
Generators create an attestation to a software artifact coming from your repository.
170171

171-
Generators are _not_ able to report the commands used to generate your artifact in the provenance.
172-
173172
This repository hosts the following generators:
174173

175-
1. [Generic generator SLSA Level 3](internal/builders/generic/README.md). **Status**: [available since v1.2.0](https://github.com/slsa-framework/slsa-github-generator/milestone/2).
176-
This generator generates provenance for arbitrary artifacts of your choice. To use it,
177-
follow the [Generic generator's README.md](internal/builders/generic/README.md).
178-
2. [Container generator SLSA Level 3](internal/builders/container/README.md). **Status**: [available since v1.4.0](https://github.com/slsa-framework/slsa-github-generator/milestone/3).
179-
This generator will generate provenance for container images. The generated provenance will be compatible with
180-
[cosign](https://github.com/sigstore/cosign)'s attestation format.
174+
| Artifact type | Generator | Description | Status |
175+
|:--------------|:------------------|:-------------|:-------|
176+
| file (binary, package tarball etc.) | [Generic generator](internal/builders/generic/README.md) | Generates provenance for arbitrary file-based artifacts, for any ecosystem and programming language | [available since v1.2.0](https://github.com/slsa-framework/slsa-github-generator/milestone/2) |
177+
| container | [Container generator](internal/builders/container/README.md) | Generate provenance for container images. The generated provenance is compatible with [cosign](https://github.com/sigstore/cosign)'s attestation format. | [available since v1.4.0](https://github.com/slsa-framework/slsa-github-generator/milestone/3)
181178

182-
## Verification of provenance
179+
## Verify provenance
183180

184-
To verify the provenance, use the [github.com/slsa-framework/slsa-verifier](https://github.com/slsa-framework/slsa-verifier) project.
181+
To verify provenance created by any of the builders in this repository, use the [github.com/slsa-framework/slsa-verifier](https://github.com/slsa-framework/slsa-verifier) project.
185182

186183
### Installation
187184

@@ -197,7 +194,16 @@ A command line example is provided in [slsa-framework/slsa-verifier#example](htt
197194

198195
## Build Your Own Builder
199196

200-
If you want to build your own builder, use the [BYOB framework](BYOB.md). The framework lets you create your own SLSA3 builder on GitHub. For example, you can wrap an existing GitHub Action into a SLSA3 builder. For verification, your users can use the [slsa-verifier](#verification-of-provenance).
197+
Use the [BYOB framework](BYOB.md) to create your own SLSA builder on GitHub. If you have an existing GitHub Action, you can use the BYOB framework to wrap it into a SLSA builder.
198+
This will harden the build process by runing the Action in an isolated environment. Generated artifacts will meet Build Level 3 expectations and produce Build Level 3 provenance.
199+
To verify the provenance, your users can use the [slsa-verifier](#verification-of-provenance).
200+
201+
## Project Roadmap
202+
203+
The project roadmap is tracked via milestones. You can track progress and open
204+
issues via the [milestones page](https://github.com/slsa-framework/slsa-github-generator/milestones?direction=asc&sort=due_date&state=open).
205+
Each milestone includes a description of what is being worked on and a rough
206+
timeline for completion.
201207

202208
## Technical design
203209

0 commit comments

Comments
 (0)