2010-05-10 5 views
11

Qualcuno ha installato git e ControlControl e ha ottenuto CruiseControl per estrarre GitHub da un server Windows 2003.Ottieni CruiseControl per parlare con github con la chiave pubblica corretta

Continuo a ricevere 'public key errors (access denied)' - Il che è buono, suppongo che confermi che git stia parlando con GitHub.
Tuttavia, ciò che non va bene è che non so dove installare le chiavi rsa in modo che vengano rilevate dal processo in esecuzione (git nel contesto di cc.net).

Qualsiasi aiuto mi avrebbe risparmiato un sacco di capelli!

Ho provato a installare le chiavi in;

c:\Program Files\Git.ssh 

Per cui esecuzione git bash e cd ~ portarmi a: c:\Program Files\Git

errore di corrente da CC.net è il messaggio di errore:

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 

Grazie in anticipo

risposta

2

E 'davvero dipende dalla reale utente dichiarato sul servizio CruiseControl ghiaccio per eseguire i lavori.

Considerando il messaggio di errore "Permission denied (publickey)" è in genere causato da ssh keys not found in %HOME%/.ssh.

Quindi, anche se cd ~ porta a una directory, potrebbe non essere quella utilizzata dal processo CruiseControl.

6

Ecco le mie note per far funzionare CruiseControl.net con un repository github (su Windows). Sto eseguendo msysgit 1.7.3.1 su Windows 7. Ho configurato ccnet per funzionare come un servizio.

La strategia che seguo è creare un account utente che verrà utilizzato dal servizio ccnet. Inizia facendo in modo che la build funzioni correttamente come utente che esegue la console di controllo automatico della velocità. Dopo che funziona, ho impostato l'account di servizio per l'esecuzione utilizzando quell'account utente.

Prima di tutto, impostare le chiavi SSH per quell'utente proprio come si farebbe con un altro utente. Tuttavia, non utilizzare una passphrase. Ciò causerà il timeout di ccnet in attesa dell'input dell'utente. (Github ssh key management ha help, http://help.github.com/msysgit-key-setup/)

Avrete anche bisogno di clonare la repro da qualche parte mentre si è connessi a quell'utente. Viene mantenuto un elenco di host attendibili, questo assicura che l'host si trovi in ​​quella lista (penso con le tue chiavi .ssh). Se non è nella lista, cruisecontrol scadrà quando git ti aspetta per dire se ti fidi dell'host.

Concedere all'utente le autorizzazioni di lettura/scrittura per la cartella in cui è installato il controllo velocità di crociera. Inoltre, concedi all'utente le autorizzazioni per modificare qualsiasi cartella di build che usi, a prescindere dalle risorse a cui la tua build potrebbe aver bisogno di accedere.

Il file di configurazione del controllo automatico della velocità deve utilizzare un blocco git sourcecontrol.
Here 's documenti su quel blocco. Ecco un esempio:

<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> 

Noterete che uso una variabile per l'gitPath, in questo modo ho solo definisco una volta.Il mio file di configurazione ccnet principale in realtà fa riferimento a quanto sopra, sembra qualcosa di simile al seguente. Con riferimento a un file di configurazione esterno, posso mantenere la maggior parte del mio CCNet config nella controllo del codice sorgente:

<!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> 

Avviso ho impostato il percorso git a "C: \ Program Files (x86) \ Git \ cmd \ git.cmd "e non" C: \ Programmi (x86) \ Git \ bin \ git.exe ". Non potrei mai ottenere bin \ git.exe per funzionare. Ho anche trovato che gli url di sola lettura su un repository condiviso sono più facili da utilizzare degli url di lettura/scrittura, quindi usa quelli di sola lettura.

+0

Grazie per questo. – 0x1mason

Problemi correlati