name: Build and Test on: # Manual trigger workflow_dispatch: # Run CI for all pushes to main push: branches: ["main"] # Run CI for pull requests to all branches, but only if code changed pull_request: paths: - ".github/workflows/ci-*.yml" - "*.sln" - "*.props" - "Makefile" - "global.json" - "src/**" - "tests/**" - "samples/**" - "docs/**" permissions: contents: read jobs: build: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] configuration: [Debug, Release] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: ๐Ÿ“ฅ Clone the repo uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - name: ๐Ÿ”ง Set up .NET uses: actions/setup-dotnet@d4c94342e560b34958eacfc5d055d21461ed1c5d # v5.0.0 with: dotnet-version: | 10.0.x 9.0.x # NetFX testing on non-Windows requires mono - name: ๐Ÿ”ง Setup Mono if: runner.os == 'Linux' run: sudo apt-get install -y mono-devel - name: ๐Ÿ”ง Setup Mono on macOS if: runner.os == 'macOS' run: brew install mono - name: ๐Ÿ”ง Set up Node.js uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: '20' - name: ๐Ÿ“ฆ Install dependencies for tests run: npm install @modelcontextprotocol/server-everything - name: ๐Ÿ“ฆ Install dependencies for tests run: npm install @modelcontextprotocol/server-memory - name: ๐Ÿ—๏ธ Build run: make build CONFIGURATION=${{ matrix.configuration }} - name: ๐Ÿงช Test run: make test CONFIGURATION=${{ matrix.configuration }} - name: ๐Ÿ“ฆ Pack if: matrix.configuration == 'Release' run: make pack CONFIGURATION=${{ matrix.configuration }} - name: ๐Ÿ“š Generate docs run: make generate-docs CONFIGURATION=${{ matrix.configuration }} - name: ๐Ÿ“ค Upload test results artifact if: always() uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: testresults-${{ matrix.os }}-${{ matrix.configuration }} path: artifacts/testresults/** publish-coverage: if: github.actor != 'dependabot[bot]' needs: build uses: ./.github/workflows/ci-code-coverage.yml secrets: inherit