Jenkins 如何签出除主管道外的共享库管道
我的詹金斯大师没有遗嘱执行人而且由于我们公司的詹金斯设计,也不可能有遗嘱执行人。我们有两个工作节点。当我添加管道共享库时,默认情况下Jenkins尝试在master中签出,但由于明显的原因失败,因为它找不到git,因为它在Jenkins master中不可用Jenkins 如何签出除主管道外的共享库管道,jenkins,groovy,jenkins-pipeline,jenkins-groovy,Jenkins,Groovy,Jenkins Pipeline,Jenkins Groovy,我的詹金斯大师没有遗嘱执行人而且由于我们公司的詹金斯设计,也不可能有遗嘱执行人。我们有两个工作节点。当我添加管道共享库时,默认情况下Jenkins尝试在master中签出,但由于明显的原因失败,因为它找不到git,因为它在Jenkins master中不可用 Cloning repository git@github.com:Test/jenkins-pipeline-shared.git > git init /var/lib/jenkins/workspace/rp-pipe_PR
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文件保存在同一个repo中,并将库导入到JenkinsFile中,但似乎它对我也不起作用。我试过了,但詹金斯无法识别模块
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')
,但它不起作用。詹金斯只是失败了,没有犯任何错误
我认为但不知道如何实施的解决方案:
您可以尝试先获取一个工作程序,然后从以下位置加载库:
pipeline {
agent any
stages {
stage('Init') {
steps {
library 'my-fancy-library'
}
}
}
}
共享库将签出到您的工作区,具体取决于您的使用情况。如果您的工作区位于工作节点上,则它将存在于该工作节点上。我从Jenkins文件管理我的节点。签出发生在它到达管道中的
代理{label'!master'}
之前。现在,我可以看到签出已在工作节点中完成。谢谢,但我还是收到了相同的错误-原因是:java.io.IOException:无法运行程序“git”(在目录“/var/lib/jenkins/workspace/rp-pipe\PR中)-675@libs/slackNotify”):错误=2,没有这样的文件或目录
。我检查了哪个git
,并且在路径中有git。我不知道为什么它仍然抱怨我注意到Jenkins试图在var/lib/
中签出库回购,当然它没有这样做的权限。为什么它不会像其他repo一样尝试在/home/ec2 user/workspace
中克隆repo?我认为这是Jenkins运行的工作区。接受答案,因为它确实解决了我最初的问题,即签出到工作节点。是的,/var/lib/
是安装位置,但工作区是/home/ec2 user/workspace
,并且希望git签出在这里进行,因为git签出的共享库是在此目录中进行的。