【问题标题】:How to retrieve all lines from a text parameter in a Jenkins declarative pipeline?如何从 Jenkins 声明性管道中的文本参数中检索所有行?
【发布时间】:2020-11-16 14:11:26
【问题描述】:

我的 jenkinsFile 中有一个文本参数,供 Jenkins 管道作业使用。此文本参数用于输入文件名列表(每行一个)。

奇怪的是,当我打印出构建环境变量时,似乎只检测到文本字段第一行的值。

jenkinsFile

pipeline {
        agent any
        
        parameters {
            
            text(
                    name: 'FILE_LIST', 
                    defaultValue: '', 
                    description: 'File list'
            )
        }
        
        stages {

            stage("Environnement variables") {
                steps {
                    sh 'printenv | grep FILE_LIST'
                }
            }
        }
}

文本字段的内容示例

test.sql
MY_TEST.SQL
test_01.sql

结果

FILE_LIST=test.sql

如何从 Jenkins 管道中的文本参数访问所有行的值?

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    如果您想获得类似“printenv | grep file1 file2”的内容,请使用以下代码

    pipeline {
        agent any
        
        parameters {
            
            text(
                    name: 'FILE_LIST', 
                    defaultValue: '', 
                    description: 'File list'
            )
        }
        
        stages {
    
            stage("Environnement variables") {
                steps {
                    script{
                        String fllist=FILE_LIST.split("\r?\n").join(' ')
                        echo fllist
                         
                        sh 'printenv | grep $fllist'
                    
                    }
                }
            }
        }
    

    }

    【讨论】:

    • 请注意,$fllist 变量在 sh 'printenv | 中不可用grep $fllist' 上下文。我试图回显 $fllist 并且它是空白的......知道为什么吗?
    • sh 命令需要双引号为:sh "printenv | grep $fllist" 然后可以从 sh 指令访问 "fllist" 变量值
    猜你喜欢
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多