一尘不染

没有这种DSL方法的“阶段”

jenkins

我正在尝试为詹金斯创建我的第一个Groovy脚本:

在这里查看https://jenkins.io/doc/book/pipeline/之后,我创建了这个:

node {
  stages {

    stage('HelloWorld') {
      echo 'Hello World'
    }

    stage('git clone') {
      git clone "ssh://git@mywebsite.com/myrepo.git"
    }

  }
}

但是,我得到:

java.lang.NoSuchMethodError: No such DSL method "stages" found among steps

我想念什么?

另外,如何在不以纯文本形式编写密码的情况下将我的凭据传递到Git存储库?


阅读 779

收藏
2020-07-25

共1个答案

一尘不染

你感到困惑和混合Scripted Pipeline使用Declarative Pipeline,完全的差异在这里看到。但简短的故事:

  • 声明性管道 是管道DSL的新扩展(基本上是只有一步的管道脚本,带有参数的管道步骤(称为指令),这些指令应遵循特定的语法。这种新格式的要点是更严格,因此对于管道新手来说应该更容易,允许图形编辑等等。
  • 脚本化管道 是高级需求的后备。

因此,如果我们查看您的脚本,则首先打开一个node步骤,该步骤来自脚本化管道。然后使用stages,它是中pipeline定义的步骤的指令之一declarative pipeline。因此,您可以例如编写:

pipeline {
  ...
  stages {
    stage('HelloWorld') {
      steps {
        echo 'Hello World'
      }
    }
    stage('git clone') {
      steps {
        git clone "ssh://git@mywebsite.com/myrepo.git"
      }
    }
  }
}

因此,如果您想使用declarative pipeline它,那是必经之路。

如果要scripted pipeline,那么您可以编写:

node {
  stage('HelloWorld') {
    echo 'Hello World'
  }

  stage('git clone') {
    git clone "ssh://git@mywebsite.com/myrepo.git"
  }
}

例如:跳过阶段块。

2020-07-25