2016-05-10 5 views
6

Ich bin neu sowohl bei Jenkins als auch bei OpenShift, also bin ich ein wenig gefesselt.Jenkins auf Openshift kann Repo nicht klonen

Ich habe Jenkins eingerichtet und es auf mein GitHub Repo gerichtet, aber es kann es nicht klonen, weil ich nirgends finden kann, meine Git-Credentials zu speichern, und wenn ich in die Jenkins-Box ssh kann ich nicht zugreifen ~/.ssh, um neue Schlüssel zu erstellen oder die darin enthaltenen zu finden. Ein weiteres Problem kann auch sein, dass mein Git Repo privat ist.

Ich habe versucht google, aber es gibt nichts, was ich finden könnte. Wie kann ich Jenkins Zugriff auf mein privates Git Repo erlauben?

edit: ok ich fand in verwalten, dann Konfiguration einen Platz für den Benutzernamen und E-Mail. dann habe ich ssh'd in und verwendet ssh-keygen um den ssh key in .openshift_ssh zu erstellen und fügte dies zu github hinzu, zuerst als normaler ssh key, dann als deploy key und dann gleich in app-root/data /.ssh aber immer noch nichts

+0

Zusätzlich zu der "Bounty Nachricht": Ich benutze nicht Github, nur Code auf eine Fernbedienung auf OpenShift – strah

Antwort

5

Sie können "Building a project hosted on Github using an Openshift Jenkins instance" von Ramzi Maâlej versuchen und folgen.

Stellen Sie sicher, dass Openshift keine Schreibberechtigung für mehrere Ordner in einer Jenkins-Instanz erteilt, wie zum Beispiel: .ssh, .m2. (oder ssh würde sowieso nicht funktionieren, wegen rechts auf Ordnern "zu freizügig")
Das allein könnte die Quelle Ihrer Probleme sein, aber wenn das nicht genug ist, lesen Sie weiter.

Dann:

rhc ssh buildserver 
mkdir app-root/data/git-ssh 
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f $OPENSHIFT_DATA_DIR/git-ssh/id_rsa 

Stellen Sie Ihre $OPENSHIFT_DATA_DIR/git-ssh/id_rsa.pub-your GitHub account

Erstellen Sie ein Skript ssh-wrapper.sh, die die folgenden:

#!/bin/bash 

ID_RSA="$OPENSHIFT_DATA_DIR/git-ssh/id_rsa" 
KNOWN_HOSTS="$OPENSHIFT_DATA_DIR/git-ssh/known_hosts" 

ssh -o UserKnownHostsFile=$KNOWN_HOSTS -i $ID_RSA $1 $2 

Vergessen Sie nicht, es ausführbar zu machen: chmod +x ssh-wrapper.sh

Test es:

./ssh-wrapper.sh -T [email protected] 
Hi Jenkins! You've successfully authenticated, but GitHub does not provide shell access. 

Schließlich konfigurieren Jenkins:

zu Manage Jenkins > Configure System > Global Properties gehen und eine neue Umgebungsvariable erstellen genannt GIT_SSH, die auf den Ort bezieht, in dem Sie Ihre Wrapper erstellt.

+0

Pushing Obwohl es nicht genau das war, was ich fragte :-) Ich entschied mich jetzt, das Projekt auf BitBucket und Ihre Lösung funktioniert auch dafür. – strah

0

SSH in Ihre Jenkins App und nutzen Sie die öffentlichen in $OPENSHIFT_DATA_DIR/.ssh/jenkins_id_rsa.pub enthaltenen Schlüssel als Github/Gitlab/Bitbucket Schlüssel bereitstellen.