Hi,
I need some help in executing ng build --prod for my angular application in bitbucket. I have setup pipelines for deploying my angular application. But I am not able to do a build in prod mode. It always fails with "EOF" error shown below. The root cause seems to be due to lack memory. It seems this command require large heap. PFB the error and my yml files. I am not sure how to achieve the prod build.
Error:
npm WARN deprecated node-fetch-npm@2.0.4: This module is not used anymore, npm uses minipass-fetch for its fetch implementation now
/usr/local/bin/ng -> /usr/local/lib/node_modules/@angular/cli/bin/ng
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.2 (node_modules/@angular/cli/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
+ @angular/cli@7.3.9
added 295 packages from 186 contributors in 13.408s
Removing intermediate container f0bebb2a3cd2
---> ffae8ce12713
Step 8/14 : RUN npm run-script build-prod
---> Running in 08a2b0ce9bf6
> Angular-6@6.0.0 build-prod /app
> node --max-old-space-size=8192 ./node_modules/@angular/cli/bin/ng build --base-href=/portal/ --prod
(node:20) [DEP0131] DeprecationWarning: The legacy HTTP parser is deprecated.
unexpected EOF
Package.json
============
..........
Bitbucket-pipeline.yml
.......
Dockerfile ( steps referenced in docker build cmd above)
### STAGE 1: Build ###
FROM node:12.22.10-buster-slim as BUILDER
RUN apt-get update && apt-get install zip -y
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
COPY . .
RUN npm install
RUN npm install -g @angular/cli@7.3.9
RUN export NODE_OPTIONS=--max-old-space-size=6144
RUN npm run-script build-prod
WORKDIR /app/dist
RUN zip -r /app/portal.war .
From registry.digitalocean.com/gehi/tomcat-8-0-53-alpine:custom
LABEL maintainer="priyadarshiniy@gehilaw.com"
COPY --from=BUILDER /app/portal.war /usr/local/tomcat/webapps/portal.war
EXPOSE 8080
Hi @Priyadarshiniy Rajendran and welcome to the community.
I see the 'self.hosted' label in your yml file, are you running this step in a Linux Docker Runner?
With the size: 2x option a step gets 8 GB of memory. The build container is given 1024 MB of the total memory, which covers your build process and some Pipelines overheads (agent container, logging, etc). The total memory for services in each pipeline step must not exceed the remaining memory, which is 7128 MB for 2x steps.
If the error occurs when the docker build command is running, and if the root cause is indeed a lack of memory, you can give more memory to the Docker service (in your definition it is 4096 MB), up to 7128 MB.
If this is not enough, with Runners, you can configure up to 32GB (8x) of memory to run your builds, provided that the server where you run the Runner has that memory available. Valid sizes for the size option are 1x, 2x, 4x, and 8x. The corresponding memory available is 4 GB, 8 GB, 16 GB, and 32 GB and the maximum memory you can assign to the service is 3072 MB, 7168 MB, 15360 MB, and 31744 MB respectively.
You may also need to adjust max-old-space-size depending on how much memory your build needs.
Kind regards,
Theodora
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.