Ich versuche, Gitlab (6.5.1) auf einem frischen sauberen Server einzurichten. Alles scheint zu funktionieren, aber Git ist nicht in der Lage, auf ein Projekt zu pushen. Befolgen Sie die Befehle von der neu erstellten Projektseite und drücken Sie auf die Fernbedienung über ssh:
$ git push -u origin master
fatal: Could not read from remote repository.
Please make sure you have the correct access
rights and the repository exists.
Dies scheint ein recht verbreitetes Problem zu sein. Leider scheint es eine Reihe möglicher Ursachen zu geben, und keine davon scheint zu stimmen. Ab Ausgabe 3424 einer alten Version und verschiedenen anderen Online-Quellen habe ich die folgenden Vorschläge gesehen und geprüft:
Übrig gebliebene SSH-Schlüssel
Dies ist ein sauberes Setup ohne Reste. Mein Schlüssel wurde der Datei mit den autorisierten Schlüsseln ordnungsgemäß hinzugefügt und ist der einzige aufgeführte Schlüssel.
Wenn Sie ssh mit der Debug-Protokollierung ausführen, werden Fehler im Zusammenhang mit Ruby-Umgebungsvariablen angezeigt.
Meins kommt sauber hoch. SSH-Debug zeigt eine erfolgreiche Verbindung. Alles, was mit dem Authentifizierungs-Handshaking zu tun hat, ist normal. Dies ist das Ende der Ausgabe:
debug1: Sending command: git-receive-pack 'username/reponame.git' debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK
Probleme mit der Gitlab-Shell-Umgebung.
Im Gegensatz zu vielen anderen mit derselben Fehlermeldung oben gibt mein gitlab-shell-Überprüfungsskript eine saubere Gesundheitsbescheinigung zurück:
% sudo -u gitlab -H ~gitlab/gitlab-shell/bin/check Check GitLab API access: OK Check directories and files: /var/lib/gitlab/repositories: OK /var/lib/gitlab/.ssh/authorized_keys: OK Test redis-cli executable: redis-cli 2.8.5 Send ping to redis server: PONG
Neustart {Einhorn, Sidekiq, Redis}
Die Berichte, dass ein Neustart eines oder mehrerer Dienste dies beseitigt, scheinen hier nicht zuzutreffen. Dies ist kein vorübergehendes Problem, das durch das erneute Laden eines Daemons behoben wird.
Das Repo wird nicht physisch erstellt
Aber es ist. Bei jedem ersten Mal wird das Bare-Git-Repo-In
~gitlab/repositories/username/reponame.git
jedes Mal erstellt und scheint die richtigen Berechtigungen zu haben.Gitlab-Shell kann nicht mit dem API-Server kommunizieren, weil A) DNS-Probleme, B) falsche IP- / Port- / Schnittstellenbindung, C) kein / kein abschließender Schrägstrich vorhanden sind.
Das Überprüfungsskript besagt, dass der API-Zugriff in Ordnung ist.
Ich verwende kein nginx, daher ist das damit verbundene IP-Bindungsproblem nicht zutreffend.
Ich habe beides probiert
*:8080
und127.0.0.1:8080
für den Hörwert inunicorn.yml
.Darüber hinaus habe ich verschiedene Iterationen von localhost, 127.0.0.1 und dem vollqualifizierten Domain-Namen (DNS-Auflösung in Ordnung) mit und ohne Schrägstriche
shell.yml
ohne Erfolg ausprobiert. Ich habe auch versucht, dies direkt mit dem Einhorn-Server auf Port 8080 anstelle des Apache SSL / Proxy-Hosts auf Port 80 zu verbinden. Nichts scheint einen Unterschied zu machen. Mein Zertifikat ist nicht selbst signiert und funktioniert für Browser einwandfrei, aber ich habe esself_signed_cert: true
trotzdem versucht . Nichts.Die gemeldeten Git-Pfade sind falsch. Fügen Sie einen vollständig qualifizierten Pfad von der Startseite des Gitlab-Benutzers hinzu.
Dies scheint ein legitimer Vorschlag zu sein, wenn die Gitlab-Shell dies nicht bereits korrigiert, aber ich habe erfolglos versucht,
git remote add origin gitlab@server:username/reponame.git
zu "git remote add origin gitlab @ server: repositories / username / reponame.git" zu wechseln. Gleicher Fehler.
Dies scheint die Litanei der vorgeschlagenen Lösungen zu sein, aber keine davon scheint richtig zu sein. Hinweis: Ich kann über http pushen. Die Anmeldeaufforderung akzeptiert meinen ldap-Benutzernamen und mein Passwort und akzeptiert einen Push. Dies ist nur ein Problem bei der Verwendung von SSH. Das Testen nur des SSH-Login-Teils mit ssh -T gitlab@server
funktioniert einwandfrei.
Was könnte diesen Fehler sonst noch verursachen?
Wie geht man beim Debuggen eines solchen Problems in gitlab vor? Es scheint überhaupt nichts Relevantes in ~gitlab/gitlab-shell/gitlab-shell.log
. Wo wäre eine aussagekräftigere Fehlermeldung zu finden?