2016-02-24 13 views
6

Il nostro jenkins dovrebbe essere solo rosso quando c'è un problema quando si crea il nostro codice come un problema di compilazione.Jenkins: come posso creare il colore di una build fallita a causa di un problema dello spazio di lavoro dal rosso al grigio?

Se c'è un problema di sysop - come ad esempio l'area di lavoro essendo pieno, alcuni schiavi sono giù, ... abbiamo bisogno del lavoro per diventare grigio, per indicare che c'è un problema con Jenkins in sé, ma che gli sviluppatori dovrebbe non essere messo in stato di allerta.

Ecco un registro del processo che ha bisogno di girare il grigio lavoro al posto del rosso:

04:19:19 ERROR: SEVERE ERROR occurs 
04:19:19 org.jenkinsci.lib.envinject.EnvInjectException: hudson.remoting.ChannelClosedException: channel is already closed 
04:19:19 at org.jenkinsci.plugins.envinject.service.EnvironmentVariablesNodeLoader.gatherEnvironmentVariablesNode(EnvironmentVariablesNodeLoader.java:75) 
04:19:19 at org.jenkinsci.plugins.envinject.EnvInjectListener.loadEnvironmentVariablesNode(EnvInjectListener.java:81) 
04:19:19 at org.jenkinsci.plugins.envinject.EnvInjectListener.setUpEnvironment(EnvInjectListener.java:39) 
04:19:19 at hudson.model.AbstractBuild$AbstractBuildExecution.createLauncher(AbstractBuild.java:572) 
04:19:19 at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:492) 
04:19:19 at hudson.model.Run.execute(Run.java:1738) 
04:19:19 at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:531) 
04:19:19 at hudson.model.ResourceController.execute(ResourceController.java:98) 
04:19:19 at hudson.model.Executor.run(Executor.java:410) 
04:19:19 Caused by: hudson.remoting.ChannelClosedException: channel is already closed 
04:19:19 at hudson.remoting.Channel.send(Channel.java:578) 
04:19:19 at hudson.remoting.Request.call(Request.java:130) 
04:19:19 at hudson.remoting.Channel.call(Channel.java:780) 
04:19:19 at hudson.FilePath.act(FilePath.java:1074) 
04:19:19 at org.jenkinsci.plugins.envinject.service.EnvironmentVariablesNodeLoader.gatherEnvironmentVariablesNode(EnvironmentVariablesNodeLoader.java:44) 
04:19:19 ... 8 more 
04:19:19 Caused by: java.io.IOException 
04:19:19 at hudson.remoting.Channel.close(Channel.java:1163) 
04:19:19 at hudson.slaves.ChannelPinger$1.onDead(ChannelPinger.java:118) 
04:19:19 at hudson.remoting.PingThread.ping(PingThread.java:126) 
04:19:19 at hudson.remoting.PingThread.run(PingThread.java:85) 
04:19:19 Caused by: java.util.concurrent.TimeoutException: Ping started at 1456305240982 hasn't completed by 1456305480982 
04:19:19 ... 2 more 
04:19:19 ERROR: Step ‘Archive the artifacts’ failed: no workspace for optaplanner #770 

risposta

3

Ecco una soluzione che utilizza il Conditional BuildStep Plugin e la Fail The Build Plugin:

enter image description here

Ed ecco il uscita console:

Started by user anonymous 
[EnvInject] - Loading node environment variables. 
Building on master in workspace /var/lib/jenkins/jobs/test make the build abort/workspace 
Run condition [Regular expression match] enabling prebuild for step [BuilderChain] 
[workspace] $ /bin/sh -xe /tmp/hudson4695476115086720006.sh 
+ echo '04:19:19 Caused by: hudson.remoting.ChannelClosedException: channel is already closed' 
04:19:19 Caused by: hudson.remoting.ChannelClosedException: channel is already closed 
Regular expression run condition: Expression=[(?is).*channel is already closed.*], Label=[[...truncated 5 lines...] 
+ echo '04:19:19 Caused by: hudson.remoting.ChannelClosedException: channel is already closed' 
04:19:19 Caused by: hudson.remoting.ChannelClosedException: channel is already closed 
] 
Run condition [Regular expression match] enabling perform for step [BuilderChain] 
Setting result to [Aborted] 
Build step 'Conditional steps (multiple)' changed build result to ABORTED 
Build step 'Conditional steps (multiple)' marked build as failure 
[BFA] Scanning build for known causes... 
[BFA] No failure causes found 
[BFA] Done. 0s 
Notifying upstream projects of job completion 
Finished: ABORTED 

Risolve il tuo problema? :)

+1

Parzialmente risolto: penso davvero che questa lista di espressioni regolari di errori "falsi" comuni (come, timeout della connessione git, timeout del download di dipendenze di maven, nodo di jenkins in basso, ...) dovrebbe essere preconfigurata. –