User blog comment:Bielik20/Jenkins RxJs/@comment-11733175-20190821192737/@comment-11733175-20190830162506

I did, but I'm still confused.

Your previous workflow was to run the update job across X platforms. When that finished, you triggered a deploy job on the same platforms. And when that finished, you triggered a test job across the same platforms.

In terms of parameters, you're using a user-defined parameter for the branch of a repo (where the repo doesn't vary). In addition to that, you have a sandbox (presumably somewhere these tests are being run) and a set of URL params which is a free-form field.

What you end up with in terms of a pipeline is something like this:

pipeline { parameters { string(name: 'JOBS', defaultValue: 'update,deploy,test') string(name: 'PLATFORMS', defaultValue: 'app,mobile-wiki,f2,gamepedia') string(name: 'BRANCH', defaultValue: 'master') choice(name: 'SANDBOX', [ /* values */ ]) // lets assume you generated now somewhere above string(name: 'URL_PARAMS', defaultValue: "cb=${now}") }

stages { stage('Update') { when { // inspect the content of $JOBS }           parallel { // run update jobs here }       }

stage('Deploy') { when { // inspect the content of $JOBS }           parallel { // run deploy jobs here }       }

stage('Test') { when { // inspect the content of $JOBS }           parallel { // run test jobs here }       }    } }

You gained a little bit of niceness by inferring the branch, but as far as I can tell you're more or less reproducing what Jenkins will do for you with a handful of plugins and a an afternoon reading through the pipeline docs.