【问题标题】:Use Jenkins WORKSPACE environment variable in Jenkins declarative pipeline parameter在 Jenkins 声明性管道参数中使用 Jenkins WORKSPACE 环境变量
【发布时间】:2021-05-24 01:24:14
【问题描述】:

有没有办法在 Jenkins 声明式管道参数中使用 Jenkins WORKSPACE 环境变量?

以下尝试失败。

pipeline {
    parameters {
        extendedChoice description: 'Template in project',
                        multiSelectDelimiter: ',', name: 'TEMPLATE',
                        propertyFile:  env.WORKSPACE + '/templates.properties', 
                        quoteValue: false, saveJSONParameterToFile: false, type: 'PT_MULTI_LEVEL_SINGLE_SELECT',
                        value: 'Project,Template', visibleItemCount: 6
   ...
   } 
   stages { 
   ...
   }

propertyFile: '${WORKSPACE}/templates.properties' 也不起作用。

【问题讨论】:

  • 尝试使用“templates.properties”,插件可能会假设路径是相对于工作空间的。

标签: jenkins environment-variables jenkins-pipeline jenkins-plugins extended-choice-parameter


【解决方案1】:

环境变量可以在 Jenkinsfile 中的不同位置访问,例如:

def workspace
node {
    workspace = env.WORKSPACE
}
pipeline {
    agent any;
    parameters {
        string(name: 'JENKINS_WORKSPACE', defaultValue: workspace, description: 'Jenkins WORKSPACE')
    }
    stages {
        stage('access env variable') {
            steps {
                // in groovy
                echo "${env.WORKSPACE}"
                
                //in shell
                sh 'echo $WORKSPACE'
                
                // in groovy script 
                script {
                    print env.WORKSPACE
                }
            }
        }
    }
}

【讨论】:

  • 在参数中访问环境变量存在问题
  • 在参数中,您还必须使用双引号“${env.WORKSPACE}”中的插值
  • 我已经编辑了我的答案,解释了如何在参数中获取环境变量
  • 谢谢。 echo "${env.WORKSPACE}" 按预期工作
【解决方案2】:

唯一可行的方法是将绝对路径放置到属性文件所在的 Jenkins 主工作区。

pipeline {
    parameters {
        extendedChoice description: 'Template in project',
                        multiSelectDelimiter: ',', name: 'TEMPLATE',
                        propertyFile:  'absolute_path_to_master_workspace/templates.properties', 
                        quoteValue: false, saveJSONParameterToFile: false, type: 'PT_MULTI_LEVEL_SINGLE_SELECT',
                        value: 'Project,Template', visibleItemCount: 6
   ...
   } 
   stages { 
   ...
   }

在管道实际触发之前,管道参数定义期间似乎环境变量不可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-09
    • 2018-10-02
    • 2021-04-26
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    相关资源
    最近更新 更多