问题
Our jenkins build should only be red when there's a problem when building our code such as a compilation problem.
If there's a sysops issue - such as the workspace being full, some slaves are down, ... we need the job to become gray, to indicate there's a problem with Jenkins itself, but that the developers should not be put on high alert.
Here's a job log that needs to turn the job gray instead of red:
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
回答1:
Here is a solution using the Conditional BuildStep Plugin and the Fail The Build Plugin:
And here is the console output:
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
Does it solve your problem? :)
来源:https://stackoverflow.com/questions/35599242/jenkins-how-do-i-make-the-color-of-a-failed-build-due-to-a-workspace-issue-from