Skip to content

Add SBOM generation to NuGet package#72

Merged
Malcolmnixon merged 3 commits intomainfrom
copilot/add-sbom-generation
Jan 12, 2026
Merged

Add SBOM generation to NuGet package#72
Malcolmnixon merged 3 commits intomainfrom
copilot/add-sbom-generation

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Jan 11, 2026

Adds automatic SBOM (Software Bill of Materials) generation in SPDX 2.2 format to the NuGet package for supply chain transparency.

Changes

  • Add Microsoft.Sbom.Targets (v2.2.8) to generate SBOM during pack
  • Configure SBOM properties to ensure correct package name, version, and supplier metadata
  • Remove demaconsulting.spdxtool from dotnet-tools.json (superseded by automatic generation)

Result

The NuGet package now includes _manifest/spdx_2.2/manifest.spdx.json with a complete inventory of all dependencies (11 packages including transitive).

<!-- SBOM Configuration -->
<GenerateSBOM>true</GenerateSBOM>
<SBOMPackageName>$(PackageId)</SBOMPackageName>
<SBOMPackageVersion>$(Version)</SBOMPackageVersion>
<SBOMPackageSupplier>Organization: $(Company)</SBOMPackageSupplier>

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • www.nuget.org
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node /home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps /home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>[Feature]: Add SBOM Generation</issue_title>
<issue_description>### Problem Statement

The NuGet package should include an SBOM.

Proposed Solution

Microsoft.Sbom.Targets should be used to add the SBOM to the NuGet package.

Alternatives Considered

No response

Additional Context

No response

Priority

Low - Nice to have

Contribution

  • I would be willing to submit a PR for this feature

Code of Conduct

  • I agree to follow this project's Code of Conduct</issue_description>

Comments on the Issue (you are @copilot in this section)


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 2 commits January 12, 2026 00:02
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Copilot AI changed the title [WIP] Add SBOM generation to NuGet package Add SBOM generation to NuGet package Jan 12, 2026
Copilot AI requested a review from Malcolmnixon January 12, 2026 00:06
@Malcolmnixon Malcolmnixon marked this pull request as ready for review January 12, 2026 00:15
@Malcolmnixon Malcolmnixon merged commit e3e5be2 into main Jan 12, 2026
13 checks passed
@Malcolmnixon Malcolmnixon deleted the copilot/add-sbom-generation branch January 12, 2026 00:15
Copilot AI added a commit that referenced this pull request Mar 26, 2026
Apply all missing changes from the TemplateDotNetTool template to bring
ReqStream into consistency with the latest template patterns.

Changes applied from PRs #58-#74:

PR #58 (ReviewMark integration):
- Add .reviewmark.yaml with ReqStream-specific review sets
- Add pip-requirements.txt (yamllint==1.38.0)
- Update lint.sh/lint.bat to use Python venv + pip pattern
- Update package.json with pinned cspell and markdownlint-cli2 devDependencies
- Add demaconsulting.reviewmark to .config/dotnet-tools.json
- Add reviewmark entry to .versionmark.yaml

PR #59 (Add Code Review Agent to AGENTS.md invocation rules):
- Add code-review agent to AGENTS.md available agents list
- Add new .github/agents/code-review.agent.md

PR #61 (Linting modernization and agent file standardization):
- Update .markdownlint-cli2.yaml with PURPOSE/DO NOT MODIFY header
- Update .yamllint.yaml with PURPOSE/DO NOT MODIFY header
- Remove check-keys from yamllint truthy rule (aligns with template)

PR #63 (enforce cspell word list policy):
- Update .cspell.yaml header comment (NEVER add misspelled word)
- Add missing technical terms to cspell word list (reviewmark, ReviewMark,
  versionmark, VersionMark, buildmark, BuildMark, gitattributes, etc.)

PR #64 (Align lint YAML configs):
- Apply standardized headers to markdownlint and yamllint configs

PR #65-#67, #70-#73 (Agent synchronization):
- Update code-quality.agent.md to template version (comprehensive content)
- Update agent frontmatter descriptions to match shorter template pattern
- Update repo-consistency agent and requirements, software-developer,
  technical-writer, test-developer agents

PR #71 (.gitattributes LF line endings):
- .gitattributes already had correct content

PR #72 (Simplify repo-consistency agent):
- repo-consistency.agent.md already aligned

PR #54 (Various improvements):
- Update .versionmark.yaml regex patterns to support pre-release versions
- Update .gitignore to match template structure

CONTRIBUTING.md:
- Rewrite to match template standards with ReqStream-specific translation
- Add dotnet tool restore step, XML documentation section
- Add comprehensive testing guidelines with MSTest v4 assertions
- Add requirements management section
Malcolmnixon added a commit that referenced this pull request Mar 27, 2026
#131)

* Initial plan

* Apply TemplateDotNetTool improvements (PRs #61-#74)

- Add .gitattributes to enforce LF line endings (PR #71)
- Rename agent files to .agent.md naming convention (PR #61/#65)
- Add tools: and user-invocable: true to all agent frontmatter (PR #73)
- Use kebab-case name: fields in agent frontmatter
- Replace .cspell.json with .cspell.yaml (YAML format with policy comments) (PR #61/#63)
- Replace .markdownlint-cli2.jsonc with .markdownlint-cli2.yaml (PR #61)
- Update .yamllint.yaml ignore patterns with thirdparty dirs (PR #64)
- Update lint ignore paths with better glob patterns (PR #64)
- Add spell check word list policy to AGENTS.md (PR #63)
- Add Spell Checking section to CONTRIBUTING.md (PR #63)
- Update Defer To sections to Subagent Delegation pattern (PR #65)
- Fix linting config file name references in agent files

* Fix review comments: update agent file extension reference and line lengths

- Update .agent.md extension references in AGENTS.md and technical-writer.agent.md
- Remove 'Propagatable' from .cspell.yaml (not used in ReqStream)
- Fix MD013 line length violations in AGENTS.md and technical-writer.agent.md

* Remove unused spdx from cspell word list

* Apply template consistency updates from TemplateDotNetTool PRs #54-#74

Apply all missing changes from the TemplateDotNetTool template to bring
ReqStream into consistency with the latest template patterns.

Changes applied from PRs #58-#74:

PR #58 (ReviewMark integration):
- Add .reviewmark.yaml with ReqStream-specific review sets
- Add pip-requirements.txt (yamllint==1.38.0)
- Update lint.sh/lint.bat to use Python venv + pip pattern
- Update package.json with pinned cspell and markdownlint-cli2 devDependencies
- Add demaconsulting.reviewmark to .config/dotnet-tools.json
- Add reviewmark entry to .versionmark.yaml

PR #59 (Add Code Review Agent to AGENTS.md invocation rules):
- Add code-review agent to AGENTS.md available agents list
- Add new .github/agents/code-review.agent.md

PR #61 (Linting modernization and agent file standardization):
- Update .markdownlint-cli2.yaml with PURPOSE/DO NOT MODIFY header
- Update .yamllint.yaml with PURPOSE/DO NOT MODIFY header
- Remove check-keys from yamllint truthy rule (aligns with template)

PR #63 (enforce cspell word list policy):
- Update .cspell.yaml header comment (NEVER add misspelled word)
- Add missing technical terms to cspell word list (reviewmark, ReviewMark,
  versionmark, VersionMark, buildmark, BuildMark, gitattributes, etc.)

PR #64 (Align lint YAML configs):
- Apply standardized headers to markdownlint and yamllint configs

PR #65-#67, #70-#73 (Agent synchronization):
- Update code-quality.agent.md to template version (comprehensive content)
- Update agent frontmatter descriptions to match shorter template pattern
- Update repo-consistency agent and requirements, software-developer,
  technical-writer, test-developer agents

PR #71 (.gitattributes LF line endings):
- .gitattributes already had correct content

PR #72 (Simplify repo-consistency agent):
- repo-consistency.agent.md already aligned

PR #54 (Various improvements):
- Update .versionmark.yaml regex patterns to support pre-release versions
- Update .gitignore to match template structure

CONTRIBUTING.md:
- Rewrite to match template standards with ReqStream-specific translation
- Add dotnet tool restore step, XML documentation section
- Add comprehensive testing guidelines with MSTest v4 assertions
- Add requirements management section

* Split requirements.yaml into per-unit files and update .reviewmark.yaml review sets

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/e078de59-4efb-45e9-98e2-182adb75849f

* Update CONTRIBUTING.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add design documentation, move source filter comment, update reviewmark review sets

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/2b194e1a-0fcd-40ab-8fbf-6062639fbb37

* Add ValidationTests.cs and update review set and requirements links

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/c78e09f2-c209-4b61-9988-b016c910e62e

* Fix issues identified by code-review agent review of all review sets

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/c0d6ebe8-9cf3-41ce-b852-d85ca00b62f5

* Update docs/design/program.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update docs/design/validation.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update docs/design/requirements.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove brittle hardcoded test count assertions from ValidationTests

Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/64e3fd0a-6a0f-4311-ba6f-df04cc3cf436

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* Fix cspell failure: rephrase 'venv' to 'virtual environment support' in CONTRIBUTING.md

Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/acc9755d-ede8-4ec7-a4b8-c4a4af08956c

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* Add venv to cspell word list as approved technical term; restore natural wording in CONTRIBUTING.md

Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/cacc8054-fc75-4626-8e3c-4ed488cdea4e

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* Apply TemplateDotNetTool PR#75: remove buildnotes move step, use direct artifact path in release.yaml

Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/6720fcce-c0ec-4055-9d6d-a685202142b5

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* Complete PR#75 buildnotes→build_notes rename; bump buildmark to 0.4.1 (PR#70)

- Rename docs/buildnotes/ directory to docs/build_notes/
- Update docs/build_notes/definition.yaml path references
- Update build.yaml: rename all buildnotes.md → build_notes.md and buildnotes/ → build_notes/ paths
- Update release.yaml: fix bodyFile from artifacts/docs/buildnotes.md → artifacts/docs/build_notes.md
- Remove 'buildnotes' from .cspell.yaml word list (no longer a valid identifier)
- Bump DemaConsulting.BuildMark from 0.4.0 to 0.4.1 in .config/dotnet-tools.json

The previous PR#75 commit only removed the move step in release.yaml but did not
complete the rename from buildnotes to build_notes throughout the codebase.

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* Align docs/ folder structure with TemplateDotNetTool template

Exhaustive review and sync of all merged TemplateDotNetTool PRs:

## Folder Renames
- docs/quality/ → docs/code_quality/ (matches template naming)
- docs/requirements/ → docs/requirements_doc/ (matches template naming)
- docs/tracematrix/ → docs/requirements_report/ (matches template naming)

## Folders Removed
- docs/justifications/ (content now merged into docs/requirements_doc/)
- docs/design/ (replaced by per-unit YAML requirements in docs/reqstream/)

## New Folders Created
- docs/requirements_report/ (replaces tracematrix, uses trace_matrix.md)
- docs/code_review_plan/ (from PR #58: ReviewMark integration)
- docs/code_review_report/ (from PR #58: ReviewMark integration)

## definition.yaml Updates
- docs/code_quality/definition.yaml: updated resource-path and input-file paths
- docs/requirements_doc/definition.yaml: updated paths, added justifications.md input

## New Files
- docs/reqstream/ots-reviewmark.yaml (from PR #58: ReviewMark OTS requirements)

## Workflow Updates (build.yaml)
- Added reviewmark to versionmark capture tool list
- Added ReviewMark self-validation step
- Updated reqstream report paths to requirements_doc/ and requirements_report/
- Updated sarifmark/sonarmark report paths to code_quality/
- Added ReviewMark plan/report generation step
- Replaced justifications/tracematrix pandoc steps with requirements_report,
  code_review_plan, and code_review_report steps
- Replaced old Weasyprint PDF steps with new folder names
- Removed Requirements Justifications PDF (merged into Requirements PDF)
- Added Review Plan and Review Report PDF generation

## Other File Updates
- .reviewmark.yaml: removed docs/design/ pattern, added ots-reviewmark.yaml
  to OTS-Dependencies review set, removed docs/design/*.md from unit reviews
- .gitignore: updated generated file paths to new folder names
- .github/agents/code-quality.agent.md: updated reqstream command paths
- requirements.yaml: added ots-reviewmark.yaml include

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Co-authored-by: Malcolm Nixon <Malcolm.nixon@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Add SBOM Generation

2 participants