{"id":15045218,"url":"https://github.com/jenkinsci/extra-tool-installers-plugin","last_synced_at":"2025-10-19T21:30:58.614Z","repository":{"id":9618013,"uuid":"11544390","full_name":"jenkinsci/extra-tool-installers-plugin","owner":"jenkinsci","description":"Provides additional generic tool installation methods","archived":false,"fork":false,"pushed_at":"2025-01-03T05:50:11.000Z","size":302,"stargazers_count":6,"open_issues_count":0,"forks_count":14,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-30T04:24:46.230Z","etag":null,"topics":["installation","java","jenkins","jenkins-plugin","plugin"],"latest_commit_sha":null,"homepage":"https://plugins.jenkins.io/extra-tool-installers/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"synopsys-arc-oss/extra-tool-installers-plugin","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jenkinsci.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-07-20T08:35:07.000Z","updated_at":"2025-01-03T05:50:15.000Z","dependencies_parsed_at":"2023-02-12T21:30:33.383Z","dependency_job_id":"822875f5-b2d9-4046-b115-34bf9c7c8e62","html_url":"https://github.com/jenkinsci/extra-tool-installers-plugin","commit_stats":{"total_commits":157,"total_committers":12,"mean_commits":"13.083333333333334","dds":0.7070063694267517,"last_synced_commit":"ea851b410344253b127e0a3e6577622ad1623484"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fextra-tool-installers-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fextra-tool-installers-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fextra-tool-installers-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fextra-tool-installers-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jenkinsci","download_url":"https://codeload.github.com/jenkinsci/extra-tool-installers-plugin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237215757,"owners_count":19273551,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["installation","java","jenkins","jenkins-plugin","plugin"],"created_at":"2024-09-24T20:51:36.042Z","updated_at":"2025-10-19T21:30:53.289Z","avatar_url":"https://github.com/jenkinsci.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Extra Tool Installers plugin for Jenkins\n\n[![Jenkins Plugin](https://img.shields.io/jenkins/plugin/v/extra-tool-installers.svg)](https://plugins.jenkins.io/extra-tool-installers)\n[![Coverage](https://ci.jenkins.io/job/Plugins/job/extra-tool-installers-plugin/job/main/badge/icon?status=${instructionCoverage}\u0026subject=coverage\u0026color=${colorInstructionCoverage})](https://ci.jenkins.io/job/Plugins/job/extra-tool-installers-plugin/job/main)\n[![LOC](https://ci.jenkins.io/job/Plugins/job/extra-tool-installers-plugin/job/main/badge/icon?job=test\u0026status=${lineOfCode}\u0026subject=line%20of%20code\u0026color=blue)](https://ci.jenkins.io/job/Plugins/job/extra-tool-installers-plugin/job/main)\n[![Jenkins Plugin Installs](https://img.shields.io/jenkins/plugin/i/extra-tool-installers.svg?color=blue)](https://plugins.jenkins.io/extra-tool-installers)\n[![Build Status](https://ci.jenkins.io/job/Plugins/job/extra-tool-installers-plugin/job/main/badge/icon)](https://ci.jenkins.io/job/Plugins/job/extra-tool-installers-plugin/job/main/)\n\n## Features\n\nPlugin provides following installers:\n\n* Batch command installer for Windows.\n  * This is functionally similar to the core code BatchCommandInstaller,\n    but this one performs variable substitution on the batch script before it is executed.\n  * Useful when you want your installation script to take node-specific variables into account.\n* Install from a specified folder  \n  * Setup without any actions. e.g. where the \"installation\" already exists.\n    * Useful when a tool is pre-installed on nodes matching a particular label expression\n* Skip or fail installation  \n  * Prints warnings during the installation and/or fails the installation\n    * Useful when a tool is not available on nodes matching a particular label expression\n* Download (with basic authentication) and extract a zip/tar.gz\n  * This is functionally similar to the core code\n    \"Extract .zip/.tar.gz\" installer,\n    but this supports HTTP Basic Authentication for the download.\n    * Useful when you need to download from servers that do not permit anonymous downloads.\n* Try any of ...\n  * Used to try (and possibly re-try) one or more nested installers until one succeeds.\n  * Useful when using\n    e.g.\n    Extract .zip/tar.gz\n    installers that are downloading from URLs which cannot be relied upon.\n* Check tool is already on PATH\n  * Does not install anything\n  * Fails if the specified executable is not on the agent's PATH already\n  * (Optionally) Fails if the executable is not an acceptable version.\n\n## Example usage\n\nThe following examples use the\n[Custom Tools](https://plugins.jenkins.io/custom-tools-plugin/)\nplugin to illustrate the new installation methods.\n\n### Linux-only\nThis example causes builds to fail if they require the \"Very useful Linux tool\" but are run on a node tagged with \"windows\".\nNodes tagged with \"linux\" put `${PATH_TO_THE_TOOL}` on the `$PATH` and `$LD_LIBRARY_PATH` before they continue on with the build.\n\n![](docs/images/ExtraInstaller_Stub.png)\n\n### Coping with unreliable servers\nThis example defines a tool with two possible sources from which it can be downloaded.\n\n1. Jenkins will start by attempting to download the tool from the first server, `https://some.unreliable.internal.server.com`,\ndone using an HTTP GET with basic authentication using the \"myUser\" credentials.\n1. If that fails, Jenkins will attempt that URL once more (2 times total, as specified by the last field) before moving on to the next installer, which will also be attempted up to 2 times etc.\n1. The whole set of installers will be looped through a total of 3 times (as specified by the last-but-one field) before giving up.\n\ni.e. up to 12 download attempts in total (aabbaabbaabb)\n\n![](docs/images/example-try-any-of.png)\n\n### Install Git on Windows machines\nThis example uses the Check tool is already on PATH option to ensure that Git is already present on unix \u0026 linux machines at version 2.18 or later, but installs Git on Windows machines.\n\nNote: Where an installation method for a Custom Tool definition (as shown earlier examples above) returns the directory containing the tool, the installation methods for a Git definition must return the location of the git client executable itself.\nThat's why this example specifies a \"Relative Path\" of \"git\" (and a \"Subdirectory of extracted archive\" of \"bin/git.exe\").\n\n![](docs/images/example-checkAlreadyOnPath.png)\n\n## JcasC\n\nPlugin can be configured using JCasC. Please find some example bellow.\n\nThey are using extra plugin [generic-tool](https://plugins.jenkins.io/generic-tool/) and [ansible](https://plugins.jenkins.io/ansible/)\n\n```\ntool:\n  maven:\n    installations:\n    - name: \"maven-3.9.4\"\n      properties:\n      - installSource:\n          installers:\n          - anyOf:\n              attemptsOfWholeList: 3\n              attemptsPerInstaller: 5\n              installers:\n                installers:\n                - authenticatedzip:\n                    label: \"linux\"\n                    subdir: \"apache-maven-3.9.5\"\n                    url: \"https://private.registry.company.org/maven/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz\"\n                    credentialsId: \"private-registry-credentials-id\"\n                - authenticatedzip:\n                    label: \"linux\"\n                    subdir: \"apache-maven-3.9.5\"\n                    url: \"https://archive.apache.org/dist/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz\"\n                - stubInstaller:\n                    failOnSubstitution: false\n                    failTheBuild: true\n                    label: \"!linux\"\n                    message: \"Unable to install on this node\"\n  generic:\n    installations:\n    - name: \"python3\"\n      properties:\n      - installSource:\n          installers:\n          - findonpath:\n              executableName: \"python3\"\n              label: \"built-in\"\n              versionCmd:\n              - \"python3 --version\"\n              versionCmdString: \"python3 --version\"\n              versionMax: \"3.12.0\"\n              versionMin: \"3.10.0\"\n              versionPatternString: \"Python (.*)\"\n\n  ansible:\n    installations:\n    - name: \"ansible\"\n      properties:\n      - installSource:\n          installers:\n          - sharedDirectoryInstaller:\n              failOnSubstitution: true\n              label: \"linux\"\n              toolHome: \"^${HOME}/.local/bin/ansible\"\n\n```\n\n## See also\n* [Software licence](LICENSE)\n* Support and [contribution guide](CONTRIBUTING.md)\n* [Version history](CHANGELOG.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenkinsci%2Fextra-tool-installers-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjenkinsci%2Fextra-tool-installers-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenkinsci%2Fextra-tool-installers-plugin/lists"}