Optimizing build memory usage.
Some checks failed
Tests / YAML Syntax Check (push) Has been skipped
Tests / TOML Syntax Check (push) Has been skipped
Tests / Backend Tests (push) Has been skipped
Tests / Trailing Whitespace Check (push) Has been skipped
Tests / No Docstring Types Check (push) Has been skipped
Tests / ESLint Check (push) Has been skipped
Tests / Prettier Format Check (push) Has been skipped
Tests / Build and Push CICD Image (push) Failing after 8m8s
Tests / End of File Check (push) Has been skipped
Tests / TypeScript Type Check (push) Has been skipped
Tests / TSDoc Lint Check (push) Has been skipped
Tests / Mixed Line Ending Check (push) Has been skipped
Tests / TOML Formatting Check (push) Has been skipped
Tests / Ruff Linting (push) Has been skipped
Tests / Ruff Format Check (push) Has been skipped
Tests / Pyright Type Check (push) Has been skipped
Tests / Darglint Docstring Check (push) Has been skipped
Tests / Frontend Tests (push) Has been skipped
Tests / Backend Doctests (push) Has been skipped
Tests / Integration Tests (push) Has been skipped
Tests / End-to-End Tests (push) Has been skipped

Signed-off-by: Cliff Hill <xlorep@darkhelm.org>
This commit is contained in:
2025-10-28 09:30:12 -04:00
parent a54fe5c1b9
commit 32397e0cc2
2 changed files with 49 additions and 1 deletions

View File

@@ -28,6 +28,9 @@ secrets/
**/node_modules/
**/dist/
**/build/
**/.yarn/cache/
**/.yarn/install-state.gz
**/yarn-cache/
# IDE files
.vscode/

View File

@@ -38,6 +38,12 @@ RUN apt-fast update && apt-fast install -y \
tzdata \
&& rm -rf /var/lib/apt/lists/*
# Configure system for memory-intensive builds
RUN echo "vm.overcommit_memory=1" >> /etc/sysctl.conf && \
echo "vm.max_map_count=262144" >> /etc/sysctl.conf && \
sysctl -w vm.overcommit_memory=1 && \
sysctl -w vm.max_map_count=262144
# Install Python 3.13 with retry and fallback mechanisms
RUN for i in 1 2 3; do \
echo "Attempt $i: Adding deadsnakes PPA..." && \
@@ -75,6 +81,13 @@ RUN corepack enable \
&& corepack prepare yarn@stable --activate \
&& yarn set version berry
# Configure Yarn globally for CI performance
RUN yarn config set httpTimeout 60000 && \
yarn config set networkTimeout 60000 && \
yarn config set enableGlobalCache false && \
yarn config set compressionLevel 0 && \
export NODE_OPTIONS="--max-old-space-size=2048"
# Install uv package manager globally
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
@@ -117,7 +130,39 @@ RUN uv pip install -e .
# Set up frontend dependencies
WORKDIR /workspace/frontend
RUN yarn install --immutable
# Create temporary swap file for memory-intensive yarn install
RUN dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024 2>/dev/null && \
mkswap /tmp/swapfile && \
swapon /tmp/swapfile || echo "Swap setup failed, continuing without swap"
# Configure Yarn for CI environment with memory optimizations
RUN echo "# CI optimizations" >> .yarnrc.yml && \
echo "httpTimeout: 60000" >> .yarnrc.yml && \
echo "networkTimeout: 60000" >> .yarnrc.yml && \
echo "enableGlobalCache: false" >> .yarnrc.yml && \
echo "compressionLevel: 0" >> .yarnrc.yml && \
echo "nmMode: hardlinks-local" >> .yarnrc.yml
# Install frontend dependencies with memory optimizations and retry mechanism
RUN export NODE_OPTIONS="--max-old-space-size=2048 --gc-interval=100" && \
export YARN_ENABLE_NETWORK=1 && \
for i in 1 2 3; do \
echo "Attempt $i: Installing frontend dependencies..." && \
yarn install --immutable \
--network-timeout 60000 \
--cache-folder /tmp/yarn-cache \
--network-concurrency 1 \
--verbose \
&& break || \
(echo "Attempt $i failed, cleaning up and retrying..." && \
rm -rf node_modules .yarn/cache .yarn/install-state.gz /tmp/yarn-cache && \
yarn cache clean --all 2>/dev/null || true && \
sleep 15); \
done && \
rm -rf /tmp/yarn-cache .yarn/cache && \
swapoff /tmp/swapfile 2>/dev/null || true && \
rm -f /tmp/swapfile
# Verify all tools are working with the project
RUN cd /workspace/backend && \