name: CI on: push: branches: [main] paths-ignore: - "README.md" - "CONTRIBUTING.md" - "images/**" - "apps/docs/**" - "docs/**" pull_request: branches: [main] paths-ignore: - "README.md" - "CONTRIBUTING.md" - "images/**" - "apps/docs/**" - "docs/**" concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm lint typecheck: name: Typecheck runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm typecheck test: name: Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install system dependencies (HEIC + ExifTool) run: sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends libheif-examples libheif-plugin-x265 libheif-plugin-libde265 libimage-exiftool-perl - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm test:ci build: name: Build runs-on: ubuntu-latest needs: [lint, typecheck, test] steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm build docker: name: Docker Build Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: docker/setup-buildx-action@v3 - name: Log in to GHCR (for registry cache) uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GHCR_TOKEN }} - uses: docker/build-push-action@v6 with: context: . file: docker/Dockerfile push: false tags: ashim:ci build-args: SKIP_MODEL_DOWNLOADS=true cache-from: type=registry,ref=ghcr.io/${{ github.repository }}:cache-linux-amd64 cache-to: type=registry,ref=ghcr.io/${{ github.repository }}:cache-ci,mode=max