Last updated on 12th June 2026

Configure custom build environments

By default, builds will run using the latest supported versions of our main tools - Ruby, PHP, Java, Node, Python, Go, .NET, and Composer. However, if you have a project that requires a specific version of one of those tools, you can create your own custom build environment.

Configuring language versions

Head to Build Configuration within your project's Build Pipeline, then update any of the main tools at the top of the screen, to use one of the versions provided.

Language versions

Once you've done so, future builds in that project will always use those versions of the tools.

Build environment

PHP and Composer versions

PHP and Composer are configured independently in Build Configuration:

  • PHP -- pick the major/minor version you need (7.0 through 8.5). The container is shipped with the latest patch release for that version (see the API language versions reference for the exact patch number currently bundled).
  • Composer -- pick Composer 1.x or 2.x. The selected Composer binary runs against the PHP version you've configured for the project, so composer install in your build pipeline will automatically use the right PHP.

You don't need to install Composer yourself in your build commands -- it's available on $PATH once Build Configuration is saved. If you need an exact Composer patch version that isn't in the dropdown, you can still install it from your build command, for example:

# Download the installer and verify it against Composer's official signature
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
EXPECTED_HASH="$(php -r 'copy(\"https://composer.github.io/installer.sig\", \"php://stdout\");')"
ACTUAL_HASH="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
if [ "$EXPECTED_HASH" != "$ACTUAL_HASH" ]; then
  echo "ERROR: Invalid Composer installer signature"
  rm composer-setup.php
  exit 1
fi

php composer-setup.php --install-dir=. --filename=composer --version=2.8.8
php -r "unlink('composer-setup.php');"

./composer install --no-dev --optimize-autoloader

Node.js versions

Node 14.21.3 and above ship bun and pnpm alongside npm and yarn. NVM (Node Version Manager) 0.40.3 is also available if you need a Node.js version outside the Build Configuration dropdown -- see the .nvmrc guide for how to pin Node versions per-project.

.NET versions

Seven .NET SDK series are available (3.1 through 10.0). If your repo ships a global.json at the root, DeployHQ reads sdk.version from it and selects the matching series automatically -- so you can pin from your repository instead of from the Build Configuration UI. See Building .NET applications for the full version list, resolution order, and global.json behavior.

Programmatic configuration

If you manage many projects from templates, you can also update language versions via the DeployHQ API.