如何从声明性Jenkinsfile中检索远程FS根?

时间:2017-12-07 07:05:09

标签: jenkins jenkins-pipeline

我有一个重量级的基础项目很少随时间变化并且有很多头文件。我已将其设置为在具有相对路径base的自定义工作区中构建。因此,在FS根目录设置为C:\Jenkins远程节点上,该特定节点上的结果路径将为C:\Jenkins\base。 这种设置的原因是我不想为每个依赖项目复制或解压整个基础项目以节省构建时间。另外,我不想使用绝对路径,因为我喜欢自包含jenkins安装的想法。

现在我有第二个使用project的项目base。我需要为base的构建系统指定project的路径,以便找到所需的base标头。

有没有办法通过环境检索远程FS root?我尝试使用${env.JENKINS_HOME},但这总是解析为Jenkins主人的主文件夹。我的构建系统希望在PATH_TO_BASE环境变量中找到base项目的路径:

pipeline {
    agent none

    stages {
        stage('Build') {
            parallel {
                stage('Build Linux x64') {
                    agent {
                        label "Debian9_x64"
                    }
                    steps {
                        withEnv(["PATH_TO_BASE=${env.JENKINS_HOME}/base"]) {
                            sh '''mkdir -p _build
                            cd _build
                            cmake ..
                            cmake --build .'''
                        }
                    }
                }
                stage('Build Windows10') {
                    agent {
                        label "Windows10"
                    }
                    steps {
                        withEnv(["PATH_TO_BASE=${env.JENKINS_HOME}/base"]) {
                            bat '''if not exist _build mkdir _build
                            cd _build
                            cmake ..
                            cmake --build .'''
                        }
                    }
                }
            }
        }  
    }
}

1 个答案:

答案 0 :(得分:0)

我通常使用一组环境变量配置slave。

  • 转到从属配置
  • 在"节点属性"下设置环境变量。部分。