Summary:
- Build images tagged
noblepass for us, and ones taggednoble-new-buildsfail for us, citing missing dependencies as the failure reason. - We are currently using the deprecated Focal build image for deployments, as the default Noble build image is currently failing.
Issue:
Yesterday (2/9) we deployed our (Noble build image) Gatsby React app in the morning (10:42 AM EST) and it unexpectedly started to fail thereafter, with key error messages:
10:42:59 AM: Could not load gatsby-config.js: Cannot find module 'read-yaml'
10:42:59 AM: sh: 1: tsc: not found
After scratching our heads at this for a while, we redeployed several of our other Gatsby apps, and those too resulted in build failures on the default Noble build image.
One of our engineers determined that, when switching back to the deprecated Focal Ubuntu build image, deploys succeed again.
I investigated the last passing Noble build, and compared it to the first failing one, and determined that the build image had changed between the two.
And, while trying to make new builds, the build image seems to have flip-flopped between noble and noble-new-builds.
- Last passing build image deploy 2/6 @ 11:06 PM EST - Netlify
build-image version: 996f0ea96f97c0291387fbccd9b699238a7384e2 (noble)
- First failing build image deploy 2/9 @ 10:42 AM EST - Netlify
build-image version: 996f0ea96f97c0291387fbccd9b699238a7384e2 (noble-new-builds)
- Next passing image deploy 2/10 @ 10:13 AM EST - Netlify
build-image version: 93f23e48a710ac2d409555c35c167a58feefb0dd (noble)
- Latest failing image deploy 2/10 @ 12:30 PM EST - Netlify
build-image version: 93f23e48a710ac2d409555c35c167a58feefb0dd (noble-new-builds)
It appears on our end that the build image used for Noble is inconsistent and is changing. Perhaps Netlify engineers have been making changes to the defaults used?
Build images that are tagged noble pass for us, and ones tagged noble-new-builds fail for us, citing missing dependencies as the failure reason. Do we have control over which Noble build image is used?
As it stands, we are now using the deprecated Focal build image for deployments, and the default Noble build image is currently failing for us.
Below is the build log of the failing build using the noble-new-builds build image.
Initializing
Complete
10:42:05 AM: Build ready to start
10:42:06 AM: build-image version: 996f0ea96f97c0291387fbccd9b699238a7384e2 (noble-new-builds)
10:42:06 AM: buildbot version: 82ffec010ece33e26e6ae786dec2fca533ea1141
10:42:06 AM: Fetching cached dependencies
10:42:06 AM: Starting to download cache of 1.6GB (Last modified: 2026-02-07 04:13:07 +0000 UTC)
10:42:09 AM: Finished downloading cache in 3.018s
10:42:09 AM: Starting to extract cache
10:42:31 AM: Failed to fetch cache, continuing with build
10:42:31 AM: Starting to prepare the repo for build
10:42:32 AM: No cached dependencies found. Cloning fresh repo
10:42:32 AM: git clone --filter=blob:none https://github.com/ntid-cat/c4
10:42:32 AM: Preparing Git Reference refs/heads/staging
10:42:34 AM: Starting to install dependencies
10:42:34 AM: mise ~/.config/mise/config.toml tools: python@3.14.3
10:42:34 AM: mise ~/.config/mise/config.toml tools: ruby@3.4.8
10:42:34 AM: mise ~/.config/mise/config.toml tools: go@1.25.6
10:42:35 AM: Attempting Node.js version '22' from .nvmrc
10:42:35 AM: v22.22.0 is already installed.
10:42:35 AM: Now using node v22.22.0 (npm v10.9.4)
10:42:35 AM: Enabling Node.js Corepack
10:42:35 AM: No npm workspaces detected
10:42:35 AM: Successfully installed dependencies
10:42:36 AM: Detected 1 framework(s)
10:42:36 AM: "gatsby" at version "5.15.0"
10:42:36 AM: Starting build script
10:42:36 AM: Section completed: initializing
Building
Failed
10:42:38 AM: Netlify Build
10:42:38 AM: ────────────────────────────────────────────────────────────────
10:42:38 AM:
10:42:38 AM: ❯ Version
10:42:38 AM: @netlify/build 35.6.2
10:42:38 AM:
10:42:38 AM: ❯ Flags
10:42:38 AM: accountId: 5ea9ceccafbb95fdccbc9e25
10:42:38 AM: baseRelDir: true
10:42:38 AM: buildId: 698a004d1f636e0008a97180
10:42:38 AM: deployId: 698a004d1f636e0008a97182
10:42:38 AM:
10:42:38 AM: ❯ Current directory
10:42:38 AM: /opt/build/repo
10:42:38 AM:
10:42:38 AM: ❯ Config file
10:42:38 AM: /opt/build/repo/netlify.toml
10:42:38 AM:
10:42:38 AM: ❯ Context
10:42:38 AM: branch-deploy
10:42:38 AM:
10:42:38 AM: ❯ Installing plugins
10:42:38 AM: - @netlify/plugin-gatsby@3.8.4
10:42:58 AM:
10:42:58 AM: ❯ Loading plugins
10:42:58 AM: - @netlify/plugin-gatsby@3.8.4 from Netlify app
10:42:59 AM: Failed during stage 'building site': Build script returned non-zero exit code: 2 (https://ntl.fyi/exit-code-2)
10:42:59 AM: No Gatsby cache found. Building fresh.
10:42:59 AM: Could not load gatsby-config.js: Cannot find module 'read-yaml'
10:42:59 AM: Require stack:
10:42:59 AM: - /opt/build/repo/gatsby-config.js
10:42:59 AM: - /opt/build/repo/.netlify/plugins/node_modules/@netlify/plugin-gatsby/lib/helpers/config.js
10:42:59 AM: - /opt/build/repo/.netlify/plugins/node_modules/@netlify/plugin-gatsby/lib/helpers/cache.js
10:42:59 AM: - /opt/build/repo/.netlify/plugins/node_modules/@netlify/plugin-gatsby/lib/index.js
10:42:59 AM: Unable to validate if 'gatsby-plugin-netlify' is setup correctly.
10:42:59 AM:
10:42:59 AM: build.command from netlify.toml
10:42:59 AM: ────────────────────────────────────────────────────────────────
10:42:59 AM:
10:42:59 AM: $ npm run build
10:42:59 AM: > ntid-pegasus@0.3.1 build
10:42:59 AM: > tsc && cross-env NODE_OPTIONS=--max-old-space-size=4096 gatsby build
10:42:59 AM: sh: 1: tsc: not found
10:42:59 AM:
10:42:59 AM: "build.command" failed
10:42:59 AM: ────────────────────────────────────────────────────────────────
10:42:59 AM:
10:42:59 AM: Error message
10:42:59 AM: Command failed with exit code 127: npm run build (https://ntl.fyi/exit-code-127)
10:42:59 AM:
10:42:59 AM: Error location
10:42:59 AM: In build.command from netlify.toml:
10:42:59 AM: npm run build
10:42:59 AM:
10:42:59 AM: Resolved config
10:42:59 AM: build:
10:42:59 AM: command: npm run build
10:42:59 AM: commandOrigin: config
10:42:59 AM: environment:
10:42:59 AM: - FONT_AWESOME_TOKEN
10:42:59 AM: - GATSBY_TINYMCE_API_KEY
10:42:59 AM: - NODE_VERSION
10:42:59 AM: - NPM_TOKEN
10:42:59 AM: - SECRETS_SCAN_ENABLED
10:42:59 AM: - SENTRY_DSN
10:42:59 AM: - TEST_USER_EMAIL
10:42:59 AM: - TEST_USER_PASSWORD
10:42:59 AM: - NPM_VERSION
10:42:59 AM: - NPM_FLAGS
10:42:59 AM: - NPM_CONFIG_USERCONFIG
10:42:59 AM: publish: /opt/build/repo/public
10:42:59 AM: publishOrigin: config
10:42:59 AM: plugins:
10:42:59 AM: - inputs: {}
10:42:59 AM: origin: ui
10:42:59 AM: package: "@netlify/plugin-gatsby"
10:42:59 AM: Build failed due to a user error: Build script returned non-zero exit code: 2
10:42:59 AM: Failing build: Failed to build site
10:43:00 AM: Finished processing build request in 53.701s
Any ideas as to what is causing noble-new-builds images to fail? Any workarounds or suggestions?
Thank you,
Justin