| Mark Austin We currently "solve" the problem by doing essentially what you suggested at build time using a pipeline stage: parallel ( getRepo1Tags: { sh("git ls-remote --quiet --tags --heads $ {repo1GitUrl} | awk '{print \$2}' | grep -vi '{}' | cut -d/ -f1,2 --complement > ${repo1TmpTags}") }, getRepo2Tags: { sh("git ls-remote --quiet --tags --heads ${repo1GitUrl} | awk ' {print \$2} ' | grep -vi '{}' | cut -d/ -f1,2 --complement > $ {repo2TmpTags} ") } ) After that we use the "input" command in pipeline to pause the build and wait for user input. def listofRepo1TagsBranches = readFile(repo1TmpTags).trim() def repo1TagBranch = input([message: 'Select a Git branch / tag', parameters: [[$class: 'ChoiceParameterDefinition', choices: listofRepo1TagsBranches, description: '', name: 'Repo 1 branch / tag to build']]]) def listofRepo2TagsBranches = readFile(repo2TmpTags).trim() def repo2TagBranch = input([message: 'Select a Git branch / tag', parameters: [[$class: 'ChoiceParameterDefinition', choices: listofRepo2TagsBranches, description: '', name: 'Repo 2 branch / tag to build']]]) This works if you're not using automated deployments. However, for our staging environments, we rely on a webhook to be called so that code is automatically pushed to staging. I'm not sure how you would parameterize this without this plugin getting updated for pipeline support. Anyway, I'll figure out another solution in the meantime. |