2011-10-02 17 views
5

Sto eseguendo Jenkins 1.433 su Ubuntu 11.04 per eseguire una build che include un'attività Ant. La porzione clean del mio compito Ant, che elimina la directory build dalla prima costruisce, funziona quando si esegue sudo Ant dal terminale, ma non riesce da Jenkins con il seguente:Errore Jenkins: "Impossibile eliminare il file" quando si invoca Ant

BUILD FAILED 
/var/lib/jenkins/workspace/AomaTests/build.xml:47: Unable to delete directory /var/lib/jenkins/workspace/AomaTests/build 

La Formica install riferito da Jenkins è quella che funziona dalla riga di comando (usr/bin/ant) e il progetto Jenkins punta specificamente a questa istanza (e non a Default). Capire questo è stato un problema di autorizzazioni, ho provato la seguente:

  • chown -R la directory appropriata build, impostando il suo proprietario a jenkins.
  • Fare un chmod 777 nella directory.
  • Consentendo temporaneamente al nome utente jenkins di eseguire le operazioni senza una password (modificando il file sudoers con la riga jenkins ALL = NOPASSWD:ALL).

Nessuno di questi approcci ha funzionato. Devo eseguire un form tramite un utente diverso, o forse passarlo ad alcune proprietà tramite Jenkins?

Aggiornamento: L'uscita del ps -ef | grep "jenkins" è:

jenkins 1647  1 0 12:28 ?  00:00:00 /usr/bin/daemon --name=jenkins --inherit --env=JENKINS_HOME=/var/lib/jenkins --output=/var/log/jenkins/jenkins.log --pidfile=/var/run/jenkins/jenkins.pid -- /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/run/jenkins/war --httpPort=8080 --ajp13Port=-1 
jenkins 1660 1647 7 12:28 ?  00:00:13 /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/run/jenkins/war --httpPort=8080 --ajp13Port=-1 
mattcarp 2393 2229 0 12:31 pts/0 00:00:00 grep --color=auto jenkins 

esecuzione ls -l sulla directory che non riesce a cancellare (quando viene eseguito da Jenkins) mostra:

drwxr-xr-x 2 jenkins root 4096 2011-10-03 14:49 build 

Molte grazie per qualsiasi consigli!

+0

Molto interessante la configurazione. La nostra area di lavoro di Jenkins è in/home/jenkins e non in/usr/lib/jenkins. Inoltre, non vedo il nome del lavoro nella struttura della directory. Nella nostra, la directory sarebbe '/ home/jenkins/aromaTest/workspace/build.xml' –

risposta

6

Come si è visto, tutto ciò che era necessario era quello di impostare il proprietario del genitore della directory a jenkins.

Wow - questa è stata una lunga strada da percorrere per una risposta così semplice!

+0

Sono felice che tu abbia risolto il problema. La prossima cosa che ti dirò di provare è accedere come Jenkins sul tuo server Jenkins, andare nella directory di lavoro e provare a eseguire manualmente Ant da lì. Ciò avrebbe eliminato la colpa di Jenkins. Ora, sapendo che Jenkins non è nella foto, guarderesti il ​​tuo ambiente e scoprirai il problema della directory. Il modo migliore per risolvere un problema di build è provare a eseguire la build nella directory dello spazio di lavoro. Disabilita il lavoro prima. –

+0

E per quanto riguarda Windows? Sto avendo lo stesso problema in Windows .. So che devo fornire il privilegio di amministratore per appassire jenkins o formica ma come .. –

0

Chi gestisce Jenkins? Questa è la domanda. C'è un utente che sta eseguendo il processo Java che sta eseguendo il server Jenkins. Devi trovare quell'utente. Prova questo:

$ ps -ef | grep "jenkins" 

e vedere cosa ottieni.

Sapendo che il tuo nome è Matt e vedo che il file che non può essere eliminato è nella/ directory /home mattcarp, qualcosa mi dice che c'è qualcosa irregolare in corso. La mia prima ipotesi è che Jenkins non venga eseguito dall'utente mattcarp.

  • Come viene installato Jenkins? È installato come proprio utente nella propria directory? Di solito è come si fa. Ad esempio, si installa Jenkins in /home/jenkins e tutti i lavori sono in /home/jenkins/jobs e l'area di lavoro per un lavoro per foo è in /home/jenkins/jobs/foo/workspace. Perché Jenkins sta guardando la tua directory $HOME?
  • Come funziona il file Ant build.xml? Sei difficile codificare la directory /home/mattcarp/workspace/... nel file build.xml? In tal caso, è necessario ripristinare il proprio build.xml per utilizzare l'albero della directory corrente e non il codice.
+0

Grazie per la risposta! Ho modificato la mia domanda per riflettere l'output del comando 'ps'. Ant 'build.xml' usa un percorso relativo alla directory di build, e Jenkins è stato installato usando' aptitude' secondo le istruzioni sul sito di Jenkins. Si trova in '/ var/lib/jenkins'. Mi sento come se stavo facendo qualcosa di stupido con i permessi, ma non sono del tutto sicuro di cosa ... –

+0

Inoltre, per evitare qualsiasi variazione, ho spostato manualmente i file di progetto in '/ var/lib/jenkins/workspace' (questo si riflette nella mia modifica alla domanda). Per inciso, l'output di 'ps -f | grep "ant" 'is: ' mattcarp 2775 2231 0 15:41 pts/0 00:00:00 grep --color = auto ant' –

Problemi correlati