View Custom Tools on the plugin site for more information.
A job will often require a tool not already installed on your slave machines. In large Jenkins environments, this often results in waiting on an administrator. The goal of this plugin is to let users manage their own tools, without requiring this administrator involvement.
Using this plugin, you can define a script (or just a URL) for installing a tool. You then define which jobs require the tool, and the plugin installs them as needed before the build runs.
Let's say that you have a build that needs NodeJS. The first step is to add the tool to the "Custom Tools" section in the global configuration. You could use a script, as follows. The "Exported paths" field lets you specify multiple directory patterns which will be added to the $PATH so that your build needn't know where the tool is actually installed.
Then, you just need to add the tool requirement to your job's Build Environment:
Then, you can just use the tool in your job, without having to know where it's installed. The plugin will install it as needed before your job runs, and make sure the $PATH is setup correctly:
Versioning of tools
Custom Tools plugin provides a support of versioning. Currently the plugins uses the functionality provided by Extended Choice Parameter plugin, but it's a subject for a change in the future. Extended Choice Parameter plugin allows to setup versions locally in the global configuration or to reference a property file with the version listing.
- If a tool has the versioning enabled, Custom Tools starts retrieving versions during the tool installation
- *Tool version* parameter is available. If it is not specified, the default version will be used
- Several tool installers support TOOL_VERSION variables (e.g. all installers from Extra Tool Installers Plugin), so you can
Version configuration example:
Version usage in Tool Installers:
Configuration of the Tool Version parameter:
Example of the build parameter dialog:
Wiki will be updated according to changes in 0.3 and 0.4 versions.
Ryan's vision: In the future, there will be a repository of tool installers hosted by the Jenkins community on GitHub, allowing people to share tool installation scripts.
Compared to Tool Environment Plugin the advantages are that you can define tools of arbitrary type more intuitively (otherwise you would need to make an e.g. "Ant installation" that is not in fact Ant at all but really NodeJS); and in the common case that your usage of the tool is just adding it to $PATH, it is a little easier to configure on the job side. In the future these plugins should be merged.
- Need more installers? See Extra Tool Installers Plugin
Version 0.6 (Oct 30, 2018)
- JENKINS-54154 - Fix passing of Tool Properties for custom tools when configured via Jenkins Configuration as Code plugin (installers, etc.)
Version 0.5 (Apr 08, 2017)
- Update the core baseline to 1.609.3 (last one with Java 6 support)
- Update plugin to the new plugin parent POM
- Cleanup FindBugs issues in the plugin
This is just a maintenance release, new features will be delivered later.
Version 0.4.4 (Oct 15, 2014)
- Properly escape special symbols in Additional vars coming from substituted variables (JENKINS-24113)
Version 0.4.3 (Oct 09, 2014)
- Be robust against null multi-configuration options after plugin upgrades (JENKINS-24853)
- Respect slave platform while constructing environment variables (JENKINS-14515)
Version 0.4.2 (06/29/2014)
- Support of tool version parameters in CLI build commands (JENKINS-22923)
- Reduce the size of the configuration page by adding the Advanced section (JENKINS-20909)
- Return non-null default values for CLI to workaround JENKINS-15094 in Jenkins core (JENKINS-22925)
- Throw errors if the configured tool cannot be found (JENKINS-18814)
- Properly handle missing tools in the Install wrapper to avoid NPEs (JENKINS-22075)
Version 0.4.1 (11/25/2013)
- Fixed behavior of "Additional variables" field (JENKINS-19889)
- Prevented overriding of PATH variable inside nested launchers (JENKINS-20560)
- Prevented NPE inside nested launchers due to JENKINS-20559 in Jenkins core (JENKINS-19506)
Version 0.4 (09/08/2013)
- Support of versions (job parameter + configuration). Thanks to authors of Extended Choice Parameter plugin
- Fixed "Exported variables" (textbox -> textarea)
Version 0.3 (08/02/2013)
- Change of ownership. New owner: Oleg Nenashev, Synopsys Inc., www.synopsys.com
- New features:
- JENKINS-18774 - New option: Setup of label-specific environment variables (useful for LD_LIBRARY_PATH, etc.)
- JENKINS-18707 - New option: Skip installation of tool at MatrixBuild's master job
- JENKINS-17844 - Improvement: Environment Variables expansion in ExportedPaths and ToolHome
- Partial replacement of the Tool Environment Plugin. Custom Tools can export HOME variables in different cases (ex, Tool_HOME and TOOL_HOME)
- Bug fixes:
- JENKINS-18815 - Home variables substitution doesn't work properly in case of leading variable
- JENKINS-18481 - BuildWrapper throws NPE if user doesn't select any tool
- JENKINS-14515 - Malformed path variable in case of different operating systems at master and slave
- JENKINS-13285 - customtools-plugin does not delegate the Launcher.isUnix() call in DecoratedLauncher