Optimize CI pipeline: merge check jobs, remove docker install, improve layer caching
All checks were successful
🚀 Deploy / 🧪 Test (pull_request) Successful in 2m26s
🚀 Deploy / ʦ🔍 Typecheck & Lint (pull_request) Successful in 1m23s
🚀 Deploy / 🐳 Build (pull_request) Has been skipped
🚀 Deploy / 🚀 Deploy (pull_request) Has been skipped

- Merge typecheck + lint into a single `check` job to eliminate one full
  job lifecycle and one npm ci invocation (~2-4 min savings)
- Remove `apt-get install docker.io` step — Docker CLI and buildx v0.23.0
  are now pre-installed in the custom brackt-runner:latest image
- Reorder Dockerfile build-env COPY layers so node_modules and config
  files are copied before source, improving registry cache hit granularity
- Expand .dockerignore to exclude .forgejo, .git, docs, plans, cypress,
  logs, .env files, and tsbuildinfo files from the build context

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Chris Parsons 2026-05-31 21:37:01 -07:00
parent add196902b
commit 36db8f73ca
3 changed files with 27 additions and 24 deletions

View file

@ -2,3 +2,14 @@
build build
node_modules node_modules
README.md README.md
.forgejo
.git
.claude
.grepai
docs
plans
cypress
*.log
.env*
!.env.example
tsconfig.*.tsbuildinfo

View file

@ -44,24 +44,10 @@ jobs:
DATABASE_URL: postgresql://test:test@postgres:5432/brackt_test DATABASE_URL: postgresql://test:test@postgres:5432/brackt_test
NODE_OPTIONS: --max-old-space-size=4096 NODE_OPTIONS: --max-old-space-size=4096
typecheck: check:
name: ʦ TypeScript name: ʦ🔍 Typecheck & Lint
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 10 timeout-minutes: 15
steps:
- name: ⬇️ Checkout repo
uses: https://github.com/actions/checkout@v4
- name: 📥 Install dependencies
run: npm ci
- name: 🔎 Type check
run: npm run typecheck
lint:
name: 🔍 Lint
runs-on: ubuntu-latest
timeout-minutes: 10
steps: steps:
- name: ⬇️ Checkout repo - name: ⬇️ Checkout repo
uses: https://github.com/actions/checkout@v4 uses: https://github.com/actions/checkout@v4
@ -72,9 +58,12 @@ jobs:
- name: 🔍 Lint (oxlint) - name: 🔍 Lint (oxlint)
run: npm run lint run: npm run lint
- name: 🔎 Type check
run: npm run typecheck
build: build:
name: 🐳 Build name: 🐳 Build
needs: [test, typecheck, lint] needs: [test, check]
if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }} if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 30 timeout-minutes: 30
@ -82,9 +71,6 @@ jobs:
- name: ⬇️ Checkout repo - name: ⬇️ Checkout repo
uses: https://github.com/actions/checkout@v4 uses: https://github.com/actions/checkout@v4
- name: 🐳 Install Docker CLI
run: apt-get update -qq && apt-get install -y -qq docker.io
- name: 🐳 Set up Docker Buildx - name: 🐳 Set up Docker Buildx
uses: https://github.com/docker/setup-buildx-action@v3 uses: https://github.com/docker/setup-buildx-action@v3

View file

@ -9,9 +9,15 @@ WORKDIR /app
RUN --mount=type=secret,id=npmrc,target=/app/.npmrc npm ci --omit=dev RUN --mount=type=secret,id=npmrc,target=/app/.npmrc npm ci --omit=dev
FROM node:20-alpine AS build-env FROM node:20-alpine AS build-env
COPY . /app/
COPY --from=development-dependencies-env /app/node_modules /app/node_modules
WORKDIR /app WORKDIR /app
COPY --from=development-dependencies-env /app/node_modules /app/node_modules
COPY package.json package-lock.json tsconfig*.json vite.config.ts react-router.config.ts drizzle.config.ts ./
COPY scripts/ /app/scripts/
COPY app/ /app/app/
COPY server/ /app/server/
COPY database/ /app/database/
COPY public/ /app/public/
COPY instrument.server.mjs ./
RUN npm run build RUN npm run build
FROM node:20-alpine FROM node:20-alpine