Summary
Add Software Bill of Materials (SBOM) generation to Docker builds for supply chain security and compliance.
Current State
No SBOM is generated during Docker builds.
Expected Outcome
Option A: Use Docker BuildKit SBOM
```bash
docker buildx build --sbom=true -t gomcp-server .
```
Option B: Use syft in CI
```yaml
.github/workflows/ci.yml
-
name: Generate SBOM
uses: anchore/sbom-action@v0
with:
image: gomcp-server:${{ github.sha }}
artifact-name: sbom.spdx.json
output-file: ./sbom.spdx.json
-
name: Upload SBOM
uses: actions/upload-artifact@v4
with:
name: sbom
path: ./sbom.spdx.json
```
Option C: Use ko for Go-native builds
```yaml
- name: Build with ko
uses: ko-build/setup-ko@v0.6
- run: ko build --sbom=spdx ./cmd/server
```
Benefits
- Compliance: Required for many enterprise deployments
- Vulnerability tracking: Know exactly what's in your container
- Incident response: Quickly identify affected deployments
- Transparency: Users can audit dependencies
Acceptance Criteria
Summary
Add Software Bill of Materials (SBOM) generation to Docker builds for supply chain security and compliance.
Current State
No SBOM is generated during Docker builds.
Expected Outcome
Option A: Use Docker BuildKit SBOM
```bash
docker buildx build --sbom=true -t gomcp-server .
```
Option B: Use syft in CI
```yaml
.github/workflows/ci.yml
name: Generate SBOM
uses: anchore/sbom-action@v0
with:
image: gomcp-server:${{ github.sha }}
artifact-name: sbom.spdx.json
output-file: ./sbom.spdx.json
name: Upload SBOM
uses: actions/upload-artifact@v4
with:
name: sbom
path: ./sbom.spdx.json
```
Option C: Use ko for Go-native builds
```yaml
uses: ko-build/setup-ko@v0.6
```
Benefits
Acceptance Criteria