diff --git a/.cspell.json b/.cspell.json index bd2dfb9..fcd61c1 100644 --- a/.cspell.json +++ b/.cspell.json @@ -31,7 +31,8 @@ "triaging", "trx", "vbproj", - "vcxproj" + "vcxproj", + "yamllint" ], "ignorePaths": [ "node_modules", diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 0bba6aa..a007c44 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -7,7 +7,8 @@ body: - type: markdown attributes: value: | - Thanks for taking the time to report a bug! Please fill out the sections below to help us understand and fix the issue. + Thanks for taking the time to report a bug! Please fill out the sections below to help us understand and + fix the issue. - type: textarea id: description @@ -28,9 +29,9 @@ body: 2. Call method '...' 3. Observe error... value: | - 1. - 2. - 3. + 1. + 2. + 3. validations: required: true diff --git a/.github/agents/README.md b/.github/agents/README.md index 0b5ca0b..12266b3 100644 --- a/.github/agents/README.md +++ b/.github/agents/README.md @@ -10,12 +10,14 @@ These agents have specialized roles and expertise to help maintain and improve t **Role**: Expert technical writer for documentation maintenance **Specialties**: + - Maintaining README, ARCHITECTURE, and other markdown files - Writing XML documentation comments for C# APIs - Ensuring documentation accuracy and clarity - Following markdown and spelling standards **When to Use**: + - Adding or updating documentation - Improving code comments - Creating usage examples @@ -28,12 +30,14 @@ These agents have specialized roles and expertise to help maintain and improve t **Role**: Code quality specialist ensuring high standards **Specialties**: + - Enforcing testing standards and code coverage - Running static analysis and linting - Code review and quality gates - Ensuring zero-warning builds **When to Use**: + - Reviewing code changes - Improving test coverage - Fixing quality issues @@ -46,6 +50,7 @@ These agents have specialized roles and expertise to help maintain and improve t **Role**: Project maintenance and improvement specialist **Specialties**: + - Managing dependencies and Dependabot PRs - Triaging and organizing issues - Identifying improvement opportunities @@ -53,6 +58,7 @@ These agents have specialized roles and expertise to help maintain and improve t - Weekly maintenance tasks **When to Use**: + - Weekly project health checks - Issue triage and prioritization - Planning enhancements diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 783b7ed..8f594c5 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -11,7 +11,7 @@ updates: nuget-dependencies: patterns: - "*" - + # Maintain dependencies for GitHub Actions - package-ecosystem: "github-actions" directory: "/" diff --git a/.github/workflows/build_on_push.yaml b/.github/workflows/build_on_push.yaml index 91e5846..a81c0eb 100644 --- a/.github/workflows/build_on_push.yaml +++ b/.github/workflows/build_on_push.yaml @@ -17,22 +17,20 @@ jobs: - name: Checkout uses: actions/checkout@v6 - - name: Setup Node.js - uses: actions/setup-node@v6 + - name: Run markdown linter + uses: DavidAnson/markdownlint-cli2-action@v22 with: - node-version: '20' - - - name: Install cspell - run: npm install -g cspell - - - name: Install markdownlint-cli - run: npm install -g markdownlint-cli + globs: '**/*.md' - name: Run spell checker - run: cspell "**/*.{md,cs}" --no-progress + uses: streetsidesoftware/cspell-action@v8 + with: + files: '**/*.{md,cs}' - - name: Run markdown linter - run: markdownlint "**/*.md" --ignore node_modules + - name: Run YAML linter + uses: ibiqlik/action-yamllint@v3 + with: + config_file: .yamllint.yaml build-windows: name: Build Windows diff --git a/.github/workflows/weekly-maintenance.yml b/.github/workflows/weekly-maintenance.yml index 9679e57..dc03863 100644 --- a/.github/workflows/weekly-maintenance.yml +++ b/.github/workflows/weekly-maintenance.yml @@ -18,7 +18,7 @@ permissions: jobs: maintenance: runs-on: ubuntu-latest - + steps: - name: Checkout uses: actions/checkout@v6 diff --git a/.markdownlint.json b/.markdownlint.json index 18afdd8..e3884ab 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,15 +1,8 @@ { "default": true, - "MD013": { - "line_length": 120, - "heading_line_length": 120, - "code_block_line_length": 120, - "code_blocks": true, - "tables": false, - "headings": true, - "strict": false, - "stern": false - }, + "MD003": { "style": "atx" }, + "MD007": { "indent": 2 }, + "MD013": { "line_length": 120 }, "MD033": false, "MD041": false } diff --git a/.yamllint.yaml b/.yamllint.yaml new file mode 100644 index 0000000..70eb5ab --- /dev/null +++ b/.yamllint.yaml @@ -0,0 +1,25 @@ +--- +# yamllint configuration for TestResults +# This configuration defines the rules for YAML file linting + +extends: default + +rules: + # Allow 'on:' in GitHub Actions workflows (not a boolean value) + truthy: + allowed-values: ['true', 'false', 'on', 'off'] + check-keys: true + + # Allow longer lines for URLs and complex expressions + line-length: + max: 120 + level: error + + # Ensure proper indentation + indentation: + spaces: 2 + indent-sequences: true + + # Ensure proper comment formatting + comments: + min-spaces-from-content: 2 diff --git a/spdx-workflow.yaml b/spdx-workflow.yaml index 694f999..869f8fc 100644 --- a/spdx-workflow.yaml +++ b/spdx-workflow.yaml @@ -1,3 +1,4 @@ +--- # This workflow annotates the SBOM for the DemaConsulting.TestResults with # build tools, and generates a summary markdown. @@ -14,116 +15,116 @@ parameters: steps: # Get the version of the TestResults package -- command: get-version - inputs: - output: version - spdx: ${{ test-results-spdx }} - name: DemaConsulting.TestResults + - command: get-version + inputs: + output: version + spdx: ${{ test-results-spdx }} + name: DemaConsulting.TestResults # Rename the package ID for TestResults -- command: rename-id - displayName: Rename TestResults Package ID - inputs: - spdx: ${{ test-results-spdx }} - old: SPDXRef-RootPackage - new: SPDXRef-Package-DemaConsulting-TestResults-${{ version }} + - command: rename-id + displayName: Rename TestResults Package ID + inputs: + spdx: ${{ test-results-spdx }} + old: SPDXRef-RootPackage + new: SPDXRef-Package-DemaConsulting-TestResults-${{ version }} # Query for DotNet version -- command: run-workflow - displayName: Query DotNet Version - inputs: - url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/GetDotNetVersion.yaml - outputs: - version: dotnet-version + - command: run-workflow + displayName: Query DotNet Version + inputs: + url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/GetDotNetVersion.yaml + outputs: + version: dotnet-version # Add DotNet package -- command: run-workflow - displayName: Add DotNet Package ${{ dotnet-version }} - inputs: - url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/AddDotNetPackage.yaml - parameters: - spdx: ${{ test-results-spdx }} - id: SPDXRef-Package-DotNet-${{ dotnet-version }} - version: ${{ dotnet-version }} + - command: run-workflow + displayName: Add DotNet Package ${{ dotnet-version }} + inputs: + url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/AddDotNetPackage.yaml + parameters: + spdx: ${{ test-results-spdx }} + id: SPDXRef-Package-DotNet-${{ dotnet-version }} + version: ${{ dotnet-version }} # Add DotNet relationships -- command: add-relationship - displayName: Add DotNet Relationships - inputs: - spdx: ${{ test-results-spdx }} - id: SPDXRef-Package-DotNet-${{ dotnet-version }} - relationships: - - type: BUILD_TOOL_OF - element: SPDXRef-Package-DemaConsulting-TestResults-${{ version }} - comment: DemaConsulting.TestResults compiled by DotNet ${{ dotnet-version }} + - command: add-relationship + displayName: Add DotNet Relationships + inputs: + spdx: ${{ test-results-spdx }} + id: SPDXRef-Package-DotNet-${{ dotnet-version }} + relationships: + - type: BUILD_TOOL_OF + element: SPDXRef-Package-DemaConsulting-TestResults-${{ version }} + comment: DemaConsulting.TestResults compiled by DotNet ${{ dotnet-version }} # Update the Sha256 digest on the TestResults SBOM -- command: hash - displayName: Update TestResults SBOM Sha256 - inputs: - operation: generate - algorithm: sha256 - file: ${{ test-results-spdx }} + - command: hash + displayName: Update TestResults SBOM Sha256 + inputs: + operation: generate + algorithm: sha256 + file: ${{ test-results-spdx }} # Validate the TestResults SBOM -- command: validate - displayName: Validate TestResults SBOM Sha256 - inputs: - spdx: ${{ test-results-spdx }} + - command: validate + displayName: Validate TestResults SBOM Sha256 + inputs: + spdx: ${{ test-results-spdx }} # Generate the TestResults summary -- command: to-markdown - displayName: Generate TestResults SBOM summary - inputs: - spdx: ${{ test-results-spdx }} - markdown: ${{ test-results-md }} + - command: to-markdown + displayName: Generate TestResults SBOM summary + inputs: + spdx: ${{ test-results-spdx }} + markdown: ${{ test-results-md }} # Rename the package ID for TestResults.Tests -- command: rename-id - displayName: Rename TestResults.Tests Package ID - inputs: - spdx: ${{ test-results-tests-spdx }} - old: SPDXRef-RootPackage - new: SPDXRef-Package-DemaConsulting-TestResults-Tests-${{ version }} + - command: rename-id + displayName: Rename TestResults.Tests Package ID + inputs: + spdx: ${{ test-results-tests-spdx }} + old: SPDXRef-RootPackage + new: SPDXRef-Package-DemaConsulting-TestResults-Tests-${{ version }} # Add DotNet package -- command: run-workflow - displayName: Add DotNet Package ${{ dotnet-version }} - inputs: - url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/AddDotNetPackage.yaml - parameters: - spdx: ${{ test-results-tests-spdx }} - id: SPDXRef-Package-DotNet-${{ dotnet-version }} - version: ${{ dotnet-version }} + - command: run-workflow + displayName: Add DotNet Package ${{ dotnet-version }} + inputs: + url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/AddDotNetPackage.yaml + parameters: + spdx: ${{ test-results-tests-spdx }} + id: SPDXRef-Package-DotNet-${{ dotnet-version }} + version: ${{ dotnet-version }} # Add DotNet relationships -- command: add-relationship - displayName: Add DotNet Relationships - inputs: - spdx: ${{ test-results-tests-spdx }} - id: SPDXRef-Package-DotNet-${{ dotnet-version }} - relationships: - - type: BUILD_TOOL_OF - element: SPDXRef-Package-DemaConsulting-TestResults-Tests-${{ version }} - comment: DemaConsulting.TestResults.Tests compiled by DotNet ${{ dotnet-version }} + - command: add-relationship + displayName: Add DotNet Relationships + inputs: + spdx: ${{ test-results-tests-spdx }} + id: SPDXRef-Package-DotNet-${{ dotnet-version }} + relationships: + - type: BUILD_TOOL_OF + element: SPDXRef-Package-DemaConsulting-TestResults-Tests-${{ version }} + comment: DemaConsulting.TestResults.Tests compiled by DotNet ${{ dotnet-version }} # Update the Sha256 digest on the TestResults.Tests SBOM -- command: hash - displayName: Update TestResults.Tests SBOM Sha256 - inputs: - operation: generate - algorithm: sha256 - file: ${{ test-results-tests-spdx }} + - command: hash + displayName: Update TestResults.Tests SBOM Sha256 + inputs: + operation: generate + algorithm: sha256 + file: ${{ test-results-tests-spdx }} # Validate the TestResults.Tests SBOM -- command: validate - displayName: Validate TestResults.Tests SBOM Sha256 - inputs: - spdx: ${{ test-results-tests-spdx }} + - command: validate + displayName: Validate TestResults.Tests SBOM Sha256 + inputs: + spdx: ${{ test-results-tests-spdx }} # Generate the TestResults.Tests summary -- command: to-markdown - displayName: Generate TestResults.Tests SBOM summary - inputs: - spdx: ${{ test-results-tests-spdx }} - markdown: ${{ test-results-tests-md }} + - command: to-markdown + displayName: Generate TestResults.Tests SBOM summary + inputs: + spdx: ${{ test-results-tests-spdx }} + markdown: ${{ test-results-tests-md }}