Mesos Cloud

The mesos-jenkins plugin allows Jenkins to dynamically launch Jenkins slaves on a Mesos cluster depending on the workload!Put simply, whenever the Jenkins Build Queue starts getting bigger, this plugin automatically spins up additional Jenkins slave(s) on Mesos so that jobs can be immediately scheduled! Similarly, when a Jenkins slave is idle for a long time it is automatically shut down.

Usage

To learn more about building and using the plugin please visit the project website.

Changelog

1.0.0 (September 17th 2019)

  • Support for Mesos Containerizer

  • Suppression of offers when there is no workload in the queue

  • Support for Single Use agents

  • Support for USER networking

  • Enhanced metrics and logging for better observability

  • Fixed default long decline timeout to 60s (previously it was incorrectly set to 60k seconds)

  • Several bug fixes

NOTE:  Upgrading from previous versions of plugin to 1.0.0 is not backwards compatible due to the addition of support for Mesos containerizer. The plugin configuration needs to be manually fixed after the upgrade for it to work.

0.18.1 (September 25th 2018)

This release includes both the 0.18 and 0.17.1 changes.

0.18 (September 25th 2018)

  • Fix security issues: one, two

This release does not contain the changes from 0.17.1.

0.17.1 (September 17th 2018)

  • Solves the problem of concurrent builds on a NFS based workspace. 

0.17 (June 15th 2018)

  • Additional compatibility fix for Jenkins 2.103 #311. Unfortunately, due to the new serialization restrictions, the slave attributes may have to be redefined if you migrated to Jenkins 2.102+ prior to upgrading this plugin.
  • Enhancements from Mesosphere : 
    • Mesos offer handling and Jenkins slave lifecycle
    • Introduce a proper offer processing thread and make it fault tolerant
    • Fix threads waiting for Jenkins computers not dying on task failure

0.16 (March 26th 2018)

  • Additional compatibility fix for Jenkins 2.103 #311. Unfortunately, due to the new serialization restrictions, the slave attributes may have to be redefined if you migrated to Jenkins 2.102+ prior to upgrading this plugin.

0.15.1 (Jan 29th 2018)

  • Compatibility fix for Jenkins 2.103 #310

0.15.0 (July 14th 2017)

  • Support for Mesos maintenance primitives

  • Feature to include disk space for Jenkins slave task

  • Fix for  restart of frameworks when multiple Mesos clouds are used #270

0.14.1 (Mar 11th 2017)

  • Bug fix in slave deletion logic #282
  • Task launch with appropriate roles from offer
  • Documentation updates

0.14.0 (Jan 3rd 2017)

  • Support for overlay networks
  • Fallback to root url if url from request doesn't work
  • Support for Jenkins 2.27+ - Use JNLPLauncher to launch the slave  #269
  • Mesos single use slave enabled for Jenkins pipeline. #262
  • Better logging
  • Base types for variables 
  • Documentation update with working links
  • Check for builds in queue before declining an offer

0.13.1 (Jul 27th 2016)

  • Compatibility fix when upgrading from version prior to 0.13.0
  • Minor logging tuning to reduce noise in main Jenkins logs

0.13.0 (Jul 11th 2016)

  • #229 Jenkins slave memory fix
  • #233 Add a minimum number of executors per slave
  • #228 Ability to customize docker image using labels
  • 13ac08 Prevent the scheduler from starting if jenkinsMaster is null

0.12.0 (Mar 24th 2016)

  • #218 #219 Add missing inline helps
  • Fix a blind cast in MesosItemListener
  • Add an administrative monitor if slaves couldn't be provisioned (and corresponding health check if metrics plugin is installed)
  • Flag MesosSlave as non-instantiable (this hides the slave from 'New Node' page)
  • Use data binding for all form fields : makes the overall configuration easier to work with by splitting the jelly files
  • Add support for Node Properties : allows to declare Node Properties to be applied to the created slave, including custom environment variables. Replaces the implicit _JAVA_OPTIONS added in 0.10.0
  • #220 Add missing equals/hashCode methods causing framework restart on configuration save

0.11.0 (Mar 7th 2016)

  • #211 - Wait for slave to come online to avoid provisioning of additional slaves
  • #213 - fixed NullPointerException due to empty label in cloud config
  • #214 - Default labelling for jobs
  • #212 - Introduced affinity for offers
  • #215 - Fix another case of duplicate framework registration
  • #210 - Update mesos requirement/compatibility to 0.27.0

0.10.1 (Feb 17th 2016)

  • #205 - Reduce log verbosity
  • #206 - Add escape-by-default to jelly files
  • #207 - Fix equals method for MesosCloud
  • #208 - Slaves shouldn't try to reconnect

0.10.0 (Feb 8th 2016)

  • #191 - Set _JAVA_OPTIONS to have max heap equals to executor memory
  • #162 - Prevent offer starvation (with some follow-up in #199)
  • #160 - Allow specifying role used by the framework
  • #193 - Remove libs from target directory
  • #192 - Update vagrantfile
  • #195 - Fix copy constructor
  • #196 - Fix a deadlock case
  • #197 - NPE if credentialsId is null
  • 1cf6c7 Add a minimum time to live for scheduler
  • 0015bc Move driver initialization to the main thread

0.9.0 (Jan 8th 2016)

  • Integration with credentials plugin
  • Add jenkins label to mesos slave task's name
  • Disable adding a slave manually
  • Allow provisioning mesos slaves for jobs with no labels
  • Fix for RuntimeException during Scheduler execution
  • Bug fixes and Unit Test fixes