Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
2 changes: 1 addition & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
]
},
"demaconsulting.reqstream": {
"version": "1.3.0",
"version": "1.4.0",
"commands": [
"reqstream"
]
Expand Down
184 changes: 119 additions & 65 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ jobs:
permissions:
contents: read
steps:
# === INSTALL DEPENDENCIES ===
# This section installs all required dependencies for quality checks.
# Downstream projects: Add any additional dependency installations here.

- name: Checkout
uses: actions/checkout@v6

Expand All @@ -33,15 +37,23 @@ jobs:
- name: Capture tool versions
shell: bash
run: |
mkdir -p artifacts
echo "Capturing tool versions..."
dotnet versionmark --capture --job-id "quality" -- dotnet git versionmark
dotnet versionmark --capture --job-id "quality" \
--output "artifacts/versionmark-quality.json" -- \
dotnet git versionmark
echo "✓ Tool versions captured"

- name: Upload version capture
uses: actions/upload-artifact@v7
with:
name: version-capture-quality
path: versionmark-quality.json
# === CAPTURE OTS SELF-VALIDATION RESULTS ===
# This section captures self-validation results from OTS tools.
# Downstream projects: Add any additional self-validation steps here.

- name: Run VersionMark self-validation
run: dotnet versionmark --validate --results artifacts/versionmark-self-validation-quality.trx

# === RUN QUALITY CHECKS ===
# This section runs all quality checks for the project.
# Downstream projects: Add any additional quality checks here.

- name: Run markdown linter
uses: DavidAnson/markdownlint-cli2-action@v22
Expand All @@ -59,6 +71,12 @@ jobs:
with:
config_file: .yamllint.yaml

- name: Upload quality artifacts
uses: actions/upload-artifact@v7
with:
name: artifacts-quality
path: artifacts/

# Builds and unit-tests the project on supported operating systems to ensure
# unit-tests operate on all platforms and to run SonarScanner for generating
# the code quality report.
Expand All @@ -77,6 +95,10 @@ jobs:

steps:

# === INSTALL DEPENDENCIES ===
# This section installs all required dependencies for the build.
# Downstream projects: Add any additional dependency installations here.

- name: Checkout
uses: actions/checkout@v6
with:
Expand All @@ -94,6 +116,33 @@ jobs:
run: >
dotnet tool restore

# === CAPTURE TOOL VERSIONS ===
# This section captures the versions of all tools used in the build process.
# Downstream projects: Add any additional tools to capture here.

- name: Capture tool versions
shell: bash
run: |
mkdir -p artifacts
echo "Capturing tool versions..."
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}" \
--output "artifacts/versionmark-${JOB_ID}.json" -- \
dotnet git dotnet-sonarscanner versionmark
echo "✓ Tool versions captured"

# === CAPTURE OTS SELF-VALIDATION RESULTS ===
# This section captures self-validation results from OTS tools.
# Downstream projects: Add any additional self-validation steps here.

- name: Run VersionMark self-validation
run: dotnet versionmark --validate --results artifacts/versionmark-self-validation-${{ matrix.os }}.trx

# === BUILD AND TEST ===
# This section builds and tests the project.
# Downstream projects: Add any additional build and test steps here.

- name: Restore Dependencies
run: >
dotnet restore
Expand Down Expand Up @@ -126,7 +175,7 @@ jobs:
--property:Version=${{ inputs.version }}
--collect "XPlat Code Coverage;Format=opencover"
--logger "trx;LogFilePrefix=${{ matrix.os }}"
--results-directory test-results
--results-directory artifacts

- name: End Sonar Scanner
env:
Expand All @@ -143,33 +192,20 @@ 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@v7
with:
name: version-capture-${{ matrix.os }}
path: versionmark-build-*.json
# === UPLOAD ARTIFACTS ===
# This section uploads all build artifacts.
# Downstream projects: Add any additional artifact uploads here.

- name: Upload Test Results
- name: Upload build artifacts
uses: actions/upload-artifact@v7
with:
name: test-results-${{ matrix.os }}
path: test-results/*.trx
name: artifacts-build-${{ matrix.os }}
path: artifacts/

- name: Upload Artifacts
- name: Upload packages
uses: actions/upload-artifact@v7
with:
name: artifacts-${{ matrix.os }}
name: packages-${{ matrix.os }}
path: |
src/DemaConsulting.TemplateDotNetTool/bin/Release/*.nupkg
src/DemaConsulting.TemplateDotNetTool/bin/Release/*.snupkg
Expand All @@ -186,6 +222,10 @@ jobs:
security-events: write

steps:
# === INSTALL DEPENDENCIES ===
# This section installs all required dependencies for CodeQL analysis.
# Downstream projects: Add any additional dependency installations here.

- name: Checkout
uses: actions/checkout@v6
with:
Expand Down Expand Up @@ -214,6 +254,10 @@ jobs:
run: >
dotnet restore

# === BUILD AND ANALYZE ===
# This section builds the project and runs CodeQL analysis.
# Downstream projects: Add any additional analysis steps here.

- name: Build
run: >
dotnet build
Expand All @@ -225,14 +269,18 @@ jobs:
uses: github/codeql-action/analyze@v4
with:
category: "/language:csharp"
output: sarif-results
output: artifacts
upload: false

- name: Upload CodeQL SARIF
# === UPLOAD ARTIFACTS ===
# This section uploads all CodeQL artifacts.
# Downstream projects: Add any additional artifact uploads here.

- name: Upload CodeQL artifacts
uses: actions/upload-artifact@v7
with:
name: codeql-sarif
path: sarif-results/csharp.sarif
name: artifacts-codeql
path: artifacts/

# Performs integration testing on a matrix of operating systems and .NET runtimes,
# involving basic tool execution and running self-validation to ensure compatibility
Expand Down Expand Up @@ -260,7 +308,7 @@ jobs:
- name: Download package
uses: actions/download-artifact@v8
with:
name: artifacts-${{ matrix.os }}
name: packages-${{ matrix.os }}
path: packages

- name: Setup dotnet
Expand Down Expand Up @@ -306,26 +354,29 @@ jobs:
- name: Capture tool versions
shell: bash
run: |
mkdir -p artifacts
echo "Capturing tool versions..."
# Create short job ID: int-win-8, int-win-9, int-ubuntu-8, etc.
OS_SHORT=$(echo "${{ matrix.os }}" | sed 's/windows-latest/win/;s/ubuntu-latest/ubuntu/')
DOTNET_SHORT=$(echo "${{ matrix.dotnet-version }}" | sed 's/\.x$//')
JOB_ID="int-${OS_SHORT}-${DOTNET_SHORT}"
dotnet versionmark --capture --job-id "${JOB_ID}" -- dotnet git versionmark
dotnet versionmark --capture --job-id "${JOB_ID}" \
--output "artifacts/versionmark-${JOB_ID}.json" -- \
dotnet git versionmark
echo "✓ Tool versions captured"

- name: Upload version capture
uses: actions/upload-artifact@v7
with:
name: version-capture-${{ matrix.os }}-dotnet${{ matrix.dotnet-version }}
path: versionmark-int-*.json
name: artifacts-int-${{ matrix.os }}-dotnet${{ matrix.dotnet-version }}
path: artifacts/versionmark-int-*.json

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

# Builds the supporting documentation including user guides, requirements,
# trace matrices, code quality reports, and build notes.
Expand All @@ -344,30 +395,12 @@ jobs:
- name: Checkout
uses: actions/checkout@v6

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

- name: Download TemplateTool package
- name: Download all job artifacts
uses: actions/download-artifact@v8
with:
name: artifacts-windows-latest
path: packages

- name: Download CodeQL SARIF
uses: actions/download-artifact@v8
with:
name: codeql-sarif
path: codeql-results

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

# === INSTALL DEPENDENCIES ===
Expand All @@ -392,7 +425,7 @@ jobs:
run: |
echo "Installing TemplateTool version ${{ inputs.version }}"
dotnet tool install --global \
--add-source packages \
--add-source artifacts \
--version ${{ inputs.version }} \
DemaConsulting.TemplateDotNetTool

Expand All @@ -406,11 +439,32 @@ jobs:
- name: Capture tool versions for build-docs
shell: bash
run: |
mkdir -p artifacts
echo "Capturing tool versions..."
dotnet versionmark --capture --job-id "build-docs" -- \
dotnet versionmark --capture --job-id "build-docs" \
--output "artifacts/versionmark-build-docs.json" -- \
dotnet git node npm pandoc weasyprint sarifmark sonarmark reqstream buildmark versionmark
echo "✓ Tool versions captured"

# === CAPTURE OTS SELF-VALIDATION RESULTS ===
# This section captures self-validation results from OTS tools.
# Downstream projects: Add any additional self-validation steps here.

- name: Run ReqStream self-validation
run: dotnet reqstream --validate --results artifacts/reqstream-self-validation.trx

- name: Run BuildMark self-validation
run: dotnet buildmark --validate --results artifacts/buildmark-self-validation.trx

- name: Run VersionMark self-validation
run: dotnet versionmark --validate --results artifacts/versionmark-self-validation.trx

- name: Run SarifMark self-validation
run: dotnet sarifmark --validate --results artifacts/sarifmark-self-validation.trx

- name: Run SonarMark self-validation
run: dotnet sonarmark --validate --results artifacts/sonarmark-self-validation.trx

# === GENERATE MARKDOWN REPORTS ===
# This section generates all markdown reports from various tools and sources.
# Downstream projects: Add any additional markdown report generation steps here.
Expand All @@ -419,7 +473,7 @@ jobs:
run: >
dotnet reqstream
--requirements requirements.yaml
--tests "test-results/**/*.trx"
--tests "artifacts/**/*.trx"
--report docs/requirements/requirements.md
--justifications docs/justifications/justifications.md
--matrix docs/tracematrix/tracematrix.md
Expand All @@ -428,7 +482,7 @@ jobs:
- name: Generate CodeQL Quality Report with SarifMark
run: >
dotnet sarifmark
--sarif codeql-results/csharp.sarif
--sarif artifacts/csharp.sarif
--report docs/quality/codeql-quality.md
--heading "Template DotNet Tool CodeQL Analysis"
--report-depth 1
Expand Down Expand Up @@ -479,7 +533,7 @@ jobs:
run: |
echo "Publishing tool versions..."
dotnet versionmark --publish --report docs/buildnotes/versions.md --report-depth 1 \
-- "versionmark-*.json" "version-captures/**/versionmark-*.json"
-- "artifacts/**/versionmark-*.json"
echo "✓ Tool versions published"

- name: Display Tool Versions Report
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
- name: Download package artifacts
uses: actions/download-artifact@v8
with:
name: artifacts-ubuntu-latest
name: packages-ubuntu-latest
path: artifacts

- name: Download documents artifact
Expand Down
Loading
Loading