Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 将当前工作区路径存储在变量中以备以后使用_Jenkins_Jenkins Pipeline - Fatal编程技术网

Jenkins 将当前工作区路径存储在变量中以备以后使用

Jenkins 将当前工作区路径存储在变量中以备以后使用,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我正在为我的管道使用声明性语法,并希望存储在我的一个阶段上使用的工作区的路径,以便在以后的阶段中可以使用相同的路径 我已经看到我可以调用pwd()来获取当前目录,但是我如何分配给要在阶段之间使用的变量呢 编辑 我尝试通过定义自己的自定义变量并在ws指令中使用like so来实现这一点: pipeline { agent { label 'master' } stages { stage('Build') { steps { script {

我正在为我的管道使用声明性语法,并希望存储在我的一个阶段上使用的工作区的路径,以便在以后的阶段中可以使用相同的路径

我已经看到我可以调用
pwd()
来获取当前目录,但是我如何分配给要在阶段之间使用的变量呢

编辑

我尝试通过定义自己的自定义变量并在ws指令中使用like so来实现这一点:

pipeline {
  agent { label 'master' }
  stages {
    stage('Build') {
      steps {
        script {
          def workspace = pwd()
        }
        sh '''
          npm install
          bower install
          gulp set-staging-node-env
          gulp prepare-staging-files
          gulp webpack
        '''
        stash includes: 'dist/**/*', name: 'builtSources'
        stash includes: 'config/**/*', name: 'appConfig'
        node('Protractor') {
          dir('/opt/foo/deploy/') {
            unstash 'builtSources'
            unstash 'appConfig'
          }
        }        
      }
    }
    stage('Unit Tests') {
      steps {
        parallel (
          "Jasmine": {
            node('master') {
              ws("${workspace}"){
                sh 'gulp karma-tests-ci'
              }
            }
          },
          "Mocha": {
            node('master') {
              ws("${workspace}"){
                sh 'gulp mocha-tests'
              }
            }
          }
        )
      }
      post {
        success {
          sh 'gulp combine-coverage-reports'
          sh 'gulp clean-lcov'
          publishHTML(target: [
            allowMissing: false,
            alwaysLinkToLastBuild: false,
            keepAll: false,
            reportDir: 'test/coverage',
            reportFiles: 'index.html',
            reportName: 'Test Coverage Report'
          ])
        }
      }
    }
    }
}
在Jenkins构建控制台中,我看到以下情况:

[Jasmine] Running on master in /var/lib/jenkins/workspace/_Pipelines_IACT-Jenkinsfile-UL3RGRZZQD3LOPY2FUEKN5XCY4ZZ6AGJVM24PLTO3OPL54KTJCEQ@2
[Pipeline] [Jasmine] {
[Pipeline] [Jasmine] ws
[Jasmine] Running in /var/lib/jenkins/workspace/_Pipelines_IACT-Jenkinsfile-UL3RGRZZQD3LOPY2FUEKN5XCY4ZZ6AGJVM24PLTO3OPL54KTJCEQ@2@2
从第一阶段分配的原始工作区实际上是
\u Pipelines\u IACT-Jenkinsfile-UL3RGRZZQD3LOPY2FUEKN5XCY4ZZ6AGJVM24PLTO3OPL54KTJCEQ

所以它看起来不起作用,我做错了什么


谢谢

您可以将该值放入中所述的

您正在运行哪个版本?您可以将
工作空间
变量分配给环境变量

还是我完全误解了你在寻找什么

pipeline {
    agent none
    stages {
        stage('Stage-One') {
            steps {
                echo 'StageOne.....'
                script{ name = 'StackOverFlow'}
            }
        }
        stage('Stage-Two'){
            steps{
                echo 'StageTwo.....'
                echo "${name}"
            }
        }
    }
}
上面为
echo“${name}


您还可以使用
sh“echo${env.WORKSPACE}”
获取作为工作区分配给构建的目录的绝对路径。

我认为分配给变量是从我在其他地方读到的正确方法,但是我无法让它工作。请参阅我对原始问题的编辑谢谢,我实际上使用了不同的方法,请参阅我的更新问题。但是它似乎仍然不起作用,有什么想法吗?
pipeline {
    agent none
    stages {
        stage('Stage-One') {
            steps {
                echo 'StageOne.....'
                script{ name = 'StackOverFlow'}
            }
        }
        stage('Stage-Two'){
            steps{
                echo 'StageTwo.....'
                echo "${name}"
            }
        }
    }
}