Skip to main content
Ship includes GitHub Actions workflows in .github/workflows/ that run automatically on pull requests to validate builds and enforce code quality.

Workflows Overview

Build Workflows

Validate Docker builds for API and Web

Lint Workflows

Run ESLint, TypeScript, and Prettier

Build Workflows

Workflows build Docker images to ensure they compile successfully before merging. They use BuildKit caching to speed up builds.

Build API

File: .github/workflows/build-api.yml Triggers: PRs to main with changes in apps/api/** or packages/**
on:
  pull_request:
    branches: [main]
    paths:
      - apps/api/**
      - packages/**

jobs:
  build:
    steps:
      - uses: docker/build-push-action@v5
        with:
          file: ./apps/api/Dockerfile
          push: false
          cache-from: type=local,src=/tmp/.buildx-cache

Build Web

File: .github/workflows/build-web.yml Triggers: PRs to main with changes in apps/web/** or packages/**
on:
  pull_request:
    branches: [main]
    paths:
      - apps/web/**
      - packages/**

jobs:
  build:
    steps:
      - uses: docker/build-push-action@v5
        with:
          file: ./apps/web/Dockerfile
          push: false
          cache-from: type=local,src=/tmp/.buildx-cache

Lint Workflows

Linting uses a reusable template workflow that runs ESLint, TypeScript, and Prettier checks.

Linter Template

File: .github/workflows/linter.template.yml Reusable workflow for running linters with pnpm and Node.js.
env:
  PNPM_VERSION: 9.5.0
  NODE_VERSION: 22.13.0
The lint-action automatically posts inline comments on PRs for linting issues.

Lint API & Web

Files: .github/workflows/run-api-linter.yml, .github/workflows/run-web-linter.yml Triggers: PRs to main with changes in respective apps or packages
jobs:
  lint:
    uses: ./.github/workflows/linter.template.yml
    with:
      component: api
      dir: apps/api

Customization

Update Node.js/pnpm Versions

Edit .github/workflows/linter.template.yml:
env:
  PNPM_VERSION: 9.5.0    # Update version
  NODE_VERSION: 22.13.0  # Update version
All workflows support manual triggering via workflow_dispatch for testing.
I