Jenkins provides an interface that allows one to schedule builds and map those builds to particular types of resources. Mesos manages resources which were initially referred to as slaves and currently being referred to as agents. Jenkins has an interface to Mesos via the mesos-jenkins plugin. The Mesos plugin provides a way to offer the mesos framework an offer. If this offer is accepted the agent can be used for the task. Consider the following use case.
There are agent of many different sizes. In this case we have three types of agents:
We have jobs in Jenkins that can work on only small or only large or medium and small. Jenkins has a label mechanism to identify the type of agent needed. The following experiment with mesos failed.
Several agents were added to Mesos with small, medium and large labels. When Jenkins asked for a medium agent the results were not as expected. When a request for a medium agent was requested, the mesos-jenkins plugin and Mesos tried to start a large labeled agent.