2017-09-18 14 views
1

Ich habe nach einem Beispiel von Benutzereingabeparametern mit Jenkins deklarative Pipeline gesucht, aber alle Beispiele verwenden die Skripted Pipelines. Hier ist ein Beispiel von Code Ich versuche, Arbeit zu bekommen:Jenkins deklarative Pipeline - Benutzereingabeparameter

pipeline { 
    agent any 

    stages { 
     stage('Stage 1') { 
      steps { 
       input id: 'test', message: 'Hello', parameters: [string(defaultValue: '', description: '', name: 'myparam')] 
       sh "echo ${env}" 
      } 
     } 
    } 
} 

Ich kann nicht zu arbeiten scheinen, wie ich die Variable MyParam zugreifen können, wäre es toll, wenn mir jemand helfen könnte. Dank

+0

Ich würde mich freuen, wenn Sie meine Antwort akzeptieren könnten, wenn es Ihr Problem gelöst hat. –

Antwort

4

Bei der Verwendung von Eingang, ist es sehr wichtig, Mittel keine auf der globalen Pipeline-Ebene zu verwenden, und Agenten zu einzelnen Stufen zuordnen. Setzen Sie die Eingabe Verfahren in einer separaten Phase, die auch verwendet Agent keine. Wenn Sie einen Agentenknoten für die Eingabestufe zuweisen, bleibt dieser Agent-Executor von diesem Build reserviert, bis ein Benutzer den Buildprozess fortsetzt oder abbricht.

Dieses Beispiel sollte bei der Verwendung der Eingabehilfe:

def approvalMap    // collect data from approval step 

pipeline { 
    agent none 

    stages { 
     stage('Stage 1') { 
      agent none 
      steps { 

       timeout(60) {    // timeout waiting for input after 60 minutes 
        script { 
         // capture the approval details in approvalMap. 
         approvalMap = input id: 'test', message: 'Hello', ok: 'Proceed?', parameters: [choice(choices: 'apple\npear\norange', description: 'Select a fruit for this build', name: 'FRUIT'), string(defaultValue: '', description: '', name: 'myparam')], submitter: 'user1,user2,group1', submitterParameter: 'APPROVER' 
        } 
       } 
      } 
     } 
     stage('Stage 2') { 
      agent any 

      steps { 
       // print the details gathered from the approval 
       echo "This build was approved by: ${approvalMap['APPROVER']}" 
       echo "This build is brought to you today by the fruit: ${approvalMap['FRUIT']}" 
       echo "This is myparam: ${approvalMap['myparam']}" 
      } 
     } 
    } 
} 

Wenn die Eingabefunktion zurückkehrt, wenn es nur einen einzigen Parameter zurückgeben muss, es direkt dieser Wert zurückgibt. Wenn in der Eingabe mehrere Parameter vorhanden sind, wird eine Zuordnung (Hash, Wörterbuch) der Werte zurückgegeben. Um diesen Wert zu erfassen, müssen wir auf grooviges Scripting zurückgreifen.

Es empfiehlt sich, den Eingabecode in einen Zeitüberschreitungsschritt zu schreiben, damit der Build nicht längere Zeit in einem nicht aufgelösten Zustand verbleibt.

+0

Hat dies bei Ihrem Problem geholfen? –

Verwandte Themen