Bug 1033244

Summary: Unable to run Jenkins free style job
Product: OpenShift Online Reporter: Ragunath Ramaswamy <ragunath.ramaswamy>
Component: ImageAssignee: Dan McPherson <dmcphers>
Status: CLOSED NOTABUG QA Contact: libra bugs <libra-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 2.xCC: a.j.delaney, dmace
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-11-21 20:32:55 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Ragunath Ramaswamy 2013-11-21 18:52:07 UTC
Description of problem:
Unable to run Jenkins free style job.

I want to create a jenkins job to pull code from bitbucket. I want to install the M2 Release plugin on jenkins and when "Perform Maven Release" is clicked on the job do a release and store the release to a nexus repository (which I will create on a different gear).

Currently I am not able to run any job from jenkins since I get this error below


Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.Created a jenkins server (Instant app)
2.created a "Build a free-style software project" from jenkins
3.in the Build secion added a "Execute shell" echo 'hello world'
4. save job
5. build now

Actual results:
Page refreshes and no build happens

Expected results:
echo to be printed on the build output

Additional info:
I log in to the application with ssh and see the jenkins.log

Here are 2 exceptions on that log

<pre>
Nov 20, 2013 8:05:47 PM jenkins.model.Jenkins <init>
WARNING: Failed to broadcast over UDP
java.net.BindException: Permission denied
        at java.net.PlainDatagramSocketImpl.bind0(Native Method)
        at java.net.AbstractPlainDatagramSocketImpl.bind(AbstractPlainDatagramSocketImpl.java:95)
        at java.net.DatagramSocket.bind(DatagramSocket.java:376)
        at java.net.MulticastSocket.<init>(MulticastSocket.java:172)
        at java.net.MulticastSocket.<init>(MulticastSocket.java:137)
        at hudson.UDPBroadcastThread.<init>(UDPBroadcastThread.java:69)
        at jenkins.model.Jenkins.<init>(Jenkins.java:822)
        at hudson.model.Hudson.<init>(Hudson.java:81)

Nov 20, 2013 8:15:24 PM hudson.plugins.openshift.OpenShiftCloud provision
INFO: Provisioning new node for workload = 2 and label = null
Nov 20, 2013 8:15:24 PM hudson.plugins.openshift.OpenShiftCloud provision
INFO: Cancelling build - Label is null
Nov 20, 2013 8:15:24 PM hudson.plugins.openshift.OpenShiftCloud cancelBuild
INFO: Cancelling build
Nov 20, 2013 8:15:24 PM hudson.plugins.openshift.OpenShiftCloud cancelItem
INFO: Cancelling Item 
Nov 20, 2013 8:15:24 PM hudson.plugins.openshift.OpenShiftCloud cancelItem
WARNING: Build null rawbldr has been canceled
Nov 20, 2013 8:15:24 PM hudson.triggers.SafeTimerTask run
SEVERE: Timer task hudson.slaves.NodeProvisioner$NodeProvisionerInvoker@72d6dc failed
java.lang.UnsupportedOperationException: No Label
        at hudson.plugins.openshift.OpenShiftCloud.provision(OpenShiftCloud.java:391)
        at hudson.slaves.NodeProvisioner.update(NodeProvisioner.java:264)
        at hudson.slaves.NodeProvisioner.access$000(NodeProvisioner.java:51)
        at hudson.slaves.NodeProvisioner$NodeProvisionerInvoker.doRun(NodeProvisioner.java:345)
        at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:54)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)

</pre>

Comment 1 Dan Mace 2013-11-21 20:32:55 UTC
Ragunath,

In the default configuration for a new Jenkins instance on OpenShift, the number of executors for the master node is set to zero. Because of this, all jobs will attempt to run on a provisioned slave via the OpenShift Jenkins plugin, which is only compatible with jobs targetting an OpenShift application setup.

To run a freestyle job without using an OpenShift slave node, you'll need to go to the Jenkins configuration and increase the number of executors to a non-zero value, and then configure each of your jobs using the `Restrict where this project can be run` option. For instance, setting this value to `master` would allow your job to execute directly on the Jenkins instance. If you set up different types of slave provisioners which are compatible with your jobs, you can configure the OpenShift application jobs to execute only on OpenShift slaves, and your other jobs to execute only on non-OpenShift slaves using this pattern.

I'm closing this as NOTABUG because the issue is configuring Jenkins itself to suit your needs rather than a bug in OpenShift or its slave provisioner (this error is expected if you attempt to run a non-OpenShift job through the OpenShift provisioner).

Comment 2 Aidan Delaney 2014-01-22 16:35:24 UTC
I can get the same error when trying to run a maven build of a git project
SEVERE: Timer task hudson.slaves.NodeProvisioner$NodeProvisionerInvoker@1004c31 failed
java.lang.UnsupportedOperationException: No Label
	at hudson.plugins.openshift.OpenShiftCloud.provision(OpenShiftCloud.java:391)
	at hudson.slaves.NodeProvisioner.update(NodeProvisioner.java:264)
	at hudson.slaves.NodeProvisioner.access$000(NodeProvisioner.java:51)
	at hudson.slaves.NodeProvisioner$NodeProvisionerInvoker.doRun(NodeProvisioner.java:345)
	at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:54)
	at java.util.TimerThread.mainLoop(Timer.java:555)
	at java.util.TimerThread.run(Timer.java:505)

I have to provide a "Restrict where this project can be run" to get rid of the error.  However, even after that I can't get the thing to run a build.

I've run Jenkins on bare metal and on AWS and have not run into this issue, so I suspect it's the openshift integration.