2016-04-07 18 views
6

Ho un server Jenkins (2.0 Beta-2) in esecuzione su Windows 2012 R2 x64, con una nuova build configurata per ottenere i file di origine da TFS GIT (2013). Ho già installato la versione di Git per Windows fornita da Microsoft, quella che afferma di risolvere il problema di autenticazione tra GIT CLI e TFS GIT.Bloccato a causa del problema di autenticazione

mio .gitconfig si presenta così:

[credential] 
    helper = manager 
    interactive = never 
    validate = false 
    integrated = true 

Jenkins è in esecuzione con un account di servizio, senza alcuna sessione interattiva. Questo account di servizio è membro del gruppo di amministrazione locale sul build server ed è configurato correttamente come contributore su TFS. Il problema qui è che quando il Jenkins costruire avvia, si blocca durante il seguente comando:

git.exe -c core.askpass=true fetch --tags --progress http://my.tfs.server:8080/tfs/collection/_git/MyProject +refs/heads/*:refs/remotes/origin/* 

Per me, sembra chiaro che è bloccato, per chiedere le credenziali, anche se ho impostato in modo da utilizzare il git -credential-manager. Ho anche provato a memorizzare le credenziali dell'account di servizio, utilizzando il comando "store" dal GCM, ma non riesce con un errore strano (la sintassi da utilizzare è piuttosto confusa, quindi è possibile che stia facendo qualcosa di sbagliato mentre provandolo).

+0

Ho avuto lo stesso problema Mi dispiace dirvi che la soluzione per me era passare a un server Ubuntu o provare a far funzionare Jenkins all'interno di un contenitore mobile entrambi funziona per me –

+0

questo problema è stato contrassegnato come Non risolverà [2] a causa della compatibilità della versione di Git –

+0

@ ZeRubeus hai il link a questo problema? –

risposta

34

Per noi, disattivare la variabile git config "credential.helper" era la risposta. I nostri lavori sono stati appesi nello stesso punto esatto dopo l'aggiornamento da Git 2.5.0 a 2.8.4, e il nostro servizio di Jenkins è in esecuzione come sistema locale, così facendo il seguente eliminare la variabile:

git config --global --unset credential.helper 
git config --system --unset credential.helper 

Nessun riavvio o disinstallazione/reinstallare era necessario. Dopo di ciò, i build di Git sono riusciti.

Il plug-in Jitkins Git Client sembra fare affidamento sulla variabile GIT_ASKPASS impostata, che secondo l'helper di credenziali documentation viene utilizzata quando non sono definiti helper di credenziali.

+0

Per coloro che usano Chocolatey per installare git (su Windows), ora c'è un pacchetto [git-disable-gcm] (https://chocolatey.org/packages/git-disable-gcm/) che esegue il comando --system sopra. –

+0

Grazie per questo! L'esecuzione di questi comandi ha risolto un problema di timeout durante 'git fetch' con la nostra installazione di Jenkins che utilizza repository Git ospitati sul nostro server TFS 2015 on-prem (http basic auth). – Eccentropy

+0

@NickJones, tu sei l'uomo! – Ivan

2

Dopo aver scavato per un po 'ho scoperto che non stavo usando la versione corretta di Git per Windows. È noto che Git "standard" per Windows non funziona molto bene con TFS GIT, principalmente a causa della mancanza del supporto Kerberos. Pensavo di usare la versione giusta, ma non lo ero.

Come parte della configurazione dell'ambiente di compilazione, ho installato Visual Studio 2015. Insieme con esso, si installa una versione incompatibile di Git per Windows, quello che non funziona con TFS GIT (davvero non lo so sapere perché!). Anche dopo aver installato Git Credential Manager for Windows, la versione GIT installata rimane come quella incompatibile.

Per farla breve: ho dovuto disinstallare manualmente GIT e GCM e installare solo GCM, che installerà la versione corretta del client GIT durante l'installazione.

Dopodiché, riavvia il server e le cose dovrebbero funzionare "magicamente".

+1

come ho detto che era un problema di versione git :) –

+0

@ZeRubeus dal tuo commento sembrava che questo non avesse un modo di funzionare, che non è il caso. Sta funzionando come mi aspettavo ora. –