2013-06-25 18 views
16

Błąd:Wtyczka git dla Jenkinsa nie może sklonować repo z lokalnego komputera. kod błędu 128

Failed to connect to repository : Command "/usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD" returned status code 128: 
stdout: 
stderr: fatal: 'home/myuser/path/to/project' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly 

Próbowałem następujące:

  • chmod 777 do folderu repo (folder zawierający katalog .git)
  • chowned do jenkins:jenkins folder repo
  • próbował sklonować do innego folderu z tego lokalnego folderu repo: to działa!

Po uruchomieniu powyższego polecenia: /usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD na cmd otrzymuję gałęzie.

Moje pytania są następujące:

  1. dlaczego polecenie git ls-remote -h ... wywoływana, gdy powinno być git clone ...?
  2. Jak skonfigurować Jenkins plugin git pobrać kod z lokalnego repo

Moja okolica:

RHEL 5.9

Jenkins 1,519 zainstalowany jako usługa (bez kontenera WWW)

Git plugin

+4

Niezależnie od problemu, który próbujesz rozwiązać, ** 'chmod 777' jest okropna antywzorzec projektowy i potencjalny problem bezpieczeństwa ** Należy przywrócić tę zmianę ASAP.. – tripleee

+0

Zgadzam się! ... Proszę zobaczyć wybraną odpowiedź. – Vikram

Odpowiedz

15

Podczas instalowania Jenkins jako usługa domyślnie Jenkins nie tworzy katalogu użytkownika, jak w: /home/jenkins. Domyślny katalog domowy Jenkins jest ustawiony na /var/lib/jenkins. Z mojej pracy, jak można się spodziewać, jenkins ma problemy z dostępem do lokalnych zasobów z katalogu innych użytkowników.

Poruszyłem sklonowany repo pod Jenkins domyślnym katalogu domowym czyli pod /var/lib/jenkins tak Repository URL w Jenkins Projektu moja konfiguracja wygląda następująco: file:///${JENKINS_HOME}/repo/<myprojectname>

UPDATE: Powyższy działa dobrze ...ale znalazłem lepszy sposób to zrobić z this blog

Kroki są wymienione tutaj:

zajrzeć do /etc/init.d/jenkins skrypt. Istnieje kilka zmiennych $JENKINS zdefiniowanych . To powinno Cię doprowadzić do sysconfig dla jenkins, tj. /etc/sysconfig/jenkins. Zatrzymaj instancję Jenkins:

sudo /sbin/service jenkins stop

Zrób kopię zapasową

cp /etc/sysconfig/jenkins /etc/sysconfig/jenkins.bak

W tym pliku, zmień następującą właściwość:

$JENKINS_USER="<your desired user>"

zmienić właściciela wszystkich powiązanych Katalogi Jenkins:

chown -R <your desired user>:<your user group> /var/lib/jenkins

chown -R <your desired user>:<your user group> /var/cache/jenkins

chown -R <your desired user>:<your user group> /var/log/jenkins

Restart Jenkins i że błąd powinien zniknąć

sudo /sbin/service jenkins start

Ten błąd powinien odejść już teraz!

+1

dzięki .. działa po zmianie prawa własności tych katalogów na "jenkins" użytkownik – Varshith

+1

W najnowszym Ubuntu przynajmniej musisz przejrzeć inne zastosowania $ NAME w pliku sysconfig/defaults. Nawet odniesienie do pliku "jenkins.war" było w rzeczywistości $ NAME.war. –

3
  1. Jenkins używa polecenia git clone tylko po raz pierwszy, gdy obszar roboczy jest skonfigurowany dla projektu. Dalsze instancje używają polecenia git ls-remote.

  2. Miałem ten sam problem, gdy skonfigurowałem Jenkinsa. Zostało to rozwiązane przez zabawę z kluczami SSH. Wygląda to również na problem z konfiguracją. Sprawdź, czy klucze SSH są skonfigurowane dla konta Jenkins.

Zobacz także krok po kroku procedurę konfiguracji SSH w udostępnionym łączu. Może to nie dostarczyć dokładnego rozwiązania, ale może wskazać rozwiązanie.

http://oodlestechnologies.com/blogs/How-to-setup-Jenkins-With-Grails-on-Ubuntu

+0

dzięki za te wskazówki! – Vikram

+0

jak na twój link dodałem jenkins do listy sudo 'jenkins ALL = (ALL: ALL) ALL' Niestety, nadal nie jest w stanie klonować repo z lokalnego pliku ... jeszcze raz dziękuję! – Vikram

+0

Jeśli używasz Jenkins jako użytkownik systemu operacyjnego, czy sprawdziłeś, czy masz klucze SSH umieszczone pod katalogiem% userprofile% –

7

Minęło trochę czasu, odkąd zadawano to pytanie, ale miałem ten problem dzisiaj i jest bardzo mało zasobów. Najprawdopodobniej dlatego, że ludzie zwykle łączą się z repozytoriami git.

Sprawdziłem przy użyciu strace, co dokładnie zrobił Jennkins i tak, to był problem z uprawnieniami.

Ale ja go rozwiązać w prostszy sposób niż Odpowiedź # 2 - dodając Jenkins do grupy serwerów git - w moim przypadku, git1: root# gpasswd -a jenkins git1 root# service jenkins restart

+1

Wielkie dzięki! Dodałem już Jenkinsa do grupy git, ale musiałem też zrestartować usługę Jenkins, którą próbowałem od odczytać twoją odpowiedź, i zadziałało! Teraz używam /opt/git/repo.git w mojej konfiguracji Jenkinsa i pozbyłem się kodu błędu 128. – B2F

5

biegnę Jenkins na Windows i miał ten sam problem . Byłem w stanie rozwiązać ten problem, logując się do serwisu Jenkins jako mój użytkownik na moim laptopie.

(Windows 7)

  1. Otwórz Menedżer zadań (Ctrl + Shift + ESCAPE),
  2. Przejdź do Services zakładka
  3. Kliknij Usługi ... przycisk
  4. Find "Jenkins" na liście usług
  5. prawym przyciskiem myszy "Jenkins" i kliknij Properties
  6. Kliknij Logowanie W karcie Properties Jenkins okna
  7. Wybierz To konto: pod Zaloguj się jako:
  8. Wprowadź swoją nazwę użytkownika i hasło
  9. Kliknij OK
  10. Uruchom ponownie usługę Jenkins
  11. Następnie Boba wuj.
+0

jeśli używasz "java -jar jenkins.war", to jest to konieczne? thx :) –

+0

@EnriqueSanMartin: Prawdopodobnie nadal będziesz. Wszystko to ma związek z uprawnieniami użytkownika uruchamiającego proces Java. –

0

Uważam, że inne rozwiązania są dla mnie trochę "hacky". To, co zrobiłem, to przeniesienie folderu domowego Jenkins z katalogu/Users/Shared/to/Users/[myacccount] /. W ten sposób mój Jenkins będzie miał dostęp do moich repozytoriów i mojego zestawu SDK do Androida (ponieważ tam używam Jenkinsa). Następnie zmień zmienną środowiskową JENKINS_HOME. Zrobiłem to, wpisując JENKINS_HOME w moim .bash_profile (ale są inne sposoby, aby to zrobić).

Uwaga: Używam OSX

Powiązane problemy