一尘不染

在詹金斯中,ws()块有什么作用?

jenkins

我正在尝试将Jenkinsfiles从脚本管道转换为声明性管道。我在中有一个这样的块Jenkinsfile

ws("/path/to/dir") {
    // do stuff
}

我不知道它到底能做什么,以及将其转换为声明性管道语法的正确方法是什么。


阅读 305

收藏
2020-07-25

共1个答案

一尘不染

ws分配一个新的工作区。您将使用它来确保其他任何因素都不会干扰磁盘上运行所附步骤的位置。

  • 这不会像node步骤那样繁重,因为node这还将确保它由单独的执行程序运行。
  • 这将提供比dir步骤更多的隔离,因为这dir将无法确保在文件系统上的隔离位置ws

您可以按照与脚本相同的方式在声明性管道中使用它:

pipeline {
  agent { label 'docker' }
  stages {
    stage('hot_stage') {
      steps {
        sh 'pwd'
        ws('/tmp/hey') {
          sh 'pwd'
        }
      }
    }
  }
}

产生输出:

+ pwd
/opt/jenkins/workspace/tool_jenkins2-test_master-R4LIKJR63O6POQ3PHZRAKWWWGZZEQIVXVDTM2ZWZEBAWE3XKO6CQ
[Pipeline] ws
Running in /tmp/hey
[Pipeline] {
[Pipeline] sh
[hey] Running shell script
+ pwd
/tmp/hey

参考资料:

2020-07-25