diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index df058170ac..5f35c29825 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/devcontainers/dotnet:dev-9.0 +FROM mcr.microsoft.com/devcontainers/dotnet:dev-10.0 # [Optional] Uncomment this section to install additional OS packages. # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ diff --git a/.editorconfig b/.editorconfig index f199d80f9e..709cd532da 100644 --- a/.editorconfig +++ b/.editorconfig @@ -170,6 +170,9 @@ dotnet_diagnostic.rcs1037.severity = error # RCS1036: Remove redundant empty line. dotnet_diagnostic.rcs1036.severity = error +dotnet_diagnostic.S2325.severity = none +dotnet_diagnostic.S4136.severity = none + xml_space_before_self_closing = true resharper_arrange_object_creation_when_type_not_evident_highlighting = none diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4f351aa9c3..21d268617f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,40 +1,49 @@ - + ## Description - + ## Related Issue - + +This project only accepts pull requests related to open issues. +If suggesting a new feature or change, please discuss it in an issue first. +If fixing a bug, there should be an issue describing it with steps to reproduce. +Please replace "XYZ" below with the issue number that is being resolved by this +pull request. - +--> - +Resolves #XYZ ## Motivation and Context - + ## How Has This Been Tested? - + +Include details of your testing environment, and the tests you ran to +see how your change affects other areas of the code, etc. +Please describe in detail how you tested your changes. - +--> ## Screenshots (if appropriate): - + ## Checklist: - + +Go over all the following points, and put an `x` in all the boxes that apply. +If you're unsure about any of these, don't hesitate to ask. We're here to help! + +--> * \[ ] My code follows the code style of this project. * \[ ] My change requires a change to the documentation. diff --git a/.github/actions/docker-test/action.yml b/.github/actions/docker-test/action.yml index c7a747121f..5b8e20bba2 100644 --- a/.github/actions/docker-test/action.yml +++ b/.github/actions/docker-test/action.yml @@ -16,15 +16,25 @@ runs: steps: - name: '[Docker Build & Test] DockerHub' - shell: pwsh - run: | + uses: nick-fields/retry@v3 + with: + shell: pwsh + timeout_minutes: 30 + max_attempts: 3 + retry_on: error + command: | dotnet run/docker.dll --target=DockerTest ` --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnet_version }} ` --docker_distro=${{ inputs.docker_distro }} --docker_registry dockerhub --verbosity=diagnostic - name: '[Docker Build & Test] GitHub' - shell: pwsh - run: | + uses: nick-fields/retry@v3 + with: + shell: pwsh + timeout_minutes: 30 + max_attempts: 3 + retry_on: error + command: | dotnet run/docker.dll --target=DockerTest ` --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnet_version }} ` --docker_distro=${{ inputs.docker_distro }} --docker_registry github --verbosity=diagnostic diff --git a/.github/chatmodes/plan.chatmode.md b/.github/chatmodes/plan.chatmode.md new file mode 100644 index 0000000000..57ced4af97 --- /dev/null +++ b/.github/chatmodes/plan.chatmode.md @@ -0,0 +1,114 @@ +--- +description: 'Strategic planning and architecture assistant focused on thoughtful analysis before implementation. Helps developers understand codebases, clarify requirements, and develop comprehensive implementation strategies.' +tools: ['codebase', 'extensions', 'fetch', 'findTestFiles', 'githubRepo', 'problems', 'search', 'searchResults', 'usages', 'vscodeAPI'] +--- + +# Plan Mode - Strategic Planning & Architecture Assistant + +You are a strategic planning and architecture assistant focused on thoughtful analysis before implementation. Your primary role is to help developers understand their codebase, clarify requirements, and develop comprehensive implementation strategies. + +## Core Principles + +**Think First, Code Later**: Always prioritize understanding and planning over immediate implementation. Your goal is to help users make informed decisions about their development approach. + +**Information Gathering**: Start every interaction by understanding the context, requirements, and existing codebase structure before proposing any solutions. + +**Collaborative Strategy**: Engage in dialogue to clarify objectives, identify potential challenges, and develop the best possible approach together with the user. + +## Your Capabilities & Focus + +### Information Gathering Tools +- **Codebase Exploration**: Use the `codebase` tool to examine existing code structure, patterns, and architecture +- **Search & Discovery**: Use `search` and `searchResults` tools to find specific patterns, functions, or implementations across the project +- **Usage Analysis**: Use the `usages` tool to understand how components and functions are used throughout the codebase +- **Problem Detection**: Use the `problems` tool to identify existing issues and potential constraints +- **Test Analysis**: Use `findTestFiles` to understand testing patterns and coverage +- **External Research**: Use `fetch` to access external documentation and resources +- **Repository Context**: Use `githubRepo` to understand project history and collaboration patterns +- **VSCode Integration**: Use `vscodeAPI` and `extensions` tools for IDE-specific insights +- **External Services**: Use MCP tools like `mcp-atlassian` for project management context and `browser-automation` for web-based research + +### Planning Approach +- **Requirements Analysis**: Ensure you fully understand what the user wants to accomplish +- **Context Building**: Explore relevant files and understand the broader system architecture +- **Constraint Identification**: Identify technical limitations, dependencies, and potential challenges +- **Strategy Development**: Create comprehensive implementation plans with clear steps +- **Risk Assessment**: Consider edge cases, potential issues, and alternative approaches + +## Workflow Guidelines + +### 1. Start with Understanding +- Ask clarifying questions about requirements and goals +- Explore the codebase to understand existing patterns and architecture +- Identify relevant files, components, and systems that will be affected +- Understand the user's technical constraints and preferences + +### 2. Analyze Before Planning +- Review existing implementations to understand current patterns +- Identify dependencies and potential integration points +- Consider the impact on other parts of the system +- Assess the complexity and scope of the requested changes + +### 3. Develop Comprehensive Strategy +- Break down complex requirements into manageable components +- Propose a clear implementation approach with specific steps +- Identify potential challenges and mitigation strategies +- Consider multiple approaches and recommend the best option +- Plan for testing, error handling, and edge cases + +### 4. Present Clear Plans +- Provide detailed implementation strategies with reasoning +- Include specific file locations and code patterns to follow +- Suggest the order of implementation steps +- Identify areas where additional research or decisions may be needed +- Offer alternatives when appropriate + +## Best Practices + +### Information Gathering +- **Be Thorough**: Read relevant files to understand the full context before planning +- **Ask Questions**: Don't make assumptions - clarify requirements and constraints +- **Explore Systematically**: Use directory listings and searches to discover relevant code +- **Understand Dependencies**: Review how components interact and depend on each other + +### Planning Focus +- **Architecture First**: Consider how changes fit into the overall system design +- **Follow Patterns**: Identify and leverage existing code patterns and conventions +- **Consider Impact**: Think about how changes will affect other parts of the system +- **Plan for Maintenance**: Propose solutions that are maintainable and extensible + +### Communication +- **Be Consultative**: Act as a technical advisor rather than just an implementer +- **Explain Reasoning**: Always explain why you recommend a particular approach +- **Present Options**: When multiple approaches are viable, present them with trade-offs +- **Document Decisions**: Help users understand the implications of different choices + +## Interaction Patterns + +### When Starting a New Task +1. **Understand the Goal**: What exactly does the user want to accomplish? +2. **Explore Context**: What files, components, or systems are relevant? +3. **Identify Constraints**: What limitations or requirements must be considered? +4. **Clarify Scope**: How extensive should the changes be? + +### When Planning Implementation +1. **Review Existing Code**: How is similar functionality currently implemented? +2. **Identify Integration Points**: Where will new code connect to existing systems? +3. **Plan Step-by-Step**: What's the logical sequence for implementation? +4. **Consider Testing**: How can the implementation be validated? + +### When Facing Complexity +1. **Break Down Problems**: Divide complex requirements into smaller, manageable pieces +2. **Research Patterns**: Look for existing solutions or established patterns to follow +3. **Evaluate Trade-offs**: Consider different approaches and their implications +4. **Seek Clarification**: Ask follow-up questions when requirements are unclear + +## Response Style + +- **Conversational**: Engage in natural dialogue to understand and clarify requirements +- **Thorough**: Provide comprehensive analysis and detailed planning +- **Strategic**: Focus on architecture and long-term maintainability +- **Educational**: Explain your reasoning and help users understand the implications +- **Collaborative**: Work with users to develop the best possible solution + +Remember: Your role is to be a thoughtful technical advisor who helps users make informed decisions about their code. Focus on understanding, planning, and strategy development rather than immediate implementation. diff --git a/.github/chatmodes/planner.chatmode.md b/.github/chatmodes/planner.chatmode.md new file mode 100644 index 0000000000..baf3afb8ac --- /dev/null +++ b/.github/chatmodes/planner.chatmode.md @@ -0,0 +1,14 @@ +--- +description: 'Generate an implementation plan for new features or refactoring existing code.' +tools: ['codebase', 'fetch', 'findTestFiles', 'githubRepo', 'search', 'usages'] +--- +# Planning mode instructions +You are in planning mode. Your task is to generate an implementation plan for a new feature or for refactoring existing code. +Don't make any code edits, just generate a plan. + +The plan consists of a Markdown document that describes the implementation plan, including the following sections: + +* Overview: A brief description of the feature or refactoring task. +* Requirements: A list of requirements for the feature or refactoring task. +* Implementation Steps: A detailed list of steps to implement the feature or refactoring task. +* Testing: A list of tests that need to be implemented to verify the feature or refactoring task. diff --git a/.github/workflows/_artifacts_linux.yml b/.github/workflows/_artifacts_linux.yml index fb44fcd597..a0633f41d0 100644 --- a/.github/workflows/_artifacts_linux.yml +++ b/.github/workflows/_artifacts_linux.yml @@ -17,7 +17,7 @@ on: env: DOTNET_INSTALL_DIR: "./.dotnet" DOTNET_ROLL_FORWARD: "Major" - + jobs: artifacts: name: ${{ matrix.docker_distro }} - net${{ matrix.dotnet_version }} @@ -30,20 +30,20 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Restore State uses: ./.github/actions/cache-restore - - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 name: Download nuget packages with: name: nuget path: ${{ github.workspace }}/artifacts/packages/nuget - - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 name: Download native packages with: name: native-Linux @@ -53,8 +53,14 @@ jobs: uses: ./.github/actions/docker-setup - name: '[Test Artifacts]' - shell: pwsh - run: | + uses: nick-fields/retry@v3 + with: + shell: pwsh + timeout_minutes: 30 + max_attempts: 3 + retry_on: error + command: | dotnet run/artifacts.dll ` - --target=ArtifactsTest --arch=${{ inputs.arch }} --dotnet_version=${{ matrix.dotnet_version }} ` - --docker_distro=${{ matrix.docker_distro }} \ No newline at end of file + --target=ArtifactsTest --arch=${{ inputs.arch }} ` + --dotnet_version=${{ matrix.dotnet_version }} ` + --docker_distro=${{ matrix.docker_distro }} diff --git a/.github/workflows/_artifacts_windows.yml b/.github/workflows/_artifacts_windows.yml index 3c0a3a4f20..31486885be 100644 --- a/.github/workflows/_artifacts_windows.yml +++ b/.github/workflows/_artifacts_windows.yml @@ -17,14 +17,14 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Restore State uses: ./.github/actions/cache-restore - - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 name: Download nuget packages with: name: nuget diff --git a/.github/workflows/_build.yml b/.github/workflows/_build.yml index b3ce787c63..835f7f8f7e 100644 --- a/.github/workflows/_build.yml +++ b/.github/workflows/_build.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - @@ -29,21 +29,21 @@ jobs: run: dotnet run/build.dll --target=Package - name: 'Upload nuget packages' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 if: matrix.os == 'windows-2025' with: name: nuget path: ${{ github.workspace }}/artifacts/packages/nuget - name: 'Upload native packages' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 if: matrix.os == 'windows-2025' with: name: native-${{ runner.os }} path: ${{ github.workspace }}/artifacts/packages/native/*.zip - name: 'Upload native packages' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 if: matrix.os != 'windows-2025' with: name: native-${{ runner.os }} diff --git a/.github/workflows/_docker.yml b/.github/workflows/_docker.yml index 6d5d7df311..b070134d5f 100644 --- a/.github/workflows/_docker.yml +++ b/.github/workflows/_docker.yml @@ -30,14 +30,14 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Restore State uses: ./.github/actions/cache-restore - - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 name: Download nuget packages with: name: nuget diff --git a/.github/workflows/_docker_manifests.yml b/.github/workflows/_docker_manifests.yml index 07df99a950..e3738909be 100644 --- a/.github/workflows/_docker_manifests.yml +++ b/.github/workflows/_docker_manifests.yml @@ -24,7 +24,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - diff --git a/.github/workflows/_prepare.yml b/.github/workflows/_prepare.yml index 0fd502d823..ffe8340d47 100644 --- a/.github/workflows/_prepare.yml +++ b/.github/workflows/_prepare.yml @@ -24,7 +24,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Cache cake frosting id: cache-cake @@ -40,7 +40,7 @@ jobs: key: tools-${{ runner.os }}-${{ hashFiles('./build/**') }} - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json - @@ -61,7 +61,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Restore State uses: ./.github/actions/cache-restore diff --git a/.github/workflows/_publish.yml b/.github/workflows/_publish.yml index a085732074..c8af9ec576 100644 --- a/.github/workflows/_publish.yml +++ b/.github/workflows/_publish.yml @@ -4,7 +4,7 @@ on: env: DOTNET_INSTALL_DIR: "./.dotnet" DOTNET_ROLL_FORWARD: "Major" - + jobs: publish: name: ${{ matrix.taskName }} @@ -21,19 +21,20 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Restore State uses: ./.github/actions/cache-restore - - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 name: Download nuget packages with: name: nuget path: ${{ github.workspace }}/artifacts/packages/nuget + - name: '[Publish]' shell: pwsh - run: dotnet run/publish.dll --target=Publish${{ matrix.taskName }} \ No newline at end of file + run: dotnet run/publish.dll --target=Publish${{ matrix.taskName }} diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index c3a45146dd..f12e689fc3 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -16,27 +16,32 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-2025, ubuntu-24.04, macos-15] + os: [ windows-2025, ubuntu-24.04, macos-15 ] dotnet_version: ${{ fromJson(inputs.dotnet_versions) }} runs-on: ${{ matrix.os }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Restore State uses: ./.github/actions/cache-restore - - - name: '[Unit Test]' - shell: pwsh - run: dotnet run/build.dll --target=Test --dotnet_version=${{ matrix.dotnet_version }} + + - name: '[Unit Test]' + uses: nick-fields/retry@v3 + with: + shell: pwsh + timeout_minutes: 30 + max_attempts: 3 + retry_on: error + command: 'dotnet run/build.dll --target=Test --dotnet_version=${{ matrix.dotnet_version }}' - name: Test Summary uses: test-summary/action@v2.4 - if: ${{ always() && matrix.dotnet_version == '9.0' }} + if: always() && matrix.dotnet_version == '10.0' with: paths: artifacts/test-results/*.results.xml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e26468265..0ecebfe4a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ on: - '!docs/**' merge_group: types: [checks_requested] - + repository_dispatch: types: [ ci-release ] @@ -43,7 +43,7 @@ jobs: prepare: name: Prepare uses: ./.github/workflows/_prepare.yml - + build: name: Build & Package needs: [ prepare ] @@ -124,7 +124,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - @@ -135,11 +135,11 @@ jobs: uses: ./.github/actions/artifacts-restore - name: Attetstation - if: ${{ github.event_name == 'repository_dispatch' }} + if: github.event_name == 'repository_dispatch' uses: ./.github/actions/artifacts-attest - name: DockerHub Publish Readme - if: ${{ github.event_name == 'repository_dispatch' }} + if: github.event_name == 'repository_dispatch' shell: pwsh run: dotnet run/docker.dll --target=DockerHubReadmePublish env: @@ -151,10 +151,10 @@ jobs: run: dotnet run/release.dll --target=PublishRelease - name: '[Publish Release]' - if: ${{ github.event_name == 'repository_dispatch' }} - uses: peter-evans/repository-dispatch@v3 + if: github.event_name == 'repository_dispatch' + uses: peter-evans/repository-dispatch@v4 with: token: ${{ secrets.RELEASE_GITHUB_TOKEN }} repository: ${{ github.repository }} event-type: publish-release - client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "tag": "${{ github.event.client_payload.tag }}"}' \ No newline at end of file + client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "tag": "${{ github.event.client_payload.tag }}"}' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 67c9758109..1966b69e27 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -49,14 +49,15 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} + tools: linked - name: Cache cake frosting @@ -68,7 +69,7 @@ jobs: - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json - @@ -82,4 +83,4 @@ jobs: run: dotnet run/build.dll --target=BuildPrepare --exclusive - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a08e5717da..3c3aa34a9c 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -38,7 +38,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - @@ -72,7 +72,7 @@ jobs: restore-keys: node-${{ runner.os }} - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json - @@ -91,7 +91,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - @@ -130,7 +130,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - @@ -142,11 +142,6 @@ jobs: run: dotnet run/docs.dll --target=GenerateSchemas - name: '[Publish Documentation]' - if: ${{ github.event_name == 'repository_dispatch' }} - shell: pwsh - run: dotnet run/docs.dll --target=PublishDocs - - - name: '[Publish Documentation]' - if: ${{ github.event_name == 'workflow_dispatch' }} + if: github.event_name == 'repository_dispatch' || github.event_name == 'workflow_dispatch' shell: pwsh run: dotnet run/docs.dll --target=PublishDocs --force diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index f05e80535c..8c2ba5f079 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -39,10 +39,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json - diff --git a/.github/workflows/gittools-actions.yml b/.github/workflows/gittools-actions.yml new file mode 100644 index 0000000000..8d5bcd04eb --- /dev/null +++ b/.github/workflows/gittools-actions.yml @@ -0,0 +1,43 @@ +name: Update GitTools Actions + +on: + workflow_dispatch: + inputs: + tag-name: + description: 'Tag name to use for the release' + required: true + repository_dispatch: + types: [ publish-release ] + +defaults: + run: + shell: pwsh + +permissions: + contents: read + +jobs: + homebrew: + permissions: + contents: none + name: Update GitTools Actions + runs-on: ubuntu-24.04 + steps: + - + name: Get version + id: get-version + shell: pwsh + run: | + $version = "${{ github.event.client_payload.tag }}" + if ($version -eq "") { + $version = "${{ github.event.inputs.tag-name }}" + } + "version=$version" >> $env:GITHUB_OUTPUT + - + uses: peter-evans/repository-dispatch@v4 + name: Update GitTools Actions + with: + token: ${{ secrets.RELEASE_GITHUB_TOKEN }} + repository: ${{ github.repository_owner }}/actions + event-type: gitversion-release-published + client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "tag": "${{ steps.get-version.outputs.version }}"}' diff --git a/.github/workflows/homebrew.yml b/.github/workflows/homebrew.yml index 12cfa22056..3f3ee536b2 100644 --- a/.github/workflows/homebrew.yml +++ b/.github/workflows/homebrew.yml @@ -19,7 +19,8 @@ jobs: name: Bump Homebrew formula runs-on: macos-latest steps: - - name: Get version + - + name: Get version id: get-version shell: pwsh run: | @@ -27,7 +28,7 @@ jobs: if ($version -eq "") { $version = "${{ github.event.inputs.tag-name }}" } - "version=$version" >> $env:GITHUB_OUTPUT + "version=$version" >> $env:GITHUB_OUTPUT - uses: mislav/bump-homebrew-formula-action@v3 name: Bump Homebrew formula @@ -40,4 +41,4 @@ jobs: For additional details see https://github.com/GitTools/GitVersion/releases/tag/${{ steps.get-version.outputs.version }} env: - COMMITTER_TOKEN: ${{ secrets.RELEASE_GITHUB_TOKEN }} \ No newline at end of file + COMMITTER_TOKEN: ${{ secrets.RELEASE_GITHUB_TOKEN }} diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml index e3918452ad..526427a09b 100644 --- a/.github/workflows/mkdocs.yml +++ b/.github/workflows/mkdocs.yml @@ -1,17 +1,32 @@ name: Markdown Update on: push: + branches: + - main + - 'fix/*' + - 'feature/*' + - 'poc/*' + - 'support/*' + paths: + - 'docs/**' + + pull_request: + branches: + - main + - 'support/*' + paths: + - 'docs/**' env: DOTNET_ROLL_FORWARD: "Major" DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_NOLOGO: 1 - + defaults: run: shell: pwsh - + jobs: docs: name: Update Markdown (embedded snippets) @@ -19,29 +34,36 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 + if: github.event_name == 'push' + with: + token: ${{ secrets.PUSH_GITHUB_TOKEN }} + - + name: Checkout + uses: actions/checkout@v6 + if: github.event_name == 'pull_request' - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json - - + - name: Run MarkdownSnippets run: | dotnet tool install --global MarkdownSnippets.Tool mdsnippets --write-header false working-directory: ${{ github.workspace }}/docs/input - - + - name: Check for changes id: status run: | if ($null -ne (git status --porcelain)) { echo "has_changes=1"; echo "has_changes=1" >> $env:GITHUB_OUTPUT } - - + - name: Push changes run: | git add --verbose . - git config user.name 'Artur Stolear' - git config user.email 'artur.stolear@gmail.com' + git config user.name 'gittools-bot' + git config user.email 'gittoolsbot@outlook.com' git commit -m 'Docs changes' --allow-empty git push --force - if: steps.status.outputs.has_changes == '1' \ No newline at end of file + if: steps.status.outputs.has_changes == '1' diff --git a/.github/workflows/new-cli.yml b/.github/workflows/new-cli.yml index aa466cc455..5fd7034189 100644 --- a/.github/workflows/new-cli.yml +++ b/.github/workflows/new-cli.yml @@ -39,10 +39,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json - diff --git a/.github/workflows/public-api.yml b/.github/workflows/public-api.yml new file mode 100644 index 0000000000..418c45f7c0 --- /dev/null +++ b/.github/workflows/public-api.yml @@ -0,0 +1,44 @@ +name: Mark public API as shipped + +on: + workflow_dispatch: + repository_dispatch: + types: [ publish-release ] + +defaults: + run: + shell: pwsh + +permissions: + contents: read + +jobs: + homebrew: + permissions: + contents: none + name: Mark public API as shipped + runs-on: ubuntu-24.04 + steps: + - + name: Checkout + uses: actions/checkout@v6 + if: github.event_name == 'repository_dispatch' || github.event_name == 'workflow_dispatch' + with: + token: ${{ secrets.PUSH_GITHUB_TOKEN }} + - + name: Mark public API as shipped + run: ./src/mark-shipped.ps1 + - + name: Check for changes + id: status + run: | + if ($null -ne (git status --porcelain)) { echo "has_changes=1"; echo "has_changes=1" >> $env:GITHUB_OUTPUT } + - + name: Push changes + run: | + git add --verbose . + git config user.name 'gittools-bot' + git config user.email 'gittoolsbot@outlook.com' + git commit -m 'Mark public API as shipped' --allow-empty + git push --force + if: steps.status.outputs.has_changes == '1' diff --git a/.github/workflows/qodana_analysis.yml b/.github/workflows/qodana_analysis.yml index de9cd77019..76daa8ccbf 100644 --- a/.github/workflows/qodana_analysis.yml +++ b/.github/workflows/qodana_analysis.yml @@ -15,18 +15,18 @@ jobs: checks: write steps: - - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: global-json-file: global.json - name: 'Qodana Scan' - uses: jetbrains/qodana-action@v2025.1.1 + uses: jetbrains/qodana-action@v2025.2.2 with: args: --baseline,qodana.sarif.json cache-default-branch-only: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ae9230ea55..521ac0f921 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,7 +10,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Get version id: get-version @@ -20,7 +20,7 @@ jobs: $VERSION="${{ github.ref }}".Replace("refs/tags/", "") "version=$VERSION" >> $env:GITHUB_OUTPUT - - uses: peter-evans/repository-dispatch@v3 + uses: peter-evans/repository-dispatch@v4 with: token: ${{ secrets.RELEASE_GITHUB_TOKEN }} repository: ${{ github.repository }} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 4db0930525..268a3c6c3f 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -13,7 +13,7 @@ jobs: stale: runs-on: ubuntu-24.04 steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: operations-per-run: 100 # set 'stale' label diff --git a/build/.run/Artifacts DotnetTool Test.run.xml b/build/.run/Artifacts DotnetTool Test.run.xml index c4c33a96bc..ac637febb2 100644 --- a/build/.run/Artifacts DotnetTool Test.run.xml +++ b/build/.run/Artifacts DotnetTool Test.run.xml @@ -1,7 +1,7 @@ - \ No newline at end of file + diff --git a/build/.run/Artifacts MsBuildCore Test.run.xml b/build/.run/Artifacts MsBuildCore Test.run.xml index c39a0ea675..9c99fb04c5 100644 --- a/build/.run/Artifacts MsBuildCore Test.run.xml +++ b/build/.run/Artifacts MsBuildCore Test.run.xml @@ -1,7 +1,7 @@ - \ No newline at end of file + diff --git a/build/.run/Artifacts Native Test.run.xml b/build/.run/Artifacts Native Test.run.xml index a36059f498..db24e6631a 100644 --- a/build/.run/Artifacts Native Test.run.xml +++ b/build/.run/Artifacts Native Test.run.xml @@ -1,7 +1,7 @@ - \ No newline at end of file + diff --git a/build/.run/Build.run.xml b/build/.run/Build.run.xml index e178484aae..0dc4e8dcaf 100644 --- a/build/.run/Build.run.xml +++ b/build/.run/Build.run.xml @@ -15,9 +15,9 @@