name: CI on: push: branches: [main] pull_request: branches: [main] 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 libheif tools (for HEIC tests) run: sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends libheif-examples libheif-plugin-x265 libheif-plugin-libde265 - 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 (${{ matrix.tag }}) runs-on: ubuntu-latest strategy: matrix: include: - tag: full variant: full gpu: "false" - tag: lite variant: lite gpu: "false" - tag: cuda variant: full gpu: "true" steps: - uses: actions/checkout@v4 - uses: docker/setup-buildx-action@v3 - uses: docker/build-push-action@v6 with: context: . file: docker/Dockerfile push: false build-args: | VARIANT=${{ matrix.variant }} GPU=${{ matrix.gpu }} tags: stirling-image:ci-${{ matrix.tag }} cache-from: type=gha,scope=${{ matrix.tag }} cache-to: type=gha,mode=max,scope=${{ matrix.tag }}