2016-04-06 2 views
0

In meinem build.xml habe ich einige Jobs definiert, die von Tools ausgeführt werden sollten, ich installed globally über Composer. Das heißt, die Binärdateien werden in /root/.composer/vendor/bin/ gespeichert (ich arbeite als root auf meiner lokalen VM).Wie Jenkins mit Binärdateien aus einem Unterordner des Root-Benutzers arbeiten?

ich die PATH Umgebungsvariable in den Komponisten configs (ohne es zu der Build-Prozess failing war):

enter image description here

der Bauprozess wird in Berechtigungsprobleme Jetzt läuft:

Started by user anonymous 
Running as anonymous 
Building in workspace /path/to/myproject 
[myproject] $ ant 
Buildfile: /path/to/myproject/build.xml 

phpcs: 

BUILD FAILED 
/path/to/myproject/build.xml:30: Execute failed: java.io.IOException: Cannot run program "phpcs": error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047) 
    ... 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028) 
    ... 24 more 

Total time: 0 seconds 
Build step 'Invoke Ant' marked build as failure 
Finished: FAILURE 

Die Binärdateien in COMPOSER_HOME/bin sind für jedermann ausführbar:

[email protected]:~# chmod 777 /root/.composer/vendor/bin/ 
[email protected]:~# ls -lia /root/.composer/vendor/bin/ 
total 8 
... 
29651 lrwxrwxrwx 1 root root 42 Feb 17 14:49 phpcs -> ../squizlabs/php_codesniffer/scripts/phpcs 
... 

Ich habe die Authorize Project plugin installiert und versucht, den Build "als der Benutzer, der den Build ausgelöst hat", aber es hat nicht geholfen.

enter image description here

Aber das scheint nicht genug zu sein.

Wie geben Sie diese Berechtigungen Probleme lösen und Jenkins arbeiten mit Binärdateien von global ly installiert Composer-Pakete?

Antwort

0

Es scheint unmöglich zu sein, (Composer) Binaries auszuführen, die in einem Unterordner eines anderen Benutzers (root) von/von Jenkins gespeichert sind.

Eine Abhilfe, die für mich arbeitet, ist die COMPOSER_HOME in einen Ordner zu verschieben, hat Jenkins Zugriff auf, zum Beispiel:

$ mv /root/.composer /usr/share/.composer 
$ nano /etc/environment 
... 
PATH=... 
COMPOSER_HOME="/usr/share/.composer" 
... 
$ nano ~/.profile 
... 
export PATH=$PATH:$COMPOSER_HOME/vendor/bin 
... 

Die PATH Umgebungsvariablen muss dann Konfiguration im Jenkins eingestellt werden (Manage Jenkins -> Configure System -> Global properties -> Environment variables) zu $PATH:$COMPOSER_HOME/vendor/bin/:

Jankins-settings-PATH

0

Die ausführbare Datei ist keine ausführbare Datei, sondern ein Symlink zu einer anderen Datei, und diese Berechtigungen müssen korrekt sein. Hast du das überprüft?

+0

Vielen Dank für Ihre Antwort! Ja, habe das einfach mit 'chmod -R 777/root/.composer/vendor /' und 'chown -R jenkins/root/.composer/vendor /' auf einmal überprüft. Dann 'cp -s /root/.composer/vendor/bin/*/var/lib/jenkins/bin /', 'chown -R Jenkins/var/lib/jenkins/bin', und' chmod -R 777/var/lib/jenkins/bin'. Immer noch "Erlaubnis verweigert". – automatix

+0

Beachten Sie, dass "chmod" kein Werkzeug ist, um "checken" zu können, es ist der Brute-Force-Hammer, um die vom Noob-Administrator identifizierten Nägel zu fahren. – Sven

+0

Was ich sagen möchte, ist, dass Sie, anstatt zu überprüfen, was die Berechtigungen sind, alles mit dem schrecklichsten Berechtigungssatz überschreiben und damit alle hilfreichen Hinweise auf das, was vor sich geht, löschen. Wie kann das möglicherweise helfen? Ich würde 'sudo chmod -R 777/vorschlagen, wenn ich böse wäre. – Sven

Verwandte Themen