Optimize CI pipeline: merge check jobs, remove docker install, improve layer caching
- 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:
parent
add196902b
commit
36db8f73ca
3 changed files with 27 additions and 24 deletions
|
|
@ -1,4 +1,15 @@
|
||||||
.react-router
|
.react-router
|
||||||
build
|
build
|
||||||
node_modules
|
node_modules
|
||||||
README.md
|
README.md
|
||||||
|
.forgejo
|
||||||
|
.git
|
||||||
|
.claude
|
||||||
|
.grepai
|
||||||
|
docs
|
||||||
|
plans
|
||||||
|
cypress
|
||||||
|
*.log
|
||||||
|
.env*
|
||||||
|
!.env.example
|
||||||
|
tsconfig.*.tsbuildinfo
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
10
Dockerfile
10
Dockerfile
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue