improvement(ci): parallelize Docker builds and fix test timeouts (#4083)

* improvement(ci): parallelize Docker builds with tests and remove duplicate turbo install

* fix(test): use SecureFetchResponse shape in mock instead of standard Response
This commit is contained in:
Waleed
2026-04-09 15:18:19 -07:00
committed by Waleed Latif
parent fdb2e7864f
commit d38cc98fd7
3 changed files with 14 additions and 10 deletions

View File

@@ -48,7 +48,7 @@ jobs:
# Build AMD64 images and push to ECR immediately (+ GHCR for main)
build-amd64:
name: Build AMD64
needs: [test-build, detect-version]
needs: [detect-version]
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/dev')
runs-on: blacksmith-8vcpu-ubuntu-2404
permissions:
@@ -150,7 +150,7 @@ jobs:
# Build ARM64 images for GHCR (main branch only, runs in parallel)
build-ghcr-arm64:
name: Build ARM64 (GHCR Only)
needs: [test-build, detect-version]
needs: [detect-version]
runs-on: blacksmith-8vcpu-ubuntu-2404-arm
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
permissions:

View File

@@ -487,12 +487,17 @@ describe('Automatic Internal Route Detection', () => {
cleanupEnvVars = setupEnvVars({ NEXT_PUBLIC_APP_URL: 'http://localhost:3000' })
mockValidateUrlWithDNS.mockResolvedValue({ isValid: true, resolvedIP: '93.184.216.34' })
mockSecureFetchWithPinnedIP.mockResolvedValue(
new Response(JSON.stringify({}), {
status: 200,
headers: { 'content-type': 'application/json' },
})
)
mockSecureFetchWithPinnedIP.mockResolvedValue({
ok: true,
status: 200,
statusText: 'OK',
headers: {
get: (name: string) => (name.toLowerCase() === 'content-type' ? 'application/json' : null),
toRecord: () => ({ 'content-type': 'application/json' }),
},
text: async () => JSON.stringify({}),
json: async () => ({}),
})
})
afterEach(() => {

View File

@@ -25,11 +25,10 @@ COPY packages/testing/package.json ./packages/testing/package.json
COPY packages/logger/package.json ./packages/logger/package.json
COPY packages/tsconfig/package.json ./packages/tsconfig/package.json
# Install turbo globally, then dependencies, then rebuild isolated-vm for Node.js
# Install dependencies, then rebuild isolated-vm for Node.js
# Use --linker=hoisted for flat node_modules layout (required for Docker multi-stage builds)
RUN --mount=type=cache,id=bun-cache,target=/root/.bun/install/cache \
--mount=type=cache,id=npm-cache,target=/root/.npm \
bun install -g turbo && \
HUSKY=0 bun install --omit=dev --ignore-scripts --linker=hoisted && \
cd node_modules/isolated-vm && npx node-gyp rebuild --release