Add Bun CLI release helper (#285) #809
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| permissions: | |
| contents: read | |
| jobs: | |
| changes: | |
| name: Detect changed areas | |
| runs-on: ubuntu-latest | |
| outputs: | |
| backend: ${{ steps.filter.outputs.backend }} | |
| cli: ${{ steps.filter.outputs.cli }} | |
| frontend: ${{ steps.filter.outputs.frontend }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Filter changed paths | |
| id: filter | |
| uses: dorny/paths-filter@v3 | |
| with: | |
| filters: | | |
| frontend: | |
| - ".github/workflows/**" | |
| - "biome.json" | |
| - "bun.lock" | |
| - "package.json" | |
| - "packages/tsconfig/**" | |
| - "scripts/**" | |
| - "tsconfig*.json" | |
| - "packages/landing/**" | |
| - "packages/web/**" | |
| backend: | |
| - ".github/workflows/**" | |
| - "biome.json" | |
| - "bun.lock" | |
| - "package.json" | |
| - "packages/tsconfig/**" | |
| - "scripts/**" | |
| - "tsconfig*.json" | |
| - "packages/db/**" | |
| - "packages/server/**" | |
| cli: | |
| - ".github/workflows/**" | |
| - "biome.json" | |
| - "bun.lock" | |
| - "package.json" | |
| - "packages/tsconfig/**" | |
| - "scripts/**" | |
| - "tsconfig*.json" | |
| - "packages/agent-adapters/**" | |
| - "packages/agents/**" | |
| - "packages/cli/**" | |
| - "packages/create-devos-plugin/**" | |
| - "packages/workflow/**" | |
| frontend: | |
| name: Frontend | |
| needs: changes | |
| if: needs.changes.outputs.frontend == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 24.7.0 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.3.8 | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| - name: Check formatting and lint | |
| run: bun run biome check packages/web packages/landing | |
| - name: Typecheck web | |
| run: bun run --filter web typecheck | |
| - name: Typecheck landing | |
| run: bun run --filter landing typecheck | |
| - name: Test web | |
| run: bun test packages/web/tests | |
| backend: | |
| name: Backend | |
| needs: changes | |
| if: needs.changes.outputs.backend == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 24.7.0 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.3.8 | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| - name: Check server | |
| run: bun run --filter devos-server check | |
| - name: Check database | |
| run: bun run --filter devos-db check | |
| - name: Typecheck server | |
| run: bun run --filter devos-server typecheck | |
| - name: Typecheck database | |
| run: bun run --filter devos-db typecheck | |
| - name: Test server | |
| run: bun run --filter devos-server test | |
| - name: Test database | |
| run: bun run --filter devos-db test | |
| cli: | |
| name: CLI | |
| needs: changes | |
| if: needs.changes.outputs.cli == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 24.7.0 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.3.8 | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| - name: Check agents | |
| run: bun run --filter devos-agents check | |
| - name: Check adapters | |
| run: bun run --filter adapters check | |
| - name: Check plugin creator | |
| run: bun run --filter create-devos-plugin check | |
| - name: Check workflow creator | |
| run: bun run --filter create-devos-workflow check | |
| - name: Check CLI | |
| run: bun run --filter devos check | |
| - name: Typecheck agents | |
| run: bun run --filter devos-agents typecheck | |
| - name: Typecheck adapters | |
| run: bun run --filter adapters typecheck | |
| - name: Typecheck plugin creator | |
| run: bun run --filter create-devos-plugin typecheck | |
| - name: Typecheck workflow creator | |
| run: bun run --filter create-devos-workflow typecheck | |
| - name: Typecheck CLI | |
| run: bun run --filter devos typecheck | |
| - name: Test agents | |
| run: bun run --filter devos-agents test | |
| - name: Test adapters | |
| run: bun run --filter adapters test | |
| - name: Test plugin creator | |
| run: bun run --filter create-devos-plugin test | |
| - name: Test workflow creator | |
| run: bun run --filter create-devos-workflow test | |
| - name: Test CLI | |
| run: bun run --filter devos test | |
| ci-result: | |
| name: CI result | |
| runs-on: ubuntu-latest | |
| needs: | |
| - changes | |
| - frontend | |
| - backend | |
| - cli | |
| if: always() | |
| steps: | |
| - name: Check lane results | |
| run: | | |
| if [[ "${{ needs.changes.result }}" != "success" ]]; then | |
| echo "Changed-path detection failed." | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.frontend.result }}" =~ ^(failure|cancelled)$ ]]; then | |
| echo "Frontend lane failed." | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.backend.result }}" =~ ^(failure|cancelled)$ ]]; then | |
| echo "Backend lane failed." | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.cli.result }}" =~ ^(failure|cancelled)$ ]]; then | |
| echo "CLI lane failed." | |
| exit 1 | |
| fi | |
| echo "CI lanes completed or were skipped based on changed paths." |