2017-06-28 4 views
0

Ich möchte unseren Jenkins Backup-Prozess mit einem Jenkins-Job automatisieren. Ich habe einen Freestyle-Job in Jenkins als Job für die Sicherung erstellt. Das Ziel ist, Jenkins Home-Verzeichnis auf Bitbucket gesichert zu haben.Jenkins Freestyle-Job für Jenkins Backups

  • Der Job ist auf den Master-Knoten beschränkt.
  • Das Jenkins-Home-Verzeichnis wurde als Git-Repository initialisiert.
  • Der SSH-Schlüssel für den Root-Benutzer auf dem Rechner, auf dem Jenkins installiert ist, wurde zur Liste der SSH-Schlüssel für ein Bitbucket-Konto mit Zugriff auf das Backup-Repository hinzugefügt.

Es gibt einen einzigen Build-Schritt für diesen Auftrag definiert:

cd /var/lib/jenkins 
git add --all 
git commit -m "Jenkins automated backup change" || true 
git push 

Wenn ich den Job bauen, erhalte ich die folgende in der Konsolenausgabe für den ausgefallenen Job:

Started by user anonymous 
Building on master in workspace /var/lib/jenkins/jobs/JenkinsBackup/workspace 
[workspace] $ /bin/sh -xe /tmp/hudson7036134295202405264.sh 
+ cd /var/lib/jenkins 
+ git add --all 
+ git commit -m Jenkins automated backup change 

*** Please tell me who you are. 

Run 

    git config --global user.email "[email protected]" 
    git config --global user.name "Your Name" 

to set your account's default identity. 
Omit --global to set the identity only in this repository. 

fatal: empty ident name (for <[email protected](none)>) not allowed 
+ true 
+ git push 
warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

    git config --global push.default matching 

To squelch this message and adopt the new behavior now, use: 

    git config --global push.default simple 

When push.default is set to 'matching', git will push local branches 
to the remote branches that already exist with the same name. 

In Git 2.0, Git will default to the more conservative 'simple' 
behavior, which only pushes the current branch to the corresponding 
remote branch that 'git pull' uses to update the current branch. 

See 'git help config' and search for 'push.default' for further information. 
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode 
'current' instead of 'simple' if you sometimes use older versions of Git) 

Host key verification failed. 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 
Build step 'Execute shell' marked build as failure 
Warning: this build has no associated authentication, so build permissions may be lacking, and downstream projects which cannot even be seen by an anonymous user will be silently skipped 
Finished: FAILURE 

Dies scheint ein seltsamer Fehler zu sein, denn wenn ich den git config -l Befehl innerhalb des Jenkins Home-Verzeichnisses ausführe, ergibt sich folgende Information:

[email protected] 
user.name=Jenkins Automated Backup 
core.repositoryformatversion=0 
core.filemode=true 
core.bare=false 
core.logallrefupdates=true 
remote.origin.url=ssh://[email protected]###.##.##.###:7999/at/jenkinsbackup.git 
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* 
branch.master.remote=origin 
branch.master.merge=refs/heads/master 

Was kann hier vorgehen? Die Fehlermeldung, die in der Konsolenausgabe für den Job angegeben wird, ist nicht sehr klar in Bezug auf die genaue Ursache des Problems.

Vielen Dank im Voraus für jede Hilfe!

Antwort

0

Ist es möglich, dass Sie Ihre Jenkins-Instanz mit einem anderen Benutzer (z. B. root) ausführen?

Sie können die Variable user.name in http://<yourJenkinsURL>/systemInfo überprüfen.

+0

Wow, das sind großartige Informationen! Bei der Behebung dieses Problems war eine der Sackgassen, in die ich hineingeraten war, herauszufinden, auf welchem ​​Benutzer mein Jenkins-Server versucht, die Shell-Befehle auszuführen. Ich werde jetzt untersuchen, dass ich diese Informationen habe und poste die Ergebnisse zurück! – J0991

+0

Als eine Folgefrage, wie würde ich die SSH-Schlüssel suchen, die dieser Benutzer verwenden würde, wenn er versucht, einen Git-Befehl auszuführen? Ich denke, dass der SSH-Schlüssel für diesen bestimmten Benutzer hier das Problem sein kann. – J0991