当前位置: 首页 > 知识库问答 >
问题:

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

郭翰墨
2023-03-14

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

我已经看到我可以调用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

从第一阶段分配的原始工作空间实际上是_Pipelines_IACT-Jenkinsfile-UL3RGRZZQD3LOPY2FUEKN5XCY4ZZ6AGJVM24PLTO3OPL54KTJCEQ

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

谢谢

共有2个答案

吴刚毅
2023-03-14

您可以将值放入本答案中描述的环境变量中

CURRENT_PATH= sh (
    script: 'pwd',
    returnStdout: true
).trim()

您正在运行哪个版本?也许您可以将WORKSPACE变量分配给环境var?

还是我完全误解了这就是你要找的?

袁阿苏
2023-03-14
pipeline {
    agent none
    stages {
        stage('Stage-One') {
            steps {
                echo 'StageOne.....'
                script{ name = 'StackOverFlow'}
            }
        }
        stage('Stage-Two'){
            steps{
                echo 'StageTwo.....'
                echo "${name}"
            }
        }
    }
}

上面在stagewo中打印echo“${name}
StackOverFlow,您还可以使用sh“echo${env.WORKSPACE}”获取作为工作区分配给生成的目录的绝对路径。

 类似资料:
  • 我正在使用放心进行API测试自动化。我想在调用API后将响应存储为对象,这样我就可以使用该对象验证一些数据,如状态代码、正文、标题等。 我试着使用但它只允许存储字符串,如果将响应存储为类似字符串的并尝试检索

  • 我正在Android上使用RxJava来执行登录操作。 我需要传入用户名、密码和布尔标志。用户名和密码并发送到服务器进行验证,一旦返回响应,我需要使用该标志来确定下一步要做什么。 由于登录操作是异步的,所以我希望确保当响应返回时,我仍然可以访问我在开始时传入的用户名、密码和标志。 以下是我认为存在问题的最初编码方式: 当我调用ecute1()时,它会返回一个可观察的,我将其缓存然后订阅。如果发生A

  • 问题内容: 如何在代码后面创建可观察对象并生成下一个值?由于其他异步事件,我希望能够从代码的不同部分调用onNext。 这是我尝试过的,不起作用: 问题答案: 您需要的是某种主题。,,,等。 创建一个主题,然后可以订阅它。您也可以添加到流中。 例如: 一个更具体的用例(每次成功返回HTTP响应时,都会添加到可观察的流中): 正如另一位用户所说,如果您使用的是V5 ,请确保将所有设置都更改为。如果您

  • 问题内容: 我想在变量中提取当前路径,并稍后在脚本中使用它 就像是: 稍后的: 但是多年来,我的bash技能已经生锈了。 我将如何进行呢? 问题答案: (如果路径包含空格,则必须使用引号。)

  • 我的java bin文件夹包含java.exe @大卫华莱士 Microsoft Windows[版本6.3.9600](c)2013 Microsoft Corporation。保留所有权利。 C:\用户\Andy\AppData\漫游\Microsoft\Windows\开始菜单\Programs\Startup>

  • 我正在使用多根工作区功能查看我的c项目中的源文件以及几个外部库。我正在尝试使用cpptools扩展来实现intellisense和其他功能。我想在工作区级别相对于。code-workspace文件设置默认包含路径。使用${workspaceFolder}解析为包含所查看文件的文件夹的路径。是否存在始终解析代码工作区文件路径的环境变量?还是我可以设置一个配置变量,然后使用${config:varia