Un po 'vecchio argomento, ma dal momento che Jenkins ancora (!) Non supporta questo sto inviando un'altra soluzione per le implementazioni di pipeline script. Si basa sull'elenco di fasi di costruzione in modo dinamico quando si esegue la pipeline.
- step - fasi definizione enum
enum Steps {
PREPARE(0, "prepare"),
BUILD(1, "build"),
ANALYSE(2, "analyse"),
CHECKQG(3, "checkQG"),
PROVISION(4, "provision"),
DEPLOY(5, "deploy"),
ACTIVATE(6, "activate"),
VERIFY(7, "verify"),
CLEANUP(8, "cleanup")
Steps(int id, String name) {
this.id = id
this.name = name
}
private final int id
private final String name
int getId() {
id
}
String getName() {
name
}
public static Steps getByName(String name) {
println "getting by name " + name
for(Steps step : Steps.values()) {
if(step.name.equalsIgnoreCase(name)) {
return step
}
}
throw new IllegalArgumentException()
}
}
- metodo di creazione della lista fasi finali
def prepareStages(def startPoint){
println "preparing build steps starting from " + startPoint
Set steps = new LinkedHashSet()
steps.add(Steps.PREPARE)
steps.add(Steps.BUILD)
steps.add(Steps.ANALYSE)
steps.add(Steps.CHECKQG)
steps.add(Steps.PROVISION)
steps.add(Steps.DEPLOY)
steps.add(Steps.ACTIVATE)
steps.add(Steps.VERIFY)
steps.add(Steps.CLEANUP)
List finalSteps = new ArrayList()
steps.each{
step ->
if (step.id >= startPoint.id) {
finalSteps.add(step)
}
}
return finalSteps
}
- e la u può usare in questo modo
fasi def = prepareStages (Steps.getByName ("$ {} startStage"))
node {
try {
//pipelineTriggers([pollSCM('${settings.scmPoolInterval}')]) //this can be used in future to get rid build hooks
sh "echo building " + buildVersionNumber(${settings.isTagDriven})
tool name: 'mvn_339_jenkins', type: 'maven'
script {
println "running: " + stages
}
stage('Prepare') {
if (stages.contains(Steps.PREPARE)) {
script { currentStage = 'Prepare' }
//.....
}
} //...
la "startStage" è un parametro di build definito come segue
parametri { choiceParam ('startStage', [ 'preparare', 'costruire', 'analizzare' , 'checkQG', 'disposizione', 'distribuire', 'attiva', 'verificare', 'pulizia' ], 'Sollevare il palco si desidera iniziare da') }
Questo mi consente di riprendere il palco dal quale voglio iniziare la pipeline (la fase di preparazione è impostata di default)
Correlati: http: // stackoverflow.it/questions/39905978/complex-and-long-single-job-jenkins-job-pipeline-builds-there-yet –