2010-05-10 6 views
11

Hat jemand git und ControlControl installiert und CruiseControl von GitHub auf einem Windows 2003 Server ziehen.Get CruiseControl zu sprechen mit github mit dem richtigen öffentlichen Schlüssel

Ich bekomme immer 'public key errors (access denied)' - Was gut ist, nehme ich an, da dies bestätigt, dass Git mit GitHub redet.
Was jedoch nicht gut ist, ist, dass ich nicht weiß, wo die rsa-Schlüssel installiert werden, damit sie vom laufenden Prozess (git im Kontext von cc.net) abgeholt werden.

Jede Hilfe würde mir eine Menge Haare sparen!

Ich habe versucht, die Schlüssel zu installieren;

c:\Program Files\Git.ssh 

Wodurch läuft git bash und cd ~ nehmen Sie mich an: c:\Program Files\Git

Aktuelle Fehler von CC.net ist Fehlermeldung:

ThoughtWorks.CruiseControl.Core.CruiseControlException: 
    Source control operation failed: Permission denied (publickey). fatal: 
    The remote end hung up unexpectedly . 
    Process command: C:\Program Files\Git\bin\git.exe fetch origin 

Vielen Dank im Voraus

Antwort

2

Es hängt wirklich von den tatsächlichen Benutzer auf dem CruiseControl-Server deklariert Eis, um die Jobs auszuführen.

Betrachtet man die Fehlermeldung "Permission denied (publickey)" wird in der Regel von ssh keys not found in %HOME%/.ssh verursacht.

Also selbst wenn cd ~ Sie zu einem Verzeichnis führt, das kann nicht das sein, das vom CruiseControl-Prozess verwendet wird.

6

Hier sind meine Notizen, damit CruiseControl.net mit einem Github-Repository (unter Windows) arbeiten kann. Ich führe msysgit 1.7.3.1 auf Windows 7 aus. Ich richte ccnet ein, um als Dienst zu laufen.

Die Strategie, der ich folge, ist ein Benutzerkonto erstellen, das der Ccnet-Dienst verwenden wird. Beginnen Sie damit, dass der Build zum angemeldeten Benutzer als Benutzer der Tempomatkonsole eingeloggt wird. Danach funktioniert das Einrichten des Dienstkontos, das mit diesem Benutzerkonto ausgeführt wird.

Zuerst richten Sie Ihre SSH-Schlüssel für diesen Benutzer so ein, wie Sie es mit einem anderen Benutzer tun würden. Verwenden Sie jedoch keine Passphrase. Das führt dazu, dass ccnet auf Benutzereingaben warten muss. (github ssh Schlüsselverwaltung hat Hilfe, http://help.github.com/msysgit-key-setup/)

Sie müssen auch die Repro irgendwo klonen, während dieser Benutzer angemeldet ist. Es wird eine Liste vertrauenswürdiger Hosts gespeichert, dies stellt sicher, dass der Host auf dieser Liste ist (ich denke mit Ihren .ssh Schlüsseln). Wenn es nicht auf der Liste ist, wird cruisecontrol Zeitüberschreitung, da git darauf wartet, dass Sie sagen, wenn Sie dem Host vertrauen.

Gewähren Sie dem Benutzer Lese-/Schreibberechtigungen für den Ordner, in dem der Tempomat installiert ist. Geben Sie dem Benutzer außerdem die Berechtigung, die von Ihnen verwendeten Build-Ordner zu bearbeiten, unabhängig von den Ressourcen, auf die Ihr Build möglicherweise zugreifen muss.

Die Konfigurationsdatei für die Geschwindigkeitsregelanlage muss einen Git-Source-Control-Block verwenden.
Here ist die Dokumentation auf diesem Block. Hier ist ein Beispiel:

<project name="NJasmine"> 

    <sourcecontrol type="git"> 
     <repository>git://github.com/fschwiet/DreamNJasmine.git</repository> 
     <branch>master</branch> 
     <autoGetSource>true</autoGetSource> 
     <executable>$(gitpath)</executable> 
     <tagOnSuccess>false</tagOnSuccess> 
     <commitBuildModifications>false</commitBuildModifications> 
     <commitUntrackedFiles>false</commitUntrackedFiles> 
     <workingDirectory>c:\build\NJasmine.git</workingDirectory> 
     <timeout>60000</timeout> 
    </sourcecontrol> 
    ... 
</project> 

Sie werden bemerken, ich eine Variable für den gitPath verwenden, dass die Art, wie ich es nur einmal definieren.Meine Haupt-ccnet-Konfigurationsdatei verweist auf das Obenstehende, es sieht ungefähr wie das Folgende aus. Durch Bezugnahme auf eine externe Konfigurationsdatei kann ich die meisten meiner Ccnet config in der Quellcodeverwaltung halten:

<!DOCTYPE cruisecontrol [ 
    <!ENTITY njasmine SYSTEM "file:c:\src\njasmine\ccnet.config.xml"> 
]> 
<cruisecontrol xmlns:cb="urn:ccnet.config.builder"> 

    <cb:define gitpath="C:\Program Files (x86)\Git\cmd\git.cmd"/> 

    &njasmine; 
</cruisecontrol> 

Hinweis ich den git Pfad auf „C: \ Program Files (x86) \ Git \ cmd \ git.cmd "und nicht" C: \ Programme (x86) \ Git \ bin \ git.exe ". Ich konnte bin \ git.exe niemals zum Laufen bringen. Ich fand auch, dass die schreibgeschützten URLs in einem gemeinsam genutzten Repository leichter zu bearbeiten sind als die Lese-/Schreib-URLs, also benutze die schreibgeschützten URLs.

+0

Danke dafür. – 0x1mason