All Projects → jenkinsci → config-driven-pipeline-plugin

jenkinsci / config-driven-pipeline-plugin

Licence: MIT license
Reuse Jenkinsfiles across repositories and hydrate commands and settings with config from each repository

Programming Languages

java
68154 projects - #9 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to config-driven-pipeline-plugin

jenkins pipeline
A lean Continuous Deployment, Testing and Integration Pipeline using CoreOS/Docker/Jenkins
Stars: ✭ 44 (+91.3%)
Mutual labels:  jenkins-pipeline
jenny
Command line Jenkinsfile runner written in groovy. Does not need a Jenkins installation to run the Jenkinsfile.
Stars: ✭ 90 (+291.3%)
Mutual labels:  jenkins-pipeline
jenkins-pipeline
Jenkins Pipeline Shared Library
Stars: ✭ 16 (-30.43%)
Mutual labels:  jenkins-pipeline
pipeline-lib
Global shared library for Glia pipeline jobs
Stars: ✭ 68 (+195.65%)
Mutual labels:  jenkins-pipeline
plot-plugin
Jenkins plot plugin
Stars: ✭ 54 (+134.78%)
Mutual labels:  jenkins-pipeline
jenkins-k8sagent-lib
Jenkins Shared Library to get dynamic agent from Kubernetes cloud
Stars: ✭ 35 (+52.17%)
Mutual labels:  jenkins-pipeline
fire-cloud
基于Spring Cloud的微服务业务框架
Stars: ✭ 16 (-30.43%)
Mutual labels:  jenkins-pipeline
Jenkins-Pipeline-Utils
Global Jenkins Pipeline Library with common utilities.
Stars: ✭ 36 (+56.52%)
Mutual labels:  jenkins-pipeline
Efqrcode
A better way to operate QR Code in Swift, support iOS, macOS, watchOS and tvOS.
Stars: ✭ 4,121 (+17817.39%)
Mutual labels:  recognizer
pipeline-as-yaml-plugin
Jenkins Pipeline As Yaml Plugin
Stars: ✭ 111 (+382.61%)
Mutual labels:  jenkins-pipeline
jenkinz
JenkinZero (jenkinz) is a zero configuration Jenkinsfile validation tool.
Stars: ✭ 13 (-43.48%)
Mutual labels:  jenkins-pipeline
movie-db-java-on-azure
Sample movie database app built using Java on Azure
Stars: ✭ 28 (+21.74%)
Mutual labels:  jenkins-pipeline
openshift-wiki
Gitbook URL of WIKI
Stars: ✭ 16 (-30.43%)
Mutual labels:  jenkins-pipeline
jenkinsfile cookbook pipeline
Example Jenkinsfile and Explaination for Chef Cookbook Development
Stars: ✭ 36 (+56.52%)
Mutual labels:  jenkins-pipeline
learn-ansible-and-jenkins-in-30-days
Ansible + Jenkins in 30 days tutorial.
Stars: ✭ 35 (+52.17%)
Mutual labels:  jenkins-pipeline
pipeline-maven-plugin
Pipeline Maven Plugin
Stars: ✭ 50 (+117.39%)
Mutual labels:  jenkins-pipeline
eryajf.github.io
📝 大千世界,何其茫茫。谨此笔记,记录过往。凭君阅览,小站洛荒。如能收益,莫大奢望
Stars: ✭ 159 (+591.3%)
Mutual labels:  jenkins-pipeline
jenkins-pipeline-global-library-chefci
Jenkins Pipeline's "Workflow Global Libs" for Chef CI
Stars: ✭ 60 (+160.87%)
Mutual labels:  jenkins-pipeline
jenkins-pipeline-shared-library-template
Project template for developing shared Jenkins pipeline libraries.
Stars: ✭ 46 (+100%)
Mutual labels:  jenkins-pipeline
pipeline-github-plugin
Pipeline: GitHub
Stars: ✭ 151 (+556.52%)
Mutual labels:  jenkins-pipeline

Config-Driven Pipeline Plugin

License Jenkins Plugin GitHub release Jenkins Plugin Installs

Purpose

Would you like to share Jenkinsfile without copy-pasting in git (or other SCMs) but would also like to be able to have some variance in your Jenkinsfile (e.g. configuration values such as email address, different unit test scripts, etc...)?

If so, this is the main driver of this plugin. We desired a central git-driven repository of trusted Jenkinsfile templates which are inherently visible, can be contributed to, but also allow us the ability to centrally roll out updates and improvements to hundreds of pipelines at a time.

This plugin will select a Jenkinsfile based on config in the repository. What this means is that you can configure a whole GitHub Organization to use a Jenkinsfile repository and different repos can run different Jenkinsfiles in the central Jenkinsfile repo based on versioned configuration in the repo (no messing around with job configuration and it's all under version control). You simply point your pipeline_template to the path in the repo. This means you can switch between templates for different branches and test out new templates in PRs without having to muck around with job config.

Setup

This plugin provides you with a new Project Recognizer that you can use with any Multibranch Pipeline type such as a GitHub Organization or Multibranch Pipeline.

Config-Driven Pipeline Project Recognizer

You'll simply set the Config File Path to a location where you expect the config file to reside in the repositories (traditionally at the root of the repo).

pipeline_template

The pipeline_template configuration key is reserved for finding the Jenkinsfile template you'd like to use out of the centralized Jenkinsfile repo.

Config File Format - Most Any!

The plugin itself is only going to search for a pipeline_template key/value in your Yaml, JSON, Java property file (and likely some others). This logic is in the ConfigurationValueFinder and we'd be happy to entertain additions to expand compatibility. We recommend using the Pipeline Utility Steps Plugin to parse your config but you're free to implement and validate this however you'd like in your Jenkinsfile templates.

Config File Contents Available for Parsing!

The plugin places the contents of the config file in the PIPELINE_CONFIG environment variable so that you don't have to read the file again.

Why would I use this when I can use ${OTHER_SOLUTION}?

Shared Libraries

Shared libraries are fantastic and are a great way to be able to make your pipeline code testable. However, it was nice to compose overall stages declaratively in Jenkinsfile and simply let each repo pass in configurable values such as the unit test command, Docker container to run under, etc...

Buildpacks

Buildpacks are also awesome! However, sometimes there aren't quite the right buildpacks for your needs (and you could also use them within this 😄).

Upcoming Additions To This Repo

  • Example project configured via Job DSL Plugin
  • More configuration information
  • Other shinies
  • FAQs?
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].