I'm also interested by such feature, there is my use case. 2 different organizations : Customer - Exploitation supplier. 2 Jenkins instance identical (ie: 2 masters but same infra) aim to continuously deploy on target environments (Dev, indus, Prod,etc.). The target deployment environments should be identical. Of course, the 2 organization don't have the same deployment process.
*Customer:* Deploy its app on its own environment thanks to Jenkins. Once it's good, the customer tag the app and the jenkins job to the SCM tool and communicate the tag name to the supplier *Exploitation:* Pick the tagged Jenkins job, customize it and deploy the application thanks to this job. An issue appears when the customer has to re-deliver an application and the job has been updated. The Exploitation has to re-start from scratch. *List of the exiting tools already considered:* The job config history plugin allows to make diff between the different version of a job. IMHO, it must use to trace the change than to do roll backs. The job import plugin: allows to copy jobs from an instance to another but it doesn't keep trace of the original job. The 2 jobs are totally independent. The SCM sync plugin: a config history++ it allows job versionnning and rollbacks. *Ideas*: *The easiest one *Do the merge by hand each time. *MDA approach* Inspired from the Model driven architecture. If define job archetype on all the instances (models) we should be able to apply a sort of transformation to swicth from an archetype to another? *Work by increment* Reconsider the concept of copied job. Instance of copy the whole config.xml into a new_config.xml, we can imagine to reference the original copied job and keep the increment. E.g: My_JOB_MVN3.xml = My_JOB_MVN3.xml + INCEREMENT.xml Instead of copying My_JOB_MVN3.xml we can image to have a repository of jobs, and the increment just store the delta. *Object oriented approach* The aim is to use inheritance for default values and override specific behaviors. What's your thoughts?
