ws()块在Jenkins中做了什么?

时间:2017-04-23 22:24:42

标签: jenkins jenkins-pipeline

我正在尝试将Scripted Pipeline中的少数Jenkinsfile转换为Declarative Pipeline。我在Jenkinsfile

中有一个这样的块
ws("/path/to/dir") {
    // do stuff
}

我想知道它究竟做了什么以及将它转换为Declarative Pipeline语法的正确方法是什么。

1 个答案:

答案 0 :(得分:14)

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

产生输出:

{{1}}

的引用: