Jenkins文件-在活动选择脚本中执行shell命令

n7taea2i  于 2022-11-21  发布在  Jenkins
关注(0)|答案(1)|浏览(167)

大家 , 我 正在 使用 插件 " Active Choices " 在 我 的 Jenkins , 我 尝试 做 一些 条件 , 并 返回 基于 环境 主机 , 将 在 shell 命令 中 执行 我 的 Jenkins 文件 。 命令 像 " echo ${BUILD _ ENVIRONMENT} , echo ${BUILD _ VERSION} .. etc " 。
已经 这样 做 了 , 但 列表 仍然 是 空 的 。 现在 , 我 必须 做 什么 才 能 让 这个 工作 ? 谢谢 。
Jenkins 文件 :

properties([
        parameters([
            [$class: 'ChoiceParameter',
             choiceType: 'PT_SINGLE_SELECT',
                    name: 'ENVIRONMENT',
                    description: 'Select Environment',
                    script: [
                            $class: 'GroovyScript',
                            script: [
                                    classpath: [],
                                    sandbox: true,
                                    script: '''
                                    def getEnvVar(String name) {
                                        return sh(script: "echo \${$name}", returnStdout: true).trim()
                                    }
                                    def env = getEnvVar("ENVIRONMENT")
                                    if (envs != "testing") {
                                        return ["stage", "dev", "prod"]
                                    }else{
                                        return ["testing"]
                                    }
                                    ''',
                            ],
                            ]

                    ]
    ])
])

中 的 每 一 个
输出 :

vbkedwbf

vbkedwbf1#

我 用 另 一 种 解决 方案 来 解决 它 , 但 也许 不 是 最 好 的 选择 。
首先 创建 一 个 方法 来 加载 env 文件 ( 我 在 上面 设置 了 值 ) , 然后 定义 到 jenkins 全局 变量 。

getEnvHosts = { ->
    node {
        script {
            // Get the environment hosts file
            def props = readProperties file: '/var/lib/jenkins/env/dast-service-env'

            //define to jenkins global variable
            env.BUILD_ENVIRONMENT = props['BUILD_ENVIRONMENT']
        }
    }

}

中 的 每 一 个
然后 在 活动 选择 参数 中 使用 ${env.BUILD_ENVIRONMENT} 调用 " BUILD _ ENVIRONMENT " :

getEnvHosts()
properties([
        parameters([
                [$class     : 'ChoiceParameter',
                 choiceType : 'PT_SINGLE_SELECT',
                 name       : 'BUILD_ENVIRONMENT',
                 description: "Select Environment default is ${env.BUILD_ENVIRONMENT}",
                 script     : [
                         $class: 'GroovyScript',
                         script: [
                                 classpath: [],
                                 sandbox  : true,
                                 script   : """
                                        def envs = "${env.BUILD_ENVIRONMENT}"
                                            if (envs == "stage") {
                                                choices = ["stage", "dev", "prod", "testing"]
                                            }else if (envs == "dev") {
                                                choices = ["dev", "prod", "stage", "testing"]
                                            }else if (envs == "prod") {
                                                choices = ["prod", "dev", "stage", "testing"]
                                            }else{
                                                choices = ["testing", "stage", "dev", "prod"]
                                            }
                                        return choices
                                        """,
                         ],
                 ]
                ],
        ])
])

格式

相关问题