name: Release on: push: branches: [main, dev] paths-ignore: - ".github/workflows/mirror.yml" - ".github/workflows/release-sdk.yml" - "packages/**" pull_request: branches: [main, dev] paths-ignore: - ".github/workflows/mirror.yml" - ".github/workflows/release-sdk.yml" - "packages/**" env: SQLX_OFFLINE: true jobs: unit-tests: runs-on: depot-ubuntu-24.04 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Cache cargo dependencies uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git key: cargo-deps-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} restore-keys: | cargo-deps-${{ runner.os }}- - name: Run unit tests run: cargo test --lib e2e-tests: runs-on: depot-ubuntu-24.04 services: postgres: image: postgres:16-alpine env: POSTGRES_USER: happyview POSTGRES_PASSWORD: happyview POSTGRES_DB: happyview_test ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Cache cargo dependencies uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git key: cargo-deps-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} restore-keys: | cargo-deps-${{ runner.os }}- - name: Add WASM target run: rustup target add wasm32-unknown-unknown - name: Build test plugin run: cargo build --manifest-path tests/fixtures/test_plugin/Cargo.toml --target wasm32-unknown-unknown --release - name: Run e2e tests env: TEST_DATABASE_URL: postgres://happyview:happyview@localhost:5432/happyview_test run: cargo test --tests frontend: runs-on: depot-ubuntu-24.04 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 24 - name: Build frontend working-directory: web run: npm ci && npm run build lint: runs-on: depot-ubuntu-24.04 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Cache cargo dependencies uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git key: cargo-deps-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} restore-keys: | cargo-deps-${{ runner.os }}- - name: Check formatting run: cargo fmt -- --check - name: Clippy run: cargo clippy --all-targets -- -D warnings release: if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev') needs: [unit-tests, e2e-tests, frontend, lint] runs-on: depot-ubuntu-24.04 permissions: contents: write steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22 - name: Release env: GITHUB_TOKEN: ${{ secrets.DISPATCH_GH_TOKEN }} run: npx semantic-release