Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,18 @@
"commands": [
"sarifmark"
]
},
"demaconsulting.buildmark": {
"version": "0.2.0",
"commands": [
"buildmark"
]
},
"demaconsulting.versionmark": {
"version": "0.1.0",
"commands": [
"versionmark"
]
}
}
}
7 changes: 7 additions & 0 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
"words": [
"Anson",
"Blockquotes",
"buildmark",
"buildnotes",
"camelcase",
"copilot",
"cspell",
Expand Down Expand Up @@ -33,8 +35,11 @@
"opencover",
"pagetitle",
"pandoc",
"pandoctool",
"reqstream",
"ReqStream",
"Sarif",
"sarifmark",
"SBOM",
"semver",
"snupkg",
Expand All @@ -49,7 +54,9 @@
"trx",
"vbproj",
"vcxproj",
"versionmark",
"Weasyprint",
"weasyprinttool",
"yamllint"
],
"ignorePaths": [
Expand Down
118 changes: 117 additions & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,28 @@ jobs:
- name: Checkout
uses: actions/checkout@v6

- name: Setup dotnet
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.x

- name: Restore Tools
run: >
dotnet tool restore

- name: Capture tool versions
shell: bash
run: |
echo "Capturing tool versions..."
dotnet versionmark --capture --job-id "quality" -- dotnet git versionmark
echo "✓ Tool versions captured"

- name: Upload version capture
uses: actions/upload-artifact@v6
with:
name: version-capture-quality
path: versionmark-quality.json

- name: Run markdown linter
uses: DavidAnson/markdownlint-cli2-action@v22
with:
Expand Down Expand Up @@ -146,6 +168,23 @@ jobs:
--no-restore
--property:PackageVersion=${{ inputs.version }}

- name: Capture tool versions
shell: bash
run: |
echo "Capturing tool versions..."
# Create short job ID: build-win, build-ubuntu
OS_SHORT=$(echo "${{ matrix.os }}" | sed 's/windows-latest/win/;s/ubuntu-latest/ubuntu/')
JOB_ID="build-${OS_SHORT}"
dotnet versionmark --capture --job-id "${JOB_ID}" -- \
dotnet git dotnet-sonarscanner versionmark
echo "✓ Tool versions captured"

- name: Upload version capture
uses: actions/upload-artifact@v6
with:
name: version-capture-${{ matrix.os }}
path: versionmark-build-*.json

- name: Upload Test Results
uses: actions/upload-artifact@v6
with:
Expand Down Expand Up @@ -215,6 +254,19 @@ jobs:
output: sarif-results
upload: false

- name: Capture tool versions
shell: bash
run: |
echo "Capturing tool versions..."
dotnet versionmark --capture --job-id "codeql" -- dotnet git versionmark
echo "✓ Tool versions captured"

- name: Upload version capture
uses: actions/upload-artifact@v6
with:
name: version-capture-codeql
path: versionmark-codeql.json

- name: Upload SARIF
uses: actions/upload-artifact@v6
with:
Expand Down Expand Up @@ -264,6 +316,21 @@ jobs:
name: codeql-sarif
path: codeql-results

- name: Download all version captures
uses: actions/download-artifact@v7
with:
path: version-captures
pattern: 'version-capture-*'
continue-on-error: true

- name: Capture tool versions for build-docs
shell: bash
run: |
echo "Capturing tool versions..."
dotnet versionmark --capture --job-id "build-docs" -- \
dotnet git node npm pandoc weasyprint sarifmark sonarmark reqstream buildmark versionmark
echo "✓ Tool versions captured"

- name: Generate Requirements Report, Trace Matrix, and Justifications
run: >
dotnet reqstream
Expand Down Expand Up @@ -387,8 +454,57 @@ jobs:
docs/quality/quality.html
"docs/TestResults Code Quality.pdf"

- name: Generate Build Notes with BuildMark
shell: bash
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: >
dotnet buildmark
--build-version ${{ inputs.version }}
--report docs/buildnotes.md
--report-depth 1

- name: Display Build Notes Report
shell: bash
run: |
echo "=== Build Notes Report ==="
cat docs/buildnotes.md

- name: Publish Tool Versions
shell: bash
run: |
echo "Publishing tool versions..."
dotnet versionmark --publish --report docs/buildnotes/versions.md --report-depth 1 \
-- "versionmark-*.json" "version-captures/**/versionmark-*.json"
echo "✓ Tool versions published"

- name: Display Tool Versions Report
shell: bash
run: |
echo "=== Tool Versions Report ==="
cat docs/buildnotes/versions.md

- name: Generate Build Notes HTML with Pandoc
shell: bash
run: >
dotnet pandoc
--defaults docs/buildnotes/definition.yaml
--filter node_modules/.bin/mermaid-filter.cmd
--metadata version="${{ inputs.version }}"
--metadata date="$(date +'%Y-%m-%d')"
--output docs/buildnotes/buildnotes.html

- name: Generate Build Notes PDF with Weasyprint
run: >
dotnet weasyprint
--pdf-variant pdf/a-3u
docs/buildnotes/buildnotes.html
"docs/TestResults Build Notes.pdf"

- name: Upload Documentation
uses: actions/upload-artifact@v6
with:
name: documentation
path: docs/*.pdf
path: |
docs/*.pdf
docs/buildnotes.md
8 changes: 7 additions & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ jobs:
name: documentation
path: artifacts

- name: Move buildnotes.md to root
run: |
set -e
mv artifacts/docs/buildnotes.md buildnotes.md

- name: Clean Artifacts
shell: bash
run: |
Expand All @@ -71,7 +76,8 @@ jobs:
uses: ncipollo/release-action@v1
with:
artifacts: 'artifacts/**/*'
generateReleaseNotes: true
bodyFile: buildnotes.md
generateReleaseNotes: false
tag: ${{ inputs.version }}

- name: Publish to Nuget
Expand Down
64 changes: 64 additions & 0 deletions .versionmark.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
# VersionMark Configuration File
# This file defines which tools to capture and how to extract their version information.

tools:
# .NET SDK
dotnet:
command: dotnet --version
regex: '(?<version>\d+\.\d+\.\d+(?:\.\d+)?)'

# Git
git:
command: git --version
regex: '(?i)git version (?<version>\d+\.\d+\.\d+)'

# Node.js
node:
command: node --version
regex: '(?i)v(?<version>\d+\.\d+\.\d+)'

# npm
npm:
command: npm --version
regex: '(?<version>\d+\.\d+\.\d+)'

# SonarScanner for .NET (from dotnet tool list)
dotnet-sonarscanner:
command: dotnet tool list
regex: '(?i)dotnet-sonarscanner\s+(?<version>\d+\.\d+\.\d+)'

# Pandoc (DemaConsulting.PandocTool from dotnet tool list)
pandoc:
command: dotnet tool list
regex: '(?i)demaconsulting\.pandoctool\s+(?<version>\d+\.\d+\.\d+)'

# WeasyPrint (DemaConsulting.WeasyPrintTool from dotnet tool list)
weasyprint:
command: dotnet tool list
regex: '(?i)demaconsulting\.weasyprinttool\s+(?<version>\d+\.\d+\.\d+)'

# SarifMark (DemaConsulting.SarifMark from dotnet tool list)
sarifmark:
command: dotnet tool list
regex: '(?i)demaconsulting\.sarifmark\s+(?<version>\d+\.\d+\.\d+)'

# SonarMark (DemaConsulting.SonarMark from dotnet tool list)
sonarmark:
command: dotnet tool list
regex: '(?i)demaconsulting\.sonarmark\s+(?<version>\d+\.\d+\.\d+)'

# ReqStream (DemaConsulting.ReqStream from dotnet tool list)
reqstream:
command: dotnet tool list
regex: '(?i)demaconsulting\.reqstream\s+(?<version>\d+\.\d+\.\d+)'

# BuildMark (DemaConsulting.BuildMark from dotnet tool list)
buildmark:
command: dotnet tool list
regex: '(?i)demaconsulting\.buildmark\s+(?<version>\d+\.\d+\.\d+)'

# VersionMark (DemaConsulting.VersionMark from dotnet tool list)
versionmark:
command: dotnet tool list
regex: '(?i)demaconsulting\.versionmark\s+(?<version>\d+\.\d+\.\d+)'
12 changes: 12 additions & 0 deletions docs/buildnotes/definition.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
resource-path:
- docs/buildnotes
- docs/template
input-files:
- docs/buildnotes/title.txt
- docs/buildnotes/introduction.md
- docs/buildnotes.md
- docs/buildnotes/versions.md
template: template.html
table-of-contents: true
number-sections: true
33 changes: 33 additions & 0 deletions docs/buildnotes/introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Introduction

This document contains the build notes for the TestResults library.

## Purpose

This report serves as a comprehensive record of changes and bug fixes for this
release of TestResults. It provides transparency about what has changed since the
previous version and helps users understand the improvements and fixes included
in this build.

## Scope

This build notes report covers:

- Version information and commit details
- Changes and new features implemented
- Bugs fixed in this release

## Generation Source

This report is automatically generated by the BuildMark tool, analyzing the
Git repository history and issue tracking information. It serves as evidence of
changes and improvements included in this release.

## Audience

This document is intended for:

- Software developers working on TestResults
- Users evaluating what has changed in this release
- Project stakeholders tracking progress
- Contributors understanding recent changes
14 changes: 14 additions & 0 deletions docs/buildnotes/title.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
title: TestResults
subtitle: Build Notes
author: DEMA Consulting
description: Build notes for the TestResults library
lang: en-US
keywords:
- TestResults
- Build Notes
- Release Notes
- C#
- .NET
- Documentation
---