Skip to content
Andrei-Pozolotin edited this page Apr 12, 2013 · 21 revisions

pom.xml Rules.

  • do not use <version>${expressions}</version>
  • do not use <module> except in layout project
  • use explicit project version instead of inheritance from the parent
  • version ranges <version>[A,B)</version> are treated as releases

Features.

Plug-in provides these features:

  • Cascade projects setup.
  • Cascade maven releases.

There are 3 project types in this model:

  • Layout project (jenkins maven project)
  • Member project (jenkins maven project)
  • Cascade Project (custom plugin project)

Layout project is entry point into plugin, it should be user-configured maven project.

Member projects are built from layout project <module/> declarations.

Cascade project executes cascade releases recursively, from bottom up.

Layout project is user-managed.

Member and Cascade projects are managed by plugin.

Projects setup.

Layout project.

Layout project provides repository layout setup as well as default settings which will be applied to the managed member projects.

Layout project must contain root pom.mxl file which is an entry point to the whole cascade project family tree.

All member projects must be reachable from root project pom.xml

Layout project pom.xml will not be deployed or released.

Layout setup should not contain any explicit <module/> declarations, except in one place - top level layout project. Parent/child relationships will be inferred by plugin automatically.

Layout project should be able to execute mvn validate as basic build consistency check, and build all nested modules.

Layout projects examples:

barchart-jenkins-tester

barchart-jenkins-tester-ecosystem

Management actions:

Member and Cascade projects setup is done via management actions:

  • Create - create jenkins projects from layout project maven modules.
  • Delete - delete jenkins projects matching root project maven modules.
  • Update - delete and create jenkins projects based on root project modules.

Configuration example.

  • Configure layout jenkins project keeping in mind it is a template for member projects.
  • Enable cascade plug-in build environment in the layout project config page.
  • Execute "Cascade Layout" action on the layout project.
  • Select "Create Projects" action and then "Submit".
  • Navigate to "Console Output" and observe maven verification build.
  • Verify new jenkins projects are created in the configured view.

Projects release.

Release example.

Currently it takes about 15 minutes to release 15 projects.

Build restart.

Any member project in the cascade family tree can be released at will at any level of the tree.

If the cascade action fails at any point, cascade can be restarted from the same point again on the member project in question.

Mutual build exclusion.

Active cascade family project builds will block all non-cascade build triggers such as:

  • "Build whenever a SNAPSHOT dependency is built"
  • "Build when a change is pushed to GitHub"
  • etc.

After cascade build is complete, member projects triggers will start working again.

SCM support.

Cascade plugin is tested with the following SCM:

  • git with github