Saltar al contenido

Parámetro de referencia reactivo de opciones activas en la tubería de jenkins

Necesitamos tu apoyo para difundir nuestras crónicas referente a las ciencias informáticas.

Solución:

Necesitaba una solución similar. No encontré respuestas / ejemplos relacionados específicos para el complemento Active Choices en ninguna parte de mi búsqueda de Google. Con algo de I + D, finalmente pude hacer esto para un proyecto de tubería. Aquí está el código de Jenkinsfile

properties([
    parameters([
        [$class: 'ChoiceParameter', 
            choiceType: 'PT_SINGLE_SELECT', 
            description: 'Select the Env Name from the Dropdown List', 
            filterLength: 1, 
            filterable: true, 
            name: 'Env', 
            randomName: 'choice-parameter-5631314439613978', 
            script: [
                $class: 'GroovyScript', 
                fallbackScript: [
                    classpath: [], 
                    sandbox: false, 
                    script: 
                        'return['Could not get Env']'
                ], 
                script: [
                    classpath: [], 
                    sandbox: false, 
                    script: 
                        'return["Dev","QA","Stage","Prod"]'
                ]
            ]
        ], 
        [$class: 'CascadeChoiceParameter', 
            choiceType: 'PT_SINGLE_SELECT', 
            description: 'Select the Server from the Dropdown List', 
            filterLength: 1, 
            filterable: true, 
            name: 'Server', 
            randomName: 'choice-parameter-5631314456178619', 
            referencedParameters: 'Env', 
            script: [
                $class: 'GroovyScript', 
                fallbackScript: [
                    classpath: [], 
                    sandbox: false, 
                    script: 
                        'return['Could not get Environment from Env Param']'
                ], 
                script: [
                    classpath: [], 
                    sandbox: false, 
                    script: 
                        ''' if (Env.equals("Dev"))
                                return["devaaa001","devaaa002","devbbb001","devbbb002","devccc001","devccc002"]
                            
                            else if(Env.equals("QA"))
                                return["qaaaa001","qabbb002","qaccc003"]
                            
                            else if(Env.equals("Stage"))
                                return["staaa001","stbbb002","stccc003"]
                            
                            else if(Env.equals("Prod"))
                                return["praaa001","prbbb002","prccc003"]
                            
                        '''
                ]
            ]
        ]
    ])
])

pipeline 
  environment 
         vari = ""
  
  agent any
  stages 
      stage ("Example") 
        steps 
         script
          echo 'Hello'
          echo "$params.Env"
          echo "$params.Server"
          if (params.Server.equals("Could not get Environment from Env Param")) 
              echo "Must be the first build after Pipeline deployment.  Aborting the build"
              currentBuild.result = 'ABORTED'
              return
          
          echo "Crossed param validation"
         
      
  

Incluso puede usar “Parámetro de referencia reactivo de opciones activas” con las definiciones siguientes y el resto del código, siga como en el ejemplo anterior.

[$class: 'DynamicReferenceParameter', 
            choiceType: 'ET_FORMATTED_HTML', 
            description: 'These are the details in HTML format', 
            name: 'DetailsInHTML', 
            omitValueField: false, 
            randomName: 'choice-parameter-5633384460832175', 
            referencedParameters: 'Env, Server',
            script: [
                  $class: 'ScriptlerScript',
                  parameters: [[$class: 'org.biouno.unochoice.model.ScriptlerScriptParameter', name: '', value: '$value']],
                  scriptlerScriptId: 'script.groovy'
        ]
    ]

Nota: asegúrese de tener un delimitador “,” entre varios bloques de definición de parámetros.

Espero que esto ayude a alguien.

En lugar de usar el Parámetro de referencia reactivo de opciones activas ¡Lo hice a continuación y está funcionando bien!

node('slave') 
    def choice1
    def choice2

    stage ('Select')
        choice1 = input( id: 'userInput', message: 'Select your choice', parameters: [ [$class: 'ChoiceParameterDefinition', choices: 'aanbb', description: '', name: ''] ])
        if(choice1.equals("aa"))
            choice2 = input( id: 'userInput', message: 'Select your choice', parameters: [ [$class: 'ChoiceParameterDefinition', choices: 'yynww', description: '', name: ''] ])
        else
            choice2 = input( id: 'userInput', message: 'Select your choice', parameters: [ [$class: 'ChoiceParameterDefinition', choices: 'ggnkk', description: '', name: ''] ])
        
    

Muchas gracias @Yogeesh. Ayudó mucho. En mi caso, el requisito era seleccionar varios en lugar de uno. Entonces, usó choiceType: ‘PT_CHECKBOX’, y cumplió el propósito.

properties([
parameters([
    [$class: 'ChoiceParameter', 
        choiceType: 'PT_SINGLE_SELECT', 
        description: 'Select the Env Name from the Dropdown List', 
        filterLength: 1, 
        filterable: true, 
        name: 'Env', 
        randomName: 'choice-parameter-5631314439613978', 
        script: [
            $class: 'GroovyScript', 
            fallbackScript: [
                classpath: [], 
                sandbox: false, 
                script: 
                    'return['Could not get Env']'
            ], 
            script: [
                classpath: [], 
                sandbox: false, 
                script: 
                    'return["Dev","QA","Stage","Prod"]'
            ]
        ]
    ], 
    [$class: 'CascadeChoiceParameter', 
        choiceType: 'PT_CHECKBOX', 
        description: 'Select Servers', 
        filterLength: 1, 
        filterable: true, 
        name: 'Server', 
        randomName: 'choice-parameter-5631314456178619', 
        referencedParameters: 'Env', 
        script: [
            $class: 'GroovyScript', 
            fallbackScript: [
                classpath: [], 
                sandbox: false, 
                script: 
                    'return['Could not get Environment from Env Param']'
            ], 
            script: [
                classpath: [], 
                sandbox: false, 
                script: 
                    ''' if (Env.equals("Dev"))
                            return["devaaa001","devaaa002","devbbb001","devbbb002","devccc001","devccc002"]
                        
                        else if(Env.equals("QA"))
                            return["qaaaa001","qabbb002","qaccc003"]
                        
                        else if(Env.equals("Stage"))
                            return["staaa001","stbbb002","stccc003"]
                        
                        else if(Env.equals("Prod"))
                            return["praaa001","prbbb002","prccc003"]
                        
                    '''
            ]
        ]
    ]
])

Si entiendes que te ha sido de provecho este artículo, sería de mucha ayuda si lo compartes con más juniors y nos ayudes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *