【问题标题】:using versions in Jenkins Pipeline shared libraries在 Jenkins Pipeline 共享库中使用版本
【发布时间】:2017-02-26 15:13:49
【问题描述】:

我将我的 Jenkins 流水线作为 groovy 脚本存储在 Jenkins 的共享库中。我想为不同的工作使用不同的版本。我称为sample_jenkins.groovy 的共享库脚本如下:

def call(body) {
  // evaluate the body block, and collect configuration into the object
  def config = [:]
  body.resolveStrategy = Closure.DELEGATE_FIRST
  body.delegate = config
  body()

  // now build, based on the configuration provided
  node {
    stage ('First Stage'){
      echo "This is first stage"
    }
    stage('Second Stage'){
      echo "This is second stage"
    }
  }
}

我已将 sharedLib 存储库中的不同版本标记为 v1.0v2.0。如果我想使用v1.0,我已经引用它如下@Library注释如下。

在我的工作中,我通过调用 groovy 脚本访问了共享库,并在其上方使用了注释 @Library('project-examples@v1.0'),如下图所示:

我在运行作业时遇到错误。 这是我看到的错误。

当我使用@Library('project-examples@master') 时,我得到了同样的错误。我在某个地方出错了吗?如果不是这种情况,我们应该如何使用版本控制?我如何告诉 Jenkins 使用哪个版本?谁能给我一个清楚的了解如何使用 jenkins 共享库中的版本?

【问题讨论】:

  • “我无法执行此操作”是什么意思?究竟会发生什么?您是否已确认“master”至少可以让您获得 master 头上的库?
  • 我在运行作业时遇到错误。是的,我也尝试过 master 并得到了同样的错误。
  • 这是我得到的错误:WorkflowScript: 2: unexpected token: my_jenkinsfile @ line 2, column 1. my_jenkinsfile{ ^ 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector .java:310) 在 org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150) 在 org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
  • 请发布您正在尝试执行的操作的更完整版本,包括您的共享库,并完成错误诊断。这显然与共享库版本无关。
  • 我已经编辑了更多细节的帖子。

标签: jenkins groovy jenkins-pipeline


【解决方案1】:

现在我记得很可能是什么问题。 Groovy 注释必须注释“某物”。如果你有一个 import 语句,这很方便,因为@Library 可以继续这样做,即使它们没有真正的关系。如果你没有 import 语句,那么你必须做一些看起来很奇怪的事情。你必须让它注释“_”。

再次查看 https://jenkins.io/doc/book/pipeline/shared-libraries/ 以获取此示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-25
    • 2018-01-28
    • 2018-02-23
    • 2019-02-23
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2012-09-05
    相关资源
    最近更新 更多