Search code examples
jenkinsjenkins-pluginsjenkins-pipeline

Is it possible to check and change parameters in jenkins pipeline?


I have jenkins pipeline which will be triggered by a non-technical person and a technical person will approve or reject this build. So my problem is, in that flow technical person should change/fill some parameters that is empty(non-technical person can't know or forgot to enter).

stage 'Waiting Approval'
currentBuild.displayName = "Waiting for Approvel:" + name
timeout(time: 5, unit: 'DAYS')
        {
            input message: "Do you approve creating new user("+ name +")?", ok: 'Approve', submitter: 'Bilisim'
        }

// ########### STEP For Checking Missing or Wrong Parameters & Correct Them !!!! ##############
node('domainController') {
    stage 'Create New User'
    currentBuild.displayName = "Creating AD User:"+name
    build job: 'Create New AD User', parameters: [string(name: 'groups', value: groups), string(name: 'emailAdd', value: emailAdd), string(name: 'name', value: name), string(name: 'surname', value: surname), string(name: 'title', value: title), string(name: 'department', value: department), string(name: 'manager', value: manager), string(name: 'company', value: company), string(name: 'streetAdd', value: streetAdd), string(name: 'city', value: city), string(name: 'state', value: state), string(name: 'country', value: country), string(name: 'pcode', value: pcode), booleanParam(name: 'sendMail', value: sendMail.toBoolean()), booleanParam(name: 'details', value: details.toBoolean()), string(name: 'ou', value: ou)]
    currentBuild.displayName = "Finished Creating User:" + name
}

Solution

  • Jenkins pipelines parameters are passed to your pipeline as variables, so you can update your variable value. I don't think you can really "change" a parameter in the build view but you can wait for technical person input and replace the non-technical person parameters if needed.

    Example :

    stage "Stage 1"
    echo "Non-technical person parameter : ${name}"
    
    stage "Waiting approval"
    timeout(time: 5, unit: 'DAYS') {
      def technicalApprovedUser = input id: 'input_approved_name' message: "Do you approve creating new user("+ name +")?", ok: 'Approve', submitter: 'Bilisim', parameters: [[$class: 'StringParameterDefinition', defaultValue: "${name}", description: '', name: 'User Name']]
    }
    
    stage 'Create New User'
    currentBuild.displayName = "Creating AD User:"+technicalApprovedUser
    build job: 'Create New AD User', parameters: [string(name: 'groups', value: groups), string(name: 'emailAdd', value: emailAdd), string(name: 'name', value: technicalApprovedUser), string(name: 'surname', value: surname), string(name: 'title', value: title), string(name: 'department', value: department), string(name: 'manager', value: manager), string(name: 'company', value: company), string(name: 'streetAdd', value: streetAdd), string(name: 'city', value: city), string(name: 'state', value: state), string(name: 'country', value: country), string(name: 'pcode', value: pcode), booleanParam(name: 'sendMail', value: sendMail.toBoolean()), booleanParam(name: 'details', value: details.toBoolean()), string(name: 'ou', value: ou)]
    currentBuild.displayName = "Finistère Creating User:" + technicalApprovedUser