2016-07-19 15 views
2

Ich bin sicher, dass ich etwas Dummes mache, dass die meisten von euch an, lachen werden, aber ich kann nicht scheinen, Jenkins mit Multi zu bauen - Leitungsrohrleitung. Ich habe das Problem auf das Wesentliche reduziert. Eine einzelne Verzweigung (Master) mit einem leeren Knoten JenkinsFile. Ich habe ein zweites Projekt, ein Standard-Freestyle-Projekt, das im Grunde läuft true, um zu überprüfen, dass es baut.Kann nicht scheinen, Multi-Zweig Pipeline zu bekommen mit JenkinsFile arbeitet

Hier ist meine Freestyle-Konfiguration:

Repository URL: ssh://[email protected]:7999/dw/foobar.git 
Credentials: None 

BUILD 
    Execute Shell 
     Command: True 

Und die Build funktioniert. (Grundsätzlich sind die Repo-Kontrollen, true läuft, und auch der Bau als Erfolg berichtet

Hier ist meine mehrfach verzweigten Konfiguration bauen.

BRANCH SOURCES 
    Project Repository: ssh://[email protected]:7999/dw/foobar.git 
    Credentials: None 

BUILD CONFIGURATION 
    Mode: By JenkinsFile 

Wenn ich Zweig Indizierung zu tun, erhalte ich einen Fehler und das Protokoll sagt:

node { 
} 
:

Started 
Setting origin to ssh://[email protected]: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 

Mein JenkinsFile sagt (die in der Wurzel des Repo sitzt)

Das funktioniert, wenn ich keine Multi-Branch-Pipeline mache und diese einfach als Jenkins-Build-Skript einfüge. Ich möchte nur bestätigen, dass Jenkins meine JenkinsFile abholen kann.

Antwort

1

das Problem gefunden: Sie must Anmeldeinformationen auch festgelegt haben, wenn Sie keine Anmeldeinformationen verwenden müssen. Der Freestyle-Job hat keine Anmeldeinformationen festgelegt und hat Zugriff auf dieses bestimmte Git-Repository. In unserem alten Jenkins Server verwenden wir ssh:// und Setup öffentliche/private Schlüssel im $HOME/.ssh Verzeichnis für unsere Git-Projekte. Keines unserer Git-Projekte verwendet Anmeldedaten und benötigt sie nicht.

Allerdings hat mehrfach verzweigten Pipeline Anmeldeinformationen erforderlich sind - und ein Nicht-Null-JenkinsFile. Als ich schließlich die Berechtigung gesetzt, hatte die Arbeit, die ich zumindest einen Schritt in den JenkinsFile hinzuzufügen, oder sonst würde es nicht einen einzigen Build auslösen.)