Skip to content

Format, lint on PR, require all changes be committed #1

Format, lint on PR, require all changes be committed

Format, lint on PR, require all changes be committed #1

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
# unit tests don't need environment variables - they test pure functions
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Parse .tool-versions
uses: wistia/parse-tool-versions@v2.1.1
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: "${{ env.BUN }}"
- name: Install dependencies
run: bun install
- name: Run unit tests
run: bun test:unit
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Parse .tool-versions
uses: wistia/parse-tool-versions@v2.1.1
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: "${{ env.BUN }}"
- name: Run linters and formatters
run: |
bun install
bun run format
bun run lint:fix
bun run lint
- name: Fail if changes are found
run: |
if [[ -z $(git status --porcelain) ]]; then
echo "✅ No changes detected."
exit 0
fi
echo "❌ Code is not properly formatted. Please run 'bun run format && bun run lint:fix' and commit the changes."
git status --short
exit 1
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
needs: unit-tests # run after unit tests pass
# these are placeholders which is fine for integration tests
env:
KV_URL: redis://localhost:6379
KV_REST_API_READ_ONLY_TOKEN: test-read-only-token
KV_REST_API_TOKEN: test-api-token
KV_REST_API_URL: https://test-kv-api.example.com
SUPABASE_SERVICE_ROLE_KEY: test-service-role-key
INFRA_API_URL: https://api.e2b-test.dev
BILLING_API_URL: https://billing.e2b-test.dev
NEXT_PUBLIC_E2B_DOMAIN: e2b-test.dev
NEXT_PUBLIC_POSTHOG_KEY: test-posthog-key
NEXT_PUBLIC_SUPABASE_URL: https://test-supabase-url.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY: test-supabase-anon-key
NEXT_PUBLIC_STRIPE_BILLING_URL: https://test-stripe-billing.example.com
NEXT_PUBLIC_SCAN: 0
NEXT_PUBLIC_MOCK_DATA: 1
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Parse .tool-versions
uses: wistia/parse-tool-versions@v2.1.1
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: "${{ env.BUN }}"
- name: Install dependencies
run: bun install
- name: Run integration tests
run: bun test:integration