Home
Support Forums

Please read! End of support for Trusty build image: Everything you need to know

On September 19, 2021, Netlify will be fully removing support for the Ubuntu 14.04 (Trusty) build image. Trusty has been End of Life since April 25, 2019, which means it hasn’t received security or maintenance updates since then.

Builds on Trusty make up a very small percentage of total Netlify builds but we know this is a significant change so we’re giving you plenty of time to migrate.

How do I know if my site is using Trusty?

If you’re not sure whether you’re using Trusty, you can check in two places:

  1. Your deploy logs. In the first few lines, check for the words, build image tag. The current tag for the Trusty image is v2.8.2. If your tag is v3 or higher, no further action is needed.
  2. Your site settings. Go to Site settings > Build & deploy > Continuous Deployment > Build image selection.

What’s different about the new build image?

In May, we released a new build image based on Ubuntu 20.04 (Focal). In addition to a newer version of Ubuntu Linux, it includes some version updates to included language and software dependencies. Some dependency versions that were included in the Trusty image are not included in the Focal image. This may cause issues for sites that relied on those versions.

What will happen if I don’t update my site’s build image?

After September 19, any new builds using the Trusty build image will fail. We will continue to serve traffic to your existing site, and you will still be able to deploy manually via Netlify CLI, but you will not be able to run new builds of your site on Netlify until you update to a newer build image.

How do I update my build image?

You can select a different build image in the Netlify UI under Site settings > Build & deploy > Continuous Deployment > Build image selection. Before making this change to a critical or production site, we recommend running a test build first.

How can I run a test build with the new image?

One way to run a test build is through the Netlify UI:

  1. From your site’s Deploys page, select the current published deploy (usually the most recent production deploy).

  2. At the top of the deploy’s log page, click the button, Lock publishing to this deploy. With deploys locked, you can run new deploys without changing your published site.

  3. Click the Deploy settings button, scroll down to Build image selection, and select a newer build image. We strongly recommend Focal since it has the latest software. The Xenial image will be deprecated later this year.

  4. Go back to your Deploys page and click the Trigger deploy button.

  5. The new deploy will start building. If it succeeds, click Preview deploy to visit that version of your site. If the site is working normally, you’re set! Go back to your Deploys page and click Start auto-publishing to keep builds running normally, now with their fancy new build image. :sparkles:

  6. If the deploy fails or the site isn’t working properly, you will need to do some troubleshooting. If you don’t have time to do that now, you can switch back to the Trusty image and Start auto-publishing again. You can repeat the steps above when you’re ready to troubleshoot, or create a new site for testing that’s linked to the same repository. Here’s how:

    1. Create a brand new site by clicking the New site from Git button on your team dashboard. Be sure to link to the same repository that you use for your existing site!
    2. Once you’ve created your new site, go to Site settings > Build & deploy > Continuous Deployment > Build image selection and select the new build image.
    3. Trigger a deploy to test the new build image.

How can I make my site work with the new image?

Generally speaking, a change in available language or software dependency versions is the cause of the error. This could be a version you set yourself, or one that was set for you by default when the site was first created. Here are some general steps for troubleshooting:

  1. Check for error messages in the deploy log. They will often indicate which language or software dependency is causing the problem.

  2. Check the Focal image included software list to find which versions are available for the dependency that is causing your issue.

  3. Try setting the dependency to use an included version. Refer to the docs on managing dependencies to learn how to do this.

    Note: if the dependency version was not explicitly set by you, then it’s set to a version selected by default when you created your site. You can “reset” this default version selection by re-linking your site repository. Go to Site settings > Build & deploy > Build settings , select Link to a different repository , and then select the same repository and build settings.

  4. Run a new test build to see if it works.

  5. If it doesn’t work, and you’ve tried all available versions on the new image, you may have the option to specify a version that isn’t pre-installed on the image. Dependencies with this option are labeled in the included software list with “Any version” as one of the version options.

  6. For dependencies that don’t offer an option to download any version, such as Python and PHP, you will need to update your site code to work with a version available on the new image. You can search for migration guides for the dependency version to help you identify necessary changes.

If you get through these steps and you’re still stuck, or if you have any other questions along the way, let us know!

4 Likes

Hi, sorry, I got a message via email saying " [Netlify] Action required to prevent build failure: Site(s) using a deprecated build image".

I’m not a developer and do not find useful the information to do the required action that you mention to prevent a faliure.

I enter to the UI location mentioned:

But I don’t have “Git repository”, to publish the sites I just upload a zip file with the files of the static site. It always work perfect.

What should I do now?

Thanks.

1 Like

Hey @malawal745,
If you deploy manually or by uploading a zip file, there are no changes needed and you’re all set. Sorry for the confusion here!

3 Likes

Oh, ok, thanks. I guess should be considered my case in the communication (or not let me know at all).

Hope can help to let you know that are users like me, and may be confused too.

Thanks.

3 Likes

I also got this warning email for one of my sites on Netlify. All my sites are served from GitHub and I have never heard of Trusty and certainly never used it.

How are you determining who gets one of these emails? Seems like you are way off the mark.

Hey @ozfiddler,
Your site is built with the Trusty build image and you will need to upgrade before September 19. You can check it out here (hopefully also have the site linked in the email we sent!) https://app.netlify.com/sites/peachtreecabin-com-au/settings/deploys#build-image-selection

Hi Jen, So this is something that was automatically selected for me when I set up the site? I have never heard of Trusty, Xenial or Focal. I have no idea what they are or what they do. OK, I’ll change it over.

1 Like

Yup, that’s correct! Trusty was the default build image for several years so it was selected for you when you built your site. We try to balance picking smart defaults for you so you don’t have to think about them with also giving you control over how you build. In this case, a default that we picked years ago needs to be upgraded so you unfortunately do have to think about it. But we’ve tried to make the switch as straightforward as possible!

Many thanks for your understanding, and remember that 1) we’re around if there are questions and 2) you have until September to make the change.

1 Like

It probably would have been good to start the advisory email with this statement. My first reaction was “This doesn’t apply to me. There must be some mistake”.

OK… now updated. Only took a minute.

I tried updating to a newer image and noticed that Ubuntu’s 2020 LTS version is still marked as beta by Netlify. If I want a stable version, I have to select the 5-year-old LTS version from 2016. How come support for the LTS version that has been out for over a year isn’t stable yet?

Is posting stack traces kosher/in-scope for this thread?

8:53:41 PM: Build ready to start
8:53:43 PM: build-image version: 3802cb5fb68688f5cbd80f2e312aa0ce78813b3a
8:53:43 PM: build-image tag: v4.0.4
8:53:43 PM: buildbot version: 487f6d01b44481b4d57253f3d6071f198697110f
8:53:43 PM: Fetching cached dependencies
8:53:43 PM: Failed to fetch cache, continuing with build
8:53:43 PM: Starting to prepare the repo for build
8:53:43 PM: No cached dependencies found. Cloning fresh repo
8:53:43 PM: git clone https://github.com/StevenTammen/steventammen.com
8:54:05 PM: Preparing Git Reference refs/heads/master
8:54:07 PM: Parsing package.json dependencies
8:54:07 PM: Starting build script
8:54:07 PM: Installing dependencies
8:54:07 PM: Python version set to 2.7
8:54:08 PM: Downloading and installing node v8.17.0...
8:54:09 PM: Downloading https://nodejs.org/dist/v8.17.0/node-v8.17.0-linux-x64.tar.xz...
8:54:09 PM: Computing checksum with sha256sum
8:54:09 PM: Checksums matched!
8:54:11 PM: Now using node v8.17.0 (npm v6.13.4)
8:54:11 PM: Started restoring cached build plugins
8:54:11 PM: Finished restoring cached build plugins
8:54:11 PM: Attempting ruby version 2.3.6, read from environment
8:54:12 PM: Required ruby-2.3.6 is not installed - installing.
8:54:13 PM: Searching for binary rubies, this might take some time.
8:54:13 PM: Found remote file https://rvm_io.global.ssl.fastly.net/binaries/ubuntu/20.04/x86_64/ruby-2.3.6.tar.bz2
8:54:13 PM: Checking requirements for ubuntu.
8:54:13 PM: Missing required packages: libssl1.0-dev
8:54:13 PM: RVM autolibs is now configured with mode '2' =>
8:54:13 PM:   'Allow RVM to use package manager if found, fail if dependencies are missing. This is default.',
8:54:13 PM: please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
8:54:13 PM: or visit https://rvm.io/rvm/autolibs for more information.
8:54:13 PM: Found undesired packages: libssl-dev
8:54:13 PM: RVM autolibs is now configured with mode '2' =>
8:54:13 PM:   'Allow RVM to use package manager if found, fail if dependencies are missing. This is default.',
8:54:13 PM: please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
8:54:13 PM: or visit https://rvm.io/rvm/autolibs for more information.
8:54:13 PM: Requirements installation failed with status: 1.
8:54:13 PM: ruby-2.3.6 - #gemset created /opt/buildhome/.rvm/gems/ruby-2.3.6
8:54:13 PM: Required ruby-2.3.6 is not installed - installing.
8:54:14 PM: Searching for binary rubies, this might take some time.
8:54:14 PM: Found remote file https://rvm_io.global.ssl.fastly.net/binaries/ubuntu/20.04/x86_64/ruby-2.3.6.tar.bz2
8:54:14 PM: Checking requirements for ubuntu.
8:54:15 PM: Missing required packages: libssl1.0-dev
8:54:15 PM: RVM autolibs is now configured with mode '2' =>
8:54:15 PM:   'Allow RVM to use package manager if found, fail if dependencies are missing. This is default.',
8:54:15 PM: please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
8:54:15 PM: or visit https://rvm.io/rvm/autolibs for more information.
8:54:15 PM: Found undesired packages: libssl-dev
8:54:15 PM: RVM autolibs is now configured with mode '2' =>
8:54:15 PM:   'Allow RVM to use package manager if found, fail if dependencies are missing. This is default.',
8:54:15 PM: please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
8:54:15 PM: or visit https://rvm.io/rvm/autolibs for more information.
8:54:15 PM: Requirements installation failed with status: 1.
8:54:15 PM: ruby-2.3.6 - #importing gemsetfile /opt/buildhome/.rvm/gemsets/default.gems evaluated to empty gem list
8:54:15 PM: ruby-2.3.6 - #generating default wrappers.................
8:54:15 PM: Error running 'run_gem_wrappers regenerate',
8:54:15 PM: please read /opt/buildhome/.rvm/log/1625964855_ruby-2.3.6/gemset.wrappers.default.log
8:54:15 PM: Using /opt/buildhome/.rvm/gems/ruby-2.3.6
8:54:15 PM: Warning! Executable 'ruby' missing, something went wrong with this ruby installation!
8:54:15 PM: Warning! Executable 'gem' missing, something went wrong with this ruby installation!
8:54:15 PM: Warning! Executable 'irb' missing, something went wrong with this ruby installation!
8:54:15 PM: Using ruby version 2.3.6
8:54:15 PM: /opt/buildhome/.rvm/scripts/override_gem: line 19: gem: command not found
8:54:15 PM: Error installing bundler
8:54:15 PM: Build was terminated: Build script returned non-zero exit code: 1
8:54:15 PM: Creating deploy upload records
8:54:15 PM: Failing build: Failed to build site
8:54:15 PM: Failed during stage 'building site': Build script returned non-zero exit code: 1
8:54:15 PM: Finished processing build request in 32.232637292s

I host a couple sites on Netlify, built with Hugo. Unfortunately, breaking changes in Hugo have led to me building with a very old Hugo version (0.52). I’ve been putting off doing the upgrade since I’m going to have to go track down a bunch of deprecated code in my theme and update it manually.

Here’s what my netlify.toml file looks like:

[build]
publish = "public"
command = "hugo"

[context.production.environment]
HUGO_VERSION = "0.52"
HUGO_ENV = "production"
HUGO_ENABLEGITINFO = "true"

Anyhow, I tried bumping to Focal and got the above. To be perfectly honest, all the CI build stuff has basically been black magic voodoo to me as I’ve never had to worry about it before. I skimmed the trace and see that node/npm and ruby are being installed.

If my site is being built with a Hugo binary file, why are these things even being installed for the build?

I’m experiencing a very similar issue to @StevenTammen, not sure how to go about fixing it. Will be following along closely.

My site builds on Xenial. The stack trace for that one:

9:11:45 PM: Build ready to start
9:11:47 PM: build-image version: 2cee85eb7f808bf3b6e87378c5307f9411f0a332
9:11:47 PM: build-image tag: v3.8.0
9:11:47 PM: buildbot version: 487f6d01b44481b4d57253f3d6071f198697110f
9:11:47 PM: Building without cache
9:11:47 PM: Starting to prepare the repo for build
9:11:48 PM: No cached dependencies found. Cloning fresh repo
9:11:48 PM: git clone https://github.com/StevenTammen/steventammen.com
9:12:10 PM: Preparing Git Reference refs/heads/master
9:12:13 PM: Parsing package.json dependencies
9:12:14 PM: Starting build script
9:12:14 PM: Installing dependencies
9:12:14 PM: Python version set to 2.7
9:12:15 PM: Downloading and installing node v8.17.0...
9:12:15 PM: Downloading https://nodejs.org/dist/v8.17.0/node-v8.17.0-linux-x64.tar.xz...
9:12:16 PM: Computing checksum with sha256sum
9:12:16 PM: Checksums matched!
9:12:18 PM: Now using node v8.17.0 (npm v6.13.4)
9:12:18 PM: Started restoring cached build plugins
9:12:18 PM: Finished restoring cached build plugins
9:12:19 PM: Attempting ruby version 2.3.6, read from environment
9:12:20 PM: Required ruby-2.3.6 is not installed - installing.
9:12:20 PM: Searching for binary rubies, this might take some time.
9:12:20 PM: Found remote file https://rvm_io.global.ssl.fastly.net/binaries/ubuntu/16.04/x86_64/ruby-2.3.6.tar.bz2
9:12:20 PM: Checking requirements for ubuntu.
9:12:21 PM: Requirements installation successful.
9:12:21 PM: ruby-2.3.6 - #configure
9:12:21 PM: ruby-2.3.6 - #download
9:12:23 PM: ruby-2.3.6 - #validate archive
9:12:33 PM: ruby-2.3.6 - #extract
9:12:39 PM: ruby-2.3.6 - #validate binary
9:12:40 PM: ruby-2.3.6 - #setup
9:12:40 PM: ruby-2.3.6 - #gemset created /opt/buildhome/.rvm/gems/ruby-2.3.6@global
9:12:42 PM: ruby-2.3.6 - #importing gemset /opt/buildhome/.rvm/gemsets/global.gems............................................................
9:12:43 PM: ruby-2.3.6 - #generating global wrappers........
9:12:43 PM: ruby-2.3.6 - #gemset created /opt/buildhome/.rvm/gems/ruby-2.3.6
9:12:43 PM: ruby-2.3.6 - #importing gemsetfile /opt/buildhome/.rvm/gemsets/default.gems evaluated to empty gem list
9:12:44 PM: ruby-2.3.6 - #generating default wrappers........
9:12:44 PM: Using /opt/buildhome/.rvm/gems/ruby-2.3.6
9:12:44 PM: Using ruby version 2.3.6
9:12:45 PM: Using PHP version 5.6
9:12:45 PM: Installing Hugo 0.52
9:12:46 PM: Hugo Static Site Generator v0.52/extended linux/amd64 BuildDate: 2018-11-28T15:01:21Z
9:12:46 PM: Started restoring cached go cache
9:12:46 PM: Finished restoring cached go cache
9:12:46 PM: Installing Go version 1.10
9:12:53 PM: unset GOOS;
9:12:53 PM: unset GOARCH;
9:12:53 PM: export GOROOT='/opt/buildhome/.gimme_cache/versions/go1.10.linux.amd64';
9:12:53 PM: export PATH="/opt/buildhome/.gimme_cache/versions/go1.10.linux.amd64/bin:${PATH}";
9:12:53 PM: go version >&2;
9:12:53 PM: export GIMME_ENV="/opt/buildhome/.gimme_cache/env/go1.10.linux.amd64.env"
9:12:53 PM: go version go1.10 linux/amd64
9:12:53 PM: Installing missing commands
9:12:53 PM: Verify run directory
9:12:54 PM: ​
9:12:54 PM: ────────────────────────────────────────────────────────────────
9:12:54 PM:   Netlify Build                                                 
9:12:54 PM: ────────────────────────────────────────────────────────────────
9:12:54 PM: ​
9:12:54 PM: ❯ Version
9:12:54 PM:   @netlify/build 15.11.0
9:12:54 PM: ​
9:12:54 PM: ❯ Flags
9:12:54 PM:   deployId: 60ea455186b2dee20ef264ee
9:12:54 PM: ​
9:12:54 PM: ❯ Current directory
9:12:54 PM:   /opt/build/repo
9:12:54 PM: ​
9:12:54 PM: ❯ Config file
9:12:54 PM:   /opt/build/repo/netlify.toml
9:12:54 PM: ​
9:12:54 PM: ❯ Context
9:12:54 PM:   production
9:12:54 PM: ​
9:12:54 PM: ────────────────────────────────────────────────────────────────
9:12:54 PM:   1. build.command from netlify.toml                            
9:12:54 PM: ────────────────────────────────────────────────────────────────
9:12:54 PM: ​
9:12:54 PM: $ hugo
9:12:58 PM: Building sites … WARNING: Page's .Prev is deprecated and will be removed in a future release. Use .NextPage (yes, not .PrevPage).
WARNING: Page's .Next is deprecated and will be removed in a future release. Use .PrevPage (yes, not .NextPage).
9:12:58 PM:                    | EN
9:12:58 PM: +------------------+-----+
9:12:58 PM:   Pages            | 188
9:12:58 PM:   Paginator pages  |   0
9:12:58 PM:   Non-page files   |   0
9:12:58 PM:   Static files     | 276
9:12:58 PM:   Processed images |   0
9:12:58 PM:   Aliases          |   0
9:12:58 PM:   Sitemaps         |   1
9:12:58 PM:   Cleaned          |   0
9:12:58 PM: Total in 3060 ms
9:12:58 PM: ​
9:12:58 PM: (build.command completed in 3.8s)
9:12:58 PM: ​
9:12:58 PM: ────────────────────────────────────────────────────────────────
9:12:58 PM:   2. Deploy site                                                
9:12:58 PM: ────────────────────────────────────────────────────────────────
9:12:58 PM: ​
9:12:58 PM: Starting to deploy site from 'public'
9:13:00 PM: Creating deploy tree 
9:13:00 PM: Creating deploy upload records
9:13:00 PM: 0 new files to upload
9:13:00 PM: 0 new functions to upload
9:13:00 PM: Site deploy was successfully initiated
9:13:00 PM: ​
9:13:00 PM: (Deploy site completed in 2.1s)
9:13:00 PM: ​
9:13:00 PM: ────────────────────────────────────────────────────────────────
9:13:00 PM:   Netlify Build Complete                                        
9:13:00 PM: ────────────────────────────────────────────────────────────────
9:13:00 PM: ​
9:13:00 PM: (Netlify Build completed in 6s)
9:13:01 PM: Caching artifacts
9:13:01 PM: Started saving build plugins
9:13:01 PM: Finished saving build plugins
9:13:01 PM: Started saving pip cache
9:13:01 PM: Finished saving pip cache
9:13:01 PM: Started saving emacs cask dependencies
9:13:01 PM: Finished saving emacs cask dependencies
9:13:01 PM: Started saving maven dependencies
9:13:01 PM: Finished saving maven dependencies
9:13:01 PM: Started saving boot dependencies
9:13:01 PM: Finished saving boot dependencies
9:13:01 PM: Started saving rust rustup cache
9:13:01 PM: Finished saving rust rustup cache
9:13:01 PM: Starting post processing
9:13:01 PM: Started saving go dependencies
9:13:01 PM: Post processing - HTML
9:13:02 PM: Finished saving go dependencies
9:13:06 PM: Cached ruby version 2.3.6
9:13:06 PM: Build script success
9:13:20 PM: Post processing - header rules
9:13:20 PM: Post processing - redirect rules
9:13:21 PM: Post processing done
9:13:21 PM: Site is live ✨

Are ruby and PHP dependencies for Hugo? We have these lines next to each other:

9:12:44 PM: Using ruby version 2.3.6
9:12:45 PM: Using PHP version 5.6
9:12:45 PM: Installing Hugo 0.52

Dunno if I’m being any help here. If I’m understanding the trace correctly, the problem package seems to be ruby 2.3.6.

I’m going to bump my sites to Xenial for now, but would like to setup the more modern image, if for no other reason to save myself from having to do this again later.

Help appreciated!

1 Like

Nice, Xenial is all good!

I have more than a dozen sites using the depracated Ubuntu 14 image. All of them are test sites, none are critical production.

Is there a way in which I can bulk upgrade them to the latest recommended image?

TIA, Anish

hello! the link that you have posted foes not work for me sadly. i have followed the instructions of this form as well as clicked the links in the email telling me to change the image. the last time i changed my website was in 2018 if that helps any. thanks

I ran into the same issue as @StevenTammen. Switching to the 16.04 image worked.

This part of the log in particular looks a bit weird:

7:15:17 PM: Required ruby-2.3.6 is not installed - installing.
7:15:17 PM: Searching for binary rubies, this might take some time.
7:15:17 PM: Found remote file https://rvm_io.global.ssl.fastly.net/binaries/ubuntu/20.04/x86_64/ruby-2.3.6.tar.bz2
7:15:17 PM: Checking requirements for ubuntu.
7:15:18 PM: Missing required packages: libssl1.0-dev
7:15:18 PM: RVM autolibs is now configured with mode '2' =>
7:15:18 PM:   'Allow RVM to use package manager if found, fail if dependencies are missing. This is default.',
7:15:18 PM: please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
7:15:18 PM: or visit https://rvm.io/rvm/autolibs for more information.
7:15:18 PM: Found undesired packages: libssl-dev
7:15:18 PM: RVM autolibs is now configured with mode '2' =>
7:15:18 PM:   'Allow RVM to use package manager if found, fail if dependencies are missing. This is default.',
7:15:18 PM: please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
7:15:18 PM: or visit https://rvm.io/rvm/autolibs for more information.
7:15:18 PM: Requirements installation failed with status: 1.

It seems to be erroring out because the OpenSSL 1.1.x headers are installed and it wants OpenSSL 1.0.x. It’s also trying to install Ruby 2.3.6, which is significantly older than the version that shipped in Ubuntu 20.04.

On a hunch, I tried updating my build config to add the following:

RUBY_VERSION = "2.7.0"

… which is the version of Ruby that shipped in 20.04. That seemed to get things building for me.

It seems a bit weird to have to configure a Ruby version when nothing in my site depends on Ruby. Perhaps the build script should default to a newer version of Ruby when using the 20.04 image?

1 Like

I can replicate. Adding ruby 2.7.0 to my build configuration also fixes the build errors for me and lets me run Focal. Huzzah.

[build]
publish = "public"
command = "hugo"

[context.production.environment]
RUBY_VERSION = "2.7.0"
HUGO_VERSION = "0.52"
HUGO_ENV = "production"
HUGO_ENABLEGITINFO = "true"

I’m just like you in wondering why in the world a ruby version dependency even matters for building a site that builds using a Hugo binary, but :man_shrugging:.

My experience now as a full-time software developer on tighter production schedules has led me to be much more accepting of not questioning things when they happen to work unexpectedly :rofl:.

3 Likes

I switch to Ubuntu Focal 20.04 (beta) for my build image
(NODE VERSION : 12.18.1 / YARN VERSION : 1.22.4)
and when i try to deply again, i have this :
what am i doing wrong ?

6:17:25 PM: Build ready to start
6:17:27 PM: build-image version: 3802cb5fb68688f5cbd80f2e312aa0ce78813b3a
6:17:27 PM: build-image tag: v4.0.4
6:17:27 PM: buildbot version: 487f6d01b44481b4d57253f3d6071f198697110f
6:17:27 PM: Fetching cached dependencies
6:17:27 PM: Failed to fetch cache, continuing with build
6:17:27 PM: Starting to prepare the repo for build
6:17:27 PM: No cached dependencies found. Cloning fresh repo
6:17:27 PM: git clone https://github.com/yvesvinckier/rode-island-2
6:17:28 PM: Preparing Git Reference refs/heads/master
6:17:29 PM: Parsing package.json dependencies
6:17:29 PM: Different publish path detected, going to use the one specified in the Netlify configuration file: 'public' versus 'public/' in the Netlify UI
6:17:30 PM: Starting build script
6:17:30 PM: Installing dependencies
6:17:30 PM: Python version set to 2.7
6:17:31 PM: Downloading and installing node v12.18.1...
6:17:31 PM: Downloading https://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xz...
6:17:31 PM: Computing checksum with sha256sum
6:17:31 PM: Checksums matched!
6:17:35 PM: Now using node v12.18.1 (npm v6.14.5)
6:17:35 PM: Started restoring cached build plugins
6:17:35 PM: Finished restoring cached build plugins
6:17:35 PM: Attempting ruby version 2.3.6, read from environment
6:17:36 PM: Required ruby-2.3.6 is not installed - installing.
6:17:37 PM: Searching for binary rubies, this might take some time.
6:17:37 PM: Found remote file https://rvm_io.global.ssl.fastly.net/binaries/ubuntu/20.04/x86_64/ruby-2.3.6.tar.bz2
6:17:37 PM: Checking requirements for ubuntu.
6:17:38 PM: Missing required packages: libssl1.0-dev
6:17:38 PM: RVM autolibs is now configured with mode '2' =>
6:17:38 PM:   'Allow RVM to use package manager if found, fail if dependencies are missing. This is default.',
6:17:38 PM: please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
6:17:38 PM: or visit https://rvm.io/rvm/autolibs for more information.
6:17:38 PM: Found undesired packages: libssl-dev
6:17:38 PM: RVM autolibs is now configured with mode '2' =>
6:17:38 PM:   'Allow RVM to use package manager if found, fail if dependencies are missing. This is default.',
6:17:38 PM: please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
6:17:38 PM: or visit https://rvm.io/rvm/autolibs for more information.
6:17:38 PM: Requirements installation failed with status: 1.
6:17:38 PM: ruby-2.3.6 - #gemset created /opt/buildhome/.rvm/gems/ruby-2.3.6
6:17:38 PM: Required ruby-2.3.6 is not installed - installing.
6:17:38 PM: Searching for binary rubies, this might take some time.
6:17:39 PM: Found remote file https://rvm_io.global.ssl.fastly.net/binaries/ubuntu/20.04/x86_64/ruby-2.3.6.tar.bz2
6:17:39 PM: Checking requirements for ubuntu.
6:17:39 PM: Missing required packages: libssl1.0-dev
6:17:39 PM: RVM autolibs is now configured with mode '2' =>
6:17:39 PM:   'Allow RVM to use package manager if found, fail if dependencies are missing. This is default.',
6:17:39 PM: please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
6:17:39 PM: or visit https://rvm.io/rvm/autolibs for more information.
6:17:39 PM: Found undesired packages: libssl-dev
6:17:39 PM: RVM autolibs is now configured with mode '2' =>
6:17:39 PM:   'Allow RVM to use package manager if found, fail if dependencies are missing. This is default.',
6:17:39 PM: please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
6:17:39 PM: or visit https://rvm.io/rvm/autolibs for more information.
6:17:39 PM: Requirements installation failed with status: 1.
6:17:40 PM: ruby-2.3.6 - #importing gemsetfile /opt/buildhome/.rvm/gemsets/default.gems evaluated to empty gem list
6:17:40 PM: ruby-2.3.6 - #generating default wrappers.................
6:17:40 PM: Error running 'run_gem_wrappers regenerate',
6:17:40 PM: please read /opt/buildhome/.rvm/log/1626020260_ruby-2.3.6/gemset.wrappers.default.log
6:17:40 PM: Using /opt/buildhome/.rvm/gems/ruby-2.3.6
6:17:40 PM: Warning! Executable 'ruby' missing, something went wrong with this ruby installation!
6:17:40 PM: Warning! Executable 'gem' missing, something went wrong with this ruby installation!
6:17:40 PM: Warning! Executable 'irb' missing, something went wrong with this ruby installation!
6:17:40 PM: Using ruby version 2.3.6
6:17:40 PM: /opt/buildhome/.rvm/scripts/override_gem: line 19: gem: command not found
6:17:40 PM: Error installing bundler
6:17:40 PM: Build was terminated: Build script returned non-zero exit code: 1
6:17:40 PM: Creating deploy upload records
6:17:40 PM: Failing build: Failed to build site
6:17:40 PM: Failed during stage 'building site': Build script returned non-zero exit code: 1
6:17:40 PM: Finished processing build request in 13.321461287s

I switch to Ubuntu Xenial 16.04 (default) for my build image
(NODE VERSION : 12.18.1 / YARN VERSION : 1.22.4)
and it work perfectly fine… I don’t know why it failled when i switch to Ubuntu Focal 20.04 (beta)