Artifact Promotion plugin for Jenkins Pipeline

Goal: Create a new highly anticipated engine for managing promotions in Jenkins Pipeline, with modern UIs and REST APIs

Status: Cancelled



The popular promoted-builds-plugin in Jenkins currently supports Freestyle/Abstract Projects but however is incompatible with the Pipeline structure. The existing plugin was developed before the introduction of pipelines which makes the current design archaic enough to not support the pipeline builds. Thus, this project aims at reviving Promotion into the pipelines by introducing a new plugin which includes major updates and redesigns done on a copy of the existing plugin(promoted-builds). The end result here would be a robust plugin which can run an on-demand promotion when the pipeline build is completed along with other artifact tracking and job triggering functions.

Sub-tasks to complete the project:

  1. Refactor the selected extension points (if possible) inside the promoted-builds-plugin and make them pipeline compatible.

  2. If the extension points seem to be tightly coupled and look to often break the API/binary compatibility then create new classes for the same.

  3. For core modules (for example, PromotionProcess) opt to create new analogous classes within the promoted-builds-plugin.

  4. Create new Custom "steps" for Declarative Pipeline script for Job promotion definition.

  5. Use the parameterized-trigger plugin as an inspiration to trigger the new Promotion Job.

  6. Avail from the run-Selector/copyArtifacts plugin to copy/send build information as parameters to the new Promotion Job.

  7. Use fingerprinting to trace the flow of the promoted pipeline jobs within Jenkins.(Other applications of fingerprinting yet to be discussed)

  8. Update the Jenkins release plugin(to share the common APIs)

Project Proposal: More information on the Project can be found through this link

Meeting Notes: link

Weekly Meetings:
General Weekly Meeting:  Wednesdays at 2:00 PM UTC
Project Specific Meeting: Tuesdays and Thursdays at 10:00 AM UTC
Expected deliveries for Coding Phase-I:
. Create new analogous classes for core modules such as PromotionProcess,JobPropertyImpl,etc.
. Subsequently refactor the required Promotion Condition Extension points inside
  the promoted-builds-plugin.
. In this way, almost all the Promotion conditions/definitions can be made pipeline compatible.
. Create new custom steps for all the Promotion definitions.
. Pass on the inputs from these DSL steps to the respective promotion modules for future promotions.
Updates on the Project:
. As mentioned these new classes are currently being committed to the "promoted-builds-plugin".
. Though the prior design was to make a different plugin for this implementation, a thorough
  discussion with the mentors led to the conclusion that the new features be integrated into the
  same old plugin and have a monolithic code for promotion as a whole.
. Some core modules as part of the refactoring process have been committed but are still
  evolving as we add in more features.
. New Custom steps are also being built and are still in the ongoing development process.
. With all the dependent modules aligned, the final Promotion Condition modules can be submitted
  so that they adhere to Pipeline compatibility.