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
6 changes: 0 additions & 6 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@
"version": 1,
"isRoot": true,
"tools": {
"demaconsulting.reqstream": {
"version": "0.1.0",
"commands": [
"reqstream"
]
},
"demaconsulting.spdxtool": {
"version": "2.6.0",
"commands": [
Expand Down
162 changes: 150 additions & 12 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@ name: Build
on:
workflow_call:
inputs:
os:
description: 'Operating system to run on'
required: true
type: string
version:
description: 'Version number for the build'
required: true
Expand All @@ -17,12 +13,45 @@ on:
required: true

jobs:
quality-checks:
name: Quality Checks
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Markdown Lint
uses: DavidAnson/markdownlint-cli2-action@v22
with:
globs: '**/*.md'

- name: Spell Check
uses: streetsidesoftware/cspell-action@v8
with:
files: |
**/*.md
**/*.cs

- name: YAML Lint
uses: ibiqlik/action-yamllint@v3
with:
config_file: .yamllint.yaml

build:
runs-on: ${{ inputs.os }}
name: Build ${{ matrix.os }}
needs: quality-checks
runs-on: ${{ matrix.os }}
permissions:
contents: read
pull-requests: write

strategy:
matrix:
os: [windows-latest, ubuntu-latest]

steps:
- name: Checkout repository
uses: actions/checkout@v6
Expand Down Expand Up @@ -65,13 +94,13 @@ jobs:
--configuration Release
--verbosity normal
--collect "XPlat Code Coverage;Format=opencover"
--logger "trx;LogFileName=test-results-${{ inputs.os }}.trx"
--logger "trx;LogFileName=test-results-${{ matrix.os }}.trx"

- name: Upload test results
if: always()
uses: actions/upload-artifact@v6
with:
name: test-results-${{ inputs.os }}
name: test-results-${{ matrix.os }}
path: |
test/**/TestResults/*.trx

Expand All @@ -90,26 +119,28 @@ jobs:
- name: Upload package
uses: actions/upload-artifact@v6
with:
name: packages-${{ inputs.os }}
name: packages-${{ matrix.os }}
path: |
src/DemaConsulting.ReqStream/bin/Release/*.nupkg
src/DemaConsulting.ReqStream/bin/Release/*.snupkg

integration-test:
runs-on: ${{ inputs.os }}
name: Integration Test ${{ matrix.os }} .NET ${{ matrix.dotnet-version }}
runs-on: ${{ matrix.os }}
needs: build
permissions:
contents: read

strategy:
matrix:
os: [windows-latest, ubuntu-latest]
dotnet-version: ['8.x', '9.x', '10.x']

steps:
- name: Download package
uses: actions/download-artifact@v6
with:
name: packages-${{ inputs.os }}
name: packages-${{ matrix.os }}
path: packages

- name: Setup dotnet
Expand Down Expand Up @@ -148,9 +179,116 @@ jobs:
shell: bash
run: |
echo "Testing self-validation with TRX results output..."
reqstream --validate --results validation-results.trx || {
# Create a unique filename with OS and dotnet version
OS_NAME="${{ matrix.os }}"
DOTNET_VERSION="${{ matrix.dotnet-version }}"
TRX_FILE="integration-test-${OS_NAME}-dotnet${DOTNET_VERSION}.trx"
reqstream --validate --results "$TRX_FILE" || {
echo "✗ Self-validation with results failed"
exit 1
}
[ -f validation-results.trx ] || { echo "✗ Results file not created"; exit 1; }
[ -f "$TRX_FILE" ] || { echo "✗ Results file not created"; exit 1; }
echo "✓ Self-validation with results succeeded"

- name: Upload integration test results
if: always()
uses: actions/upload-artifact@v6
with:
name: integration-test-results-${{ matrix.os }}-dotnet${{ matrix.dotnet-version }}
path: integration-test-*.trx

build-docs:
name: Build Documentation
runs-on: windows-latest
needs: [build, integration-test]
permissions:
contents: read

steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Download all test results
uses: actions/download-artifact@v6
with:
path: test-results
pattern: '*test-results*'
continue-on-error: true

- name: Download package
uses: actions/download-artifact@v6
with:
name: packages-windows-latest
path: packages

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 'lts/*'

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

- name: Install npm dependencies
run: npm install

- name: Restore dotnet tools
run: dotnet tool restore

- name: Install ReqStream from build
run: |
echo "Installing ReqStream version ${{ inputs.version }} from build..."
dotnet tool install --global --add-source packages --version ${{ inputs.version }} DemaConsulting.ReqStream

- name: Generate Requirements Report and Trace Matrix
run: >
reqstream
--requirements requirements.yaml
--tests "test-results/**/*.trx"
--report docs/requirements/requirements.md
--matrix docs/tracematrix/tracematrix.md

- name: Generate HTML with Pandoc
run: >
dotnet pandoc
--defaults docs/guide/definition.yaml
--filter node_modules/.bin/mermaid-filter.cmd
--output docs/guide/guide.html

- name: Generate PDF with Weasyprint
run: >
dotnet weasyprint
docs/guide/guide.html
docs/guide.pdf

- name: Generate Requirements HTML with Pandoc
run: >
dotnet pandoc
--defaults docs/requirements/definition.yaml
--output docs/requirements/requirements.html

- name: Generate Requirements PDF with Weasyprint
run: >
dotnet weasyprint
docs/requirements/requirements.html
docs/requirements.pdf

- name: Generate Trace Matrix HTML with Pandoc
run: >
dotnet pandoc
--defaults docs/tracematrix/definition.yaml
--output docs/tracematrix/tracematrix.html

- name: Generate Trace Matrix PDF with Weasyprint
run: >
dotnet weasyprint
docs/tracematrix/tracematrix.html
docs/tracematrix.pdf

- name: Upload documentation
uses: actions/upload-artifact@v6
with:
name: documentation
path: docs/*.pdf
97 changes: 0 additions & 97 deletions .github/workflows/build_docs.yaml

This file was deleted.

Loading
Loading