2011-12-23 10 views
6

Io uso Jenkins per eseguire alcuni test di integrazione su un appilcation web (usando il cetriolo, capibara e selenio)Jenkins Corporatura fallisce quando gli artefatti non sono lì

Ogni volta che un test fallisce, uno screenshot, il sorgente HTML e un video il processo è salvato.

struttura il percorso è simile al seguente:

results/output/<test_name>/<files> 

Io uso i manufatti di archiviazione dispongono di Jenkins per fornire i file (modello: results/output/*/*). Funziona alla grande.

Tuttavia, non appena una build riesce, non ci sono screenshot/video ecc ... e la compilazione fallisce perché Jenkins non riesce a trovare i file per il pattern.

C'è un modo per dire a Jenkins di avere successo senza avere i file presenti?

Non voglio fare un trucco sporco che comporta la creazione di una struttura di cartelle vuota come risultato/uscita/successo/hooray.txt.

+0

Buona domanda; Mi stavo chiedendo esattamente la stessa cosa! – Jonik

risposta

4

Mi sono imbattuto in un problema simile su un paio di nostri progetti. Esistono due modi diversi per risolverlo (su due diverse build).

1) Aggiunto un comando alla procedura di creazione che crea un file temporaneo fasullo se nessun file esiste già.

In questo caso, era destinato a raccogliere un file output.pdf che verrebbe generato se i test non fossero riusciti. Ho aggiunto un passo di costruzione in cui, se quel file non esisteva, abbiamo creato un file "missing.pdf". Quindi ciò che raccolgo come artefatti è "* .pdf" dalla directory specificata. Questo sembra funzionare abbastanza bene.

2) In un'altra build, era necessario raccogliere un set di file utilizzando un glob.

Quello che abbiamo fatto qui è stato fatto in modo che la fase di creazione crei sempre un singolo file vuoto nell'area di destinazione. In questo modo il glob corrisponde sempre a qualcosa.

Queste sono le migliori soluzioni che abbiamo trovato finora. Se trovi qualcosa di meglio mi piacerebbe sentirne parlare.

+0

Ho aggiunto un passaggio che ha creato un success.txt quando la cartella era vuota dopo la compilazione – leifg

13

C'è un problema aperto a che: https://issues.jenkins-ci.org/browse/JENKINS-10502

Il comportamento è controllato dalla proprietà di sistema hudson.tasks.ArtifactArchiver.warnOnEmpty, come spiegato a https://wiki.jenkins-ci.org/display/JENKINS/Features+controlled+by+system+properties

+1

+1, penso che questa sia la risposta corretta. (Se qualcun altro si sta chiedendo come farlo funzionare con Jenkins in esecuzione su Debian/Ubuntu, modifica '/ etc/default/jenkins' e metti' -Dhudson.tasks.ArtifactArchiver.warnOnEmpty = true' in ** JAVA_ARGS ** (o probabilmente JENKINS_JAVA_OPTIONS). JENKINS_ARGS non funzionerà, almeno se hai più di una proprietà -D! – Jonik

+2

Ancora, come qualcuno commenta nel problema a cui ti sei collegato, peccato che questo non possa essere configurato con una casella di controllo nell'interfaccia utente di Jenkins su una base per-lavoro. – Jonik