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 }}