name: openclaw checks on: workflow_dispatch: push: branches: [main] paths: - 'openclaw/**' - '.github/workflows/openclaw-checks.yml' pull_request: paths: - 'openclaw/**' - '.github/workflows/openclaw-checks.yml' jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 9 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: 'pnpm' cache-dependency-path: openclaw/pnpm-lock.yaml - name: Install dependencies run: cd openclaw && pnpm install --frozen-lockfile - name: Type check run: cd openclaw && pnpm exec tsc --noEmit test: runs-on: ubuntu-latest strategy: matrix: node-version: [20, 22] steps: - uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 9 - name: Setup Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' cache-dependency-path: openclaw/pnpm-lock.yaml - name: Install dependencies run: cd openclaw && pnpm install --frozen-lockfile - name: Run tests with coverage run: cd openclaw && pnpm exec vitest run --coverage - name: Upload coverage to Codecov if: matrix.node-version == 20 uses: codecov/codecov-action@v4 with: flags: openclaw directory: openclaw/coverage env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 9 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: 'pnpm' cache-dependency-path: openclaw/pnpm-lock.yaml - name: Install dependencies run: cd openclaw && pnpm install --frozen-lockfile - name: Build run: cd openclaw && pnpm build - name: Verify dist output exists run: | test -f openclaw/dist/index.js || (echo "Build output missing: dist/index.js" && exit 1) test -f openclaw/dist/index.d.ts || (echo "Build output missing: dist/index.d.ts" && exit 1)