Jenkinsfile 环境中缺少文件夹变量

问题描述 投票:0回答:1

我正在尝试在 jenkinsfile 中使用文件夹变量 我尝试了如何跨管道阶段访问文件夹变量?但我没有让它工作。

在实验文件夹中我添加了 2 个属性

  • CCEBUILD_TOOLS_BRANCH
  • 测试

sh 'printenv' 
显示我的文件夹变量,但它们不显示
env.getEnvironment()

为什么这不起作用?

def printParams() {
    env.getEnvironment().each { name, value -> println "In printParams Name: $name -> Value $value" }
}

node() {
    withFolderProperties{

        stage('Info') {
            sh 'printenv'
            println env.getEnvironment().collect({environmentVariable ->  "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n")
            
            /* printParams()*/
        }
    }
    
}

printenv 输出

_=/bin/printenv
BUILD_DISPLAY_NAME=#25
BUILD_ID=25
BUILD_NUMBER=25
BUILD_TAG=*****-*******-********-*****
BUILD_URL=https://hostname/job/Experimental/job/Linux%20info/25/
CCEBUILD_TOOLS_BRANCH=develop_staging
EXECUTOR_NUMBER=4
HOME=/var/lib/jenkins
HUDSON_COOKIE=*****-*******-********-*****
HUDSON_HOME=/var/lib/jenkins
HUDSON_SERVER_COOKIE=************
HUDSON_URL=https://hostname/
JENKINS_HOME=/var/lib/jenkins
JENKINS_NODE_COOKIE=*****-*******-********-*****
JENKINS_SERVER_COOKIE=durable-*****-*******-********-*****
JENKINS_URL=https://hostname/
JOB_BASE_NAME=Linux info
JOB_DISPLAY_URL=https://hostname/job/Experimental/job/Linux%20info/display/redirect
JOB_NAME=Experimental/Linux info
JOB_URL=https://hostname/job/Experimental/job/Linux%20info/
LANG=en_US.UTF-8
LOGNAME=jenkins
NODE_LABELS=developmenthost devlinux linux master releasehost rtbhost
NODE_NAME=master
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PWD=/var/lib/jenkins/jobs/Experimental/jobs/Linux info/workspace
RUN_ARTIFACTS_DISPLAY_URL=https://hostname/job/Experimental/job/Linux%20info/25/display/redirect?page=artifacts
RUN_CHANGES_DISPLAY_URL=https://hostname/job/Experimental/job/Linux%20info/25/display/redirect?page=changes
RUN_DISPLAY_URL=https://hostname/job/Experimental/job/Linux%20info/25/display/redirect
RUN_TESTS_DISPLAY_URL=https://hostname/job/Experimental/job/Linux%20info/25/display/redirect?page=tests
SHELL=/bin/bash
SHLVL=4
STAGE_NAME=Info
TEST=Ok
USER=jenkins
WORKSPACE=/var/lib/jenkins/jobs/Experimental/jobs/Linux info/workspace

环境输出

BUILD_DISPLAY_NAME = #25
BUILD_ID = 25
BUILD_NUMBER = 25
BUILD_TAG =*****-*******-********-*****
BUILD_URL = https://hostname/job/Experimental/job/Linux%20info/25/
CLASSPATH = 
HUDSON_HOME = /var/lib/jenkins
HUDSON_SERVER_COOKIE = ************
HUDSON_URL = https://hostname/
JENKINS_HOME = /var/lib/jenkins
JENKINS_SERVER_COOKIE = ************
JENKINS_URL = https://hostname/
JOB_BASE_NAME = Linux info
JOB_DISPLAY_URL = https://hostname/job/Experimental/job/Linux%20info/display/redirect
JOB_NAME = Experimental/Linux info
JOB_URL = https://hostname/job/Experimental/job/Linux%20info/
RUN_ARTIFACTS_DISPLAY_URL = https://hostname/job/Experimental/job/Linux%20info/25/display/redirect?page=artifacts
RUN_CHANGES_DISPLAY_URL = https://hostname/job/Experimental/job/Linux%20info/25/display/redirect?page=changes
RUN_DISPLAY_URL = https://hostname/job/Experimental/job/Linux%20info/25/display/redirect
RUN_TESTS_DISPLAY_URL = https://hostname/job/Experimental/job/Linux%20info/25/display/redirect?page=tests

jenkins jenkins-pipeline
1个回答
0
投票

我正在使用加载器类通过迭代父文件夹来加载属性。

com.mig82.folders.properties.PropertiesLoader

我遇到了无法在 withFolderProperties 块中编辑文件夹属性的问题。

为了解决这个问题,我使用加载器迭代文件夹属性,然后将它们存储在标准环境变量中。

这是我的代码示例

import com.mig82.folders.properties.PropertiesLoader

node ("my-label") {
    stage ("Folder Envs") {
        PropertiesLoader.loadFolderProperties(currentBuild.getRawBuild().project).each { name, value ->
            if (value.length() == 0) {
                echo "Skipping ${name} = ${value} (empty)"
                return
            }
            
            env."${name}" = value
            echo "Setting ${name} = ${value}"
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.