From 91ff0e5a3e886211c10c5591ff2b0e8bf96cd511 Mon Sep 17 00:00:00 2001 From: Minoru Mizutani Date: Tue, 29 Apr 2025 16:34:28 +0900 Subject: [PATCH] Setup CI --- .github/workflows/ci.yml | 131 +++++++++++++++++++++++++++++++++++++++ deno.json | 2 + 2 files changed, 133 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f4e9002 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,131 @@ +name: CI + +on: + push: + branches: [main] + paths: + - '**/*' + - '!**/*.md' + - '!.github/**' + - '.github/workflows/ci.yml' + pull_request: + branches: [main] + paths: + - '**/*' + - '!**/*.md' + - '!.github/**' + - '.github/workflows/ci.yml' + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: false + +jobs: + format: + runs-on: ubuntu-24.04-arm + steps: + - name: Setup repo + uses: actions/checkout@v4 + + - name: Setup Deno + uses: denoland/setup-deno@v1 + with: + deno-version: v1.x + + - name: Cache Deno dependencies + uses: actions/cache@v4 + with: + path: | + ~/.deno + ~/.cache/deno + key: ${{ runner.os }}-deno-${{ hashFiles('deno.lock') }} + restore-keys: | + ${{ runner.os }}-deno- + + - name: Verify formatting + run: deno fmt src/ tests/ --check + + lint: + runs-on: ubuntu-24.04-arm + steps: + - name: Setup repo + uses: actions/checkout@v4 + + - name: Setup Deno + uses: denoland/setup-deno@v1 + with: + deno-version: v1.x + + - name: Cache Deno dependencies + uses: actions/cache@v4 + with: + path: | + ~/.deno + ~/.cache/deno + key: ${{ runner.os }}-deno-${{ hashFiles('deno.lock') }} + restore-keys: | + ${{ runner.os }}-deno- + + - name: Run linter + run: deno lint + + typecheck: + runs-on: ubuntu-24.04-arm + steps: + - name: Setup repo + uses: actions/checkout@v4 + + - name: Setup Deno + uses: denoland/setup-deno@v1 + with: + deno-version: v1.x + + - name: Cache Deno dependencies + uses: actions/cache@v4 + with: + path: | + ~/.deno + ~/.cache/deno + key: ${{ runner.os }}-deno-${{ hashFiles('deno.lock') }} + restore-keys: | + ${{ runner.os }}-deno- + + - name: Run type check + run: deno check src/**/*.ts tests/**/*.ts + + test: + runs-on: ubuntu-24.04-arm + steps: + - name: Setup repo + uses: actions/checkout@v4 + + - name: Setup Deno + uses: denoland/setup-deno@v1 + with: + deno-version: v1.x + + - name: Cache Deno dependencies + uses: actions/cache@v4 + with: + path: | + ~/.deno + ~/.cache/deno + key: ${{ runner.os }}-deno-${{ hashFiles('deno.lock') }} + restore-keys: | + ${{ runner.os }}-deno- + + - name: Run tests + run: deno task test + + - name: Generate coverage + run: deno coverage coverage --exclude="node_modules/" + + - name: Upload coverage reports + uses: codecov/codecov-action@v4 + with: + directory: ./coverage/ + fail_ci_if_error: false + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/deno.json b/deno.json index a08b41e..439d563 100644 --- a/deno.json +++ b/deno.json @@ -18,6 +18,8 @@ "proxy:watch": "deno run --watch --allow-env --allow-read --allow-sys=homedir --allow-run=open --allow-write=\"$HOME/.mcp-auth/mcp-remote-deno-0.0.1\" --allow-net=0.0.0.0,127.0.0.1,localhost src/proxy.ts", "client:start": "deno run --allow-env --allow-read --allow-sys=homedir --allow-run=open --allow-write=\"$HOME/.mcp-auth/mcp-remote-deno-0.0.1\" --allow-net=0.0.0.0,127.0.0.1,localhost src/client.ts", "client:watch": "deno run --watch --allow-env --allow-read --allow-sys=homedir --allow-run=open --allow-write=\"$HOME/.mcp-auth/mcp-remote-deno-0.0.1\" --allow-net=0.0.0.0,127.0.0.1,localhost src/client.ts", + "check": "deno check src/**/*.ts tests/**/*.ts", + "fmt": "deno fmt src/ tests/", "test": "deno test --allow-net=0.0.0.0,127.0.0.1,localhost --allow-env --allow-read --allow-sys=homedir tests/", "test:watch": "deno test --watch --allow-net=0.0.0.0,127.0.0.1,localhost --allow-env --allow-read --allow-sys=homedir tests/", "test:coverage": "deno test --coverage=coverage --allow-net=0.0.0.0,127.0.0.1,localhost --allow-env --allow-read --allow-sys=homedir tests/ && deno coverage coverage"