如何检出除主库之外的共享库管道

时间:2019-12-05 20:12:23

标签: jenkins groovy jenkins-pipeline jenkins-groovy

我的Jenkins管理员没有执行者,并且由于我们公司拥有的Jenkins的设计而无法执行。我们有2个工作节点。当我添加Pipeline共享库时,默认情况下,Jenkins尝试在master中检出,由于明显的原因而失败,因为它找不到git,因为在Jenkins master中不可用。

Cloning repository git@github.com:Test/jenkins-pipeline-shared.git


> git init /var/lib/jenkins/workspace/rp-pipe_PR-675@libs/slackNotify # timeout=10
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Could not init /var/lib/jenkins/workspace/rp-pipe_PR-675@libs/slackNotify

我不明白为什么Jenkins甚至可以尝试检出master中的共享库,因为master甚至没有执行者。

我查看了其他人的意见,但我的事情止于试图结帐的地步。我该如何克服?我以为将共享库的Groovy文件保存在同一回购中,并将该库导入JenkinsFile,但似乎对我也不起作用。我尝试了this,但詹金斯无法识别modules

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 14: Expected a step @ line 14, column 17.
modules.sendNotifications = load "vars/sendNotifications.groovy"

我尝试了libraryResource ('vars/sendNotifications.groovy'),但是没有用。詹金斯只是失败而没有抛出任何错误。

我认为但不知道如何实现的解决方案

  1. 应该运行我的工作的节点中的Checkout管道库
  2. 忽略管道库,并在同一存储库中创建一个Groovy文件,然后将其导入JenkinsFile中。

1 个答案:

答案 0 :(得分:1)

您可以先尝试获取一个工作人员,然后再从内部加载该库:

pipeline {
  agent any
  stages {
    stage('Init') {
      steps {
        library 'my-fancy-library'
      }
    }
  }
}