Hi, @winstonma. This is done for the purpose of consistency. Each build image has a default version of various language runtimes (Node.js, Ruby, Python, etc.). If you don’t set a value manually, two things occur:
- The default version is used.
- That version becomes “pinned” behind the scenes.
This is done so that if you change the build image, the build behavior stays the same because the same versions are used for the site build.
I mentioned because, if we do removed this pinned version for you, the version will be automatically pinned again the next time you build the site.
Note, our support team can manually change the pinned version. If you would like us to do that, would you please let us know what site it should be done for?
The only workarounds without the support team making the manual change are to either pin it yourself with an environment variable or to delete the site and recreate it (which will reset the pinned version but it will be pinned to the new version again). If you delete and recreate the site you will lose the deploy history and other site settings so that is a far from ideal workaround but it doesn’t require waiting on the support team.
To summarize, these versions are always pinned behind the scenes and our support team can reset the pinning for you if the workarounds above are not acceptable (which are pinning yourself or recreating the site).