{"id":14984797,"url":"https://github.com/jenkinsci/config-driven-pipeline-plugin","last_synced_at":"2025-07-12T11:12:38.665Z","repository":{"id":37256314,"uuid":"184116119","full_name":"jenkinsci/config-driven-pipeline-plugin","owner":"jenkinsci","description":"Reuse Jenkinsfiles across repositories and hydrate commands and settings with config from each repository","archived":false,"fork":false,"pushed_at":"2023-03-09T00:57:18.000Z","size":188,"stargazers_count":23,"open_issues_count":16,"forks_count":13,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-29T14:39:22.979Z","etag":null,"topics":["jenkins-pipeline","pipeline-template","recognizer"],"latest_commit_sha":null,"homepage":"https://plugins.jenkins.io/config-driven-pipeline/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jenkinsci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2019-04-29T17:41:22.000Z","updated_at":"2024-09-19T02:35:20.000Z","dependencies_parsed_at":"2024-10-07T10:21:23.174Z","dependency_job_id":"5d4a68d5-2c4b-4c79-be96-85d75da4749b","html_url":"https://github.com/jenkinsci/config-driven-pipeline-plugin","commit_stats":{"total_commits":86,"total_committers":4,"mean_commits":21.5,"dds":0.5348837209302326,"last_synced_commit":"62d19d6eddd45e6fc234eaba36ef8da17da190bb"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fconfig-driven-pipeline-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fconfig-driven-pipeline-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fconfig-driven-pipeline-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenkinsci%2Fconfig-driven-pipeline-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jenkinsci","download_url":"https://codeload.github.com/jenkinsci/config-driven-pipeline-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237117167,"owners_count":19258364,"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":["jenkins-pipeline","pipeline-template","recognizer"],"created_at":"2024-09-24T14:09:41.057Z","updated_at":"2025-02-04T12:32:15.738Z","avatar_url":"https://github.com/jenkinsci.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Config-Driven Pipeline Plugin\n[![License](https://img.shields.io/github/license/jenkinsci/config-driven-pipeline-plugin.svg)](LICENSE)\n[![Jenkins Plugin](https://img.shields.io/jenkins/plugin/v/config-driven-pipeline.svg)](https://plugins.jenkins.io/config-driven-pipeline)\n[![GitHub release](https://img.shields.io/github/release/jenkinsci/config-driven-pipeline-plugin.svg?label=changelog)](https://github.com/jenkinsci/config-driven-pipeline-plugin/releases/latest)\n[![Jenkins Plugin Installs](https://img.shields.io/jenkins/plugin/i/config-driven-pipeline.svg?color=blue)](https://plugins.jenkins.io/config-driven-pipeline)\n\n## Purpose\nWould you like to share `Jenkinsfile` without copy-pasting in git (or other SCMs) but\nwould also like to be able to have some variance in your `Jenkinsfile` (e.g. configuration \nvalues such as email address, different unit test scripts, etc...)?\n\nIf so, this is the main driver of this plugin. We desired a central git-driven repository\nof trusted `Jenkinsfile` templates which are inherently visible, can be contributed to, but \nalso allow us the ability to centrally roll out updates and improvements to hundreds of\npipelines at a time. \n\nThis plugin will select a Jenkinsfile based on config in the repository. What this means is \nthat you can configure a whole GitHub Organization to use a Jenkinsfile repository and \ndifferent repos can run different Jenkinsfiles in the central Jenkinsfile repo based on \nversioned configuration in the repo (no messing around with job configuration and it's all \nunder version control). You simply point your \n[pipeline_template](https://github.com/jenkinsci/config-driven-pipeline-plugin#pipeline_template) \nto the path in the repo. This means you can switch between templates for different branches \nand test out new templates in PRs without having to muck around with job config.\n\n## Setup\nThis plugin provides you with a new Project Recognizer that you can use with any \n[Multibranch Pipeline type](https://jenkins.io/doc/book/pipeline/multibranch/#creating-a-multibranch-pipeline)\nsuch as a GitHub Organization or Multibranch Pipeline. \n\n![Config-Driven Pipeline Project Recognizer](/images/config-driven-pipeline-project-recognizer.png)\n\nYou'll simply set the `Config File Path` to a location where you expect the config file to reside in \nthe repositories (traditionally at the root of the repo).\n\n### pipeline_template\nThe `pipeline_template` configuration key is reserved for finding the `Jenkinsfile` template you'd\nlike to use out of the centralized `Jenkinsfile` repo. \n\n### Config File Format - Most Any!\nThe plugin itself is only going to search for a `pipeline_template` key/value in your Yaml, JSON, \nJava property file (and likely some others). This logic is in the `ConfigurationValueFinder` and\nwe'd be happy to entertain additions to expand compatibility.  We recommend using the \n[Pipeline Utility Steps Plugin](https://plugins.jenkins.io/pipeline-utility-steps) to parse your\nconfig but you're free to implement and validate this however you'd like in your `Jenkinsfile` \ntemplates.\n\n## Config File Contents Available for Parsing!\nThe plugin places the contents of the config file in the `PIPELINE_CONFIG` environment variable so\nthat you don't have to read the file again.\n\n## Why would I use this when I can use ${OTHER_SOLUTION}?\n### Shared Libraries\n[Shared libraries](https://jenkins.io/doc/book/pipeline/shared-libraries/) are fantastic and\nare a great way to be able to make your pipeline code testable. However, it was nice to compose\noverall stages declaratively in Jenkinsfile and simply let each repo pass in configurable values\nsuch as the unit test command, Docker container to run under, etc...\n\n### Buildpacks\n[Buildpacks](https://buildpacks.io/) are also awesome! However, sometimes there aren't quite the\nright buildpacks for your needs (and you could also use them within this :smile:).\n\n## Upcoming Additions To This Repo\n* Example project configured via [Job DSL Plugin](https://plugins.jenkins.io/job-dsl)\n* More configuration information\n* Other shinies\n* FAQs?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenkinsci%2Fconfig-driven-pipeline-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjenkinsci%2Fconfig-driven-pipeline-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenkinsci%2Fconfig-driven-pipeline-plugin/lists"}