# ci Continues Integration is the process of building and testing code changes automatically, whenever a developer pushes changes to a code repository. Automated [GitHub workflows](/reference/code.md) compile code using a toolchain definition set in each respective workflow. Some scenarios may require non-default versions of a toolchain, which is supported using standard tools. ## Scala Scala projects may use [jenv](https://github.com/jenv/jenv) to manage a local JDK version that is different from the system version. This allows setting a specific JDK version per repository, managed in a `.java-version` file. ## Javascript NodeJS projects typically use [Volta](https://volta.sh/) to manage a local Node/NPM/Yarn version that is different from the system version. This allows setting a specific version per repository, managed in the `package.json` file.