title: Jenkins: a heavily branched chain of build jobs
body: <p>We would like to set up Continuous Integration and Continuous Deployment processes on the base of <code>Jenkins</code> ecosystem. Currently we're trying to put together all the <code>Jenkins</code> build jobs we have (from sources to several endpoint processes launched on the testing server). There are three kinds of build/deployment processes in our case:</p>
  
  <ol>
  <li>Building <code>deb</code> packages from <code>C++</code> projects (some of them are <em>dependent</em>, others are <em>dependencies</em>);</li>
  <li>Building images from <code>Docker</code> containers; </li>
  <li>Launching some processes in the endpoint; </li>
  </ol>
  
  <p><img src="https://i.stack.imgur.com/PQXzl.png" alt="enter image description here"></p>
  
  <p>As you can notice, we faced with a heavily branched chain of jobs triggered by each other. And every update of any of the upstream projects must go throughout the chain of jobs and trigger the final job (<code>process I</code>). So It would be nice to use some kind of <code>Jenkins</code> plugins that will:</p>
  
  <ul>
  <li>Control such a complicated structure of jobs (I tried to use <a href="https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin" rel="nofollow noreferrer">Build Pipeline Plugin</a> and I got the impression that this tool is suitable for "linear" job chain);</li>
  <li>Provide clean way of passing the parameters between job environments.</li>
  </ul>