似乎无法让多分支管道与 JenkinsFile 一起工作
Can't seem to get Multi-branch Pipeline to work with JenkinsFile
我确定我正在做一些你们大多数人会嘲笑的愚蠢行为,但我似乎无法让 Jenkins 使用多分支管道进行构建。我已将问题简化为本质。具有空节点 JenkinsFile 的单个分支(master)。我有第二个项目,一个标准的 Freestyle 项目,基本上运行 true
来验证它的构建。
这是我的自由式配置:
Repository URL: ssh://git@rgit.vegicorp.net:7999/dw/foobar.git
Credentials: None
BUILD
Execute Shell
Command: True
构建成功。 (基本上,repo 签出,true
运行,并且构建被报告为成功。
这是我的多分支构建配置:
BRANCH SOURCES
Project Repository: ssh://git@rgit.vegicorp.net:7999/dw/foobar.git
Credentials: None
BUILD CONFIGURATION
Mode: By JenkinsFile
当我做分支索引时,我遇到了失败,日志显示:
Started
Setting origin to ssh://git@cmstash.travelclick.net:7999/dw/foobar.git
Fetching origin...
FATAL: Failed to recompute children of test » Jenkinsfile Test \
java.lang.IllegalStateException: Cannot open session, connection is \
not authenticated.
at com.trilead.ssh2.Connection.openSession(Connection.java:1127)
at org.jenkinsci.plugins.gitclient.trilead.TrileadSession.exec(TrileadSession.java:32)
at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:262)
at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:161)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1138)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:130)
at org.jenkinsci.plugins.gitclient.JGitAPIImpl.fetch(JGitAPIImpl.java:678)
at jenkins.plugins.git.AbstractGitSCMSource.retrieve(AbstractGitSCMSource.java:174)
at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146)
at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294)
at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157)
at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:410)
Finished: FAILURE
我的 JenkinsFile(位于 Repo 的根目录中)说:
node {
}
这在我不执行多分支管道而只是将其作为 Jenkins 构建脚本放入时有效。我只想验证 Jenkins 是否能够获取我的 JenkinsFile。
发现问题:您必须设置凭据,即使您不需要使用凭据。自由式作业没有设置凭据,并且可以访问这个特定的 Git 存储库。在我们的旧 Jenkins 服务器中,我们在 $HOME/.ssh
目录中为我们的 Git 项目使用 ssh://
和设置 public/private 键。我们的 Git 个项目中的 None 使用凭据并且不需要它们。
但是,Multibranch Pipeline 确实需要凭据——以及非空 JenkinsFile
。当我最终设置凭据时,我必须在 JenkinsFile
中至少添加一个步骤,否则它不会触发单个构建。)
我觉得你也和我一样在打BUG..
{`https://issues.jenkins-ci.org/browse/JENKINS-35567
尝试添加 jgit 但没有帮助
`}
你解决了吗?
我确定我正在做一些你们大多数人会嘲笑的愚蠢行为,但我似乎无法让 Jenkins 使用多分支管道进行构建。我已将问题简化为本质。具有空节点 JenkinsFile 的单个分支(master)。我有第二个项目,一个标准的 Freestyle 项目,基本上运行 true
来验证它的构建。
这是我的自由式配置:
Repository URL: ssh://git@rgit.vegicorp.net:7999/dw/foobar.git
Credentials: None
BUILD
Execute Shell
Command: True
构建成功。 (基本上,repo 签出,true
运行,并且构建被报告为成功。
这是我的多分支构建配置:
BRANCH SOURCES
Project Repository: ssh://git@rgit.vegicorp.net:7999/dw/foobar.git
Credentials: None
BUILD CONFIGURATION
Mode: By JenkinsFile
当我做分支索引时,我遇到了失败,日志显示:
Started
Setting origin to ssh://git@cmstash.travelclick.net:7999/dw/foobar.git
Fetching origin...
FATAL: Failed to recompute children of test » Jenkinsfile Test \
java.lang.IllegalStateException: Cannot open session, connection is \
not authenticated.
at com.trilead.ssh2.Connection.openSession(Connection.java:1127)
at org.jenkinsci.plugins.gitclient.trilead.TrileadSession.exec(TrileadSession.java:32)
at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:262)
at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:161)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1138)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:130)
at org.jenkinsci.plugins.gitclient.JGitAPIImpl.fetch(JGitAPIImpl.java:678)
at jenkins.plugins.git.AbstractGitSCMSource.retrieve(AbstractGitSCMSource.java:174)
at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146)
at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294)
at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157)
at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:410)
Finished: FAILURE
我的 JenkinsFile(位于 Repo 的根目录中)说:
node {
}
这在我不执行多分支管道而只是将其作为 Jenkins 构建脚本放入时有效。我只想验证 Jenkins 是否能够获取我的 JenkinsFile。
发现问题:您必须设置凭据,即使您不需要使用凭据。自由式作业没有设置凭据,并且可以访问这个特定的 Git 存储库。在我们的旧 Jenkins 服务器中,我们在 $HOME/.ssh
目录中为我们的 Git 项目使用 ssh://
和设置 public/private 键。我们的 Git 个项目中的 None 使用凭据并且不需要它们。
但是,Multibranch Pipeline 确实需要凭据——以及非空 JenkinsFile
。当我最终设置凭据时,我必须在 JenkinsFile
中至少添加一个步骤,否则它不会触发单个构建。)
我觉得你也和我一样在打BUG..
{`https://issues.jenkins-ci.org/browse/JENKINS-35567
你解决了吗?