Re: Optional File Parameterization?

2012-02-22 Thread Andrew Melo
On Wed, Feb 22, 2012 at 3:36 PM, Les Mikesell  wrote:

> On Wed, Feb 22, 2012 at 3:29 PM, Andrew Melo 
> wrote:
> >
> >
> > On Wed, Feb 22, 2012 at 2:35 PM, Sami Tikka  wrote:
> >>
> >> Funny... I just created a test job with one file parameter and
> >> triggered without specifying a file. The job ran fine and there was no
> >> file in the workspace.
> >>
> >> I'm running Jenkins 1.451 on Mac OS X 10.7. My Jenkins is not wrapped
> >> in any servlet container.
> >
> >
> > Hey Sami-
> >
> > Were you submitting using a browser? This is what I get on the command
> line
> > when I try to submit a job with a file parameterization (note, it works
> fine
> > and builds properly when there's no file parameterization). When
> submitting
> > a form on a browser and there is no file selected, it will silently do
> the
> > equivalent of submitting an empty file. When triggering the REST
> interface
> > directly, that doesn't happen and Jenkins barfs on the input. The
> stacktrace
> > is below.
>
> So can you make whatever you are using to hit the REST interface
> submit an empty file when you don't have a real one?
>

That would be the easiest option. But we already have a bunch of different
scripts that are hitting it. It's weird that jenkins will let you ignore
posting all other types of parameterizations (the sandbox-melo-matrixtest
job has a bunch of parameters, for instance), but will blow up on missing a
file. I'm terrible at java, but i'm going to walk through the stacktrace
and see if I can't find what's barfing.

Thanks,
Andrew


>
> --
>  Les Mikesell
> lesmikes...@gmail.com
>



-- 
--
Andrew Melo


Re: Optional File Parameterization?

2012-02-22 Thread Les Mikesell
On Wed, Feb 22, 2012 at 3:29 PM, Andrew Melo  wrote:
>
>
> On Wed, Feb 22, 2012 at 2:35 PM, Sami Tikka  wrote:
>>
>> Funny... I just created a test job with one file parameter and
>> triggered without specifying a file. The job ran fine and there was no
>> file in the workspace.
>>
>> I'm running Jenkins 1.451 on Mac OS X 10.7. My Jenkins is not wrapped
>> in any servlet container.
>
>
> Hey Sami-
>
> Were you submitting using a browser? This is what I get on the command line
> when I try to submit a job with a file parameterization (note, it works fine
> and builds properly when there's no file parameterization). When submitting
> a form on a browser and there is no file selected, it will silently do the
> equivalent of submitting an empty file. When triggering the REST interface
> directly, that doesn't happen and Jenkins barfs on the input. The stacktrace
> is below.

So can you make whatever you are using to hit the REST interface
submit an empty file when you don't have a real one?

-- 
  Les Mikesell
 lesmikes...@gmail.com


Re: Optional File Parameterization?

2012-02-22 Thread Andrew Melo
On Wed, Feb 22, 2012 at 2:35 PM, Sami Tikka  wrote:

> Funny... I just created a test job with one file parameter and
> triggered without specifying a file. The job ran fine and there was no
> file in the workspace.
>
> I'm running Jenkins 1.451 on Mac OS X 10.7. My Jenkins is not wrapped
> in any servlet container.
>

Hey Sami-

Were you submitting using a browser? This is what I get on the command line
when I try to submit a job with a file parameterization (note, it works
fine and builds properly when there's no file parameterization). When
submitting a form on a browser and there is no file selected, it will
silently do the equivalent of submitting an empty file. When triggering the
REST interface directly, that doesn't happen and Jenkins barfs on the
input. The stacktrace is below.

Thanks,
Andrew

[dmwm] /afs/cern.ch/user/m/meloam > curl
http://dmwm.cern.ch:8080/job/sandbox-melo-matrixtest/buildWithParameters
Error 500Status Code: 500Exception: Stacktrace:
java.lang.UnsupportedOperationException
at
hudson.model.FileParameterDefinition.createValue(FileParameterDefinition.java:72)
at
hudson.model.ParametersDefinitionProperty.buildWithParameters(ParametersDefinitionProperty.java:141)
at
hudson.model.AbstractProject.doBuildWithParameters(AbstractProject.java:1623)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:282)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:149)
at
org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:88)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111)
at
org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:563)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:648)
at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:241)
at
org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:563)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:648)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:477)
at org.kohsuke.stapler.Stapler.service(Stapler.java:159)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
at
hudson.plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:66)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:98)
at
hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:74)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:98)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:91)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
at
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
at
hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
at
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
at
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
at
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at
org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
at
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:61)
at
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at
hudson.security.HttpSessionContextIntegrationFilter2.doFilte

Re: Optional File Parameterization?

2012-02-22 Thread Sami Tikka
Funny... I just created a test job with one file parameter and
triggered without specifying a file. The job ran fine and there was no
file in the workspace.

I'm running Jenkins 1.451 on Mac OS X 10.7. My Jenkins is not wrapped
in any servlet container.

-- Sami

2012/2/21 Andrew Melo :
>
>
> On Mon, Feb 20, 2012 at 11:42 PM, Sami Tikka  wrote:
>>
>> Sorry, but you lost me. How does urllib come into the picture?
>
>
> Sorry, I should've clarified.
>
> We have a number of different tools that trigger builds with jenkins through
> the REST interface. For instance, when someone posts a pull request to
> github, a script makes a new branch in git and tells jenkins to build
> against it. This works great, we have a build parameterization that tells
> jenkins what branch to build, so I can just make a request to
> http://jenkins.server/job/something/something/buildWithParameters?branch=test_branch
> and jenkins queues the build. We have a few different build parameters that
> accept strings to let us configure different things about the job (i.e.
> someone can request only an oracle or mysql backend if they're testing
> specific functionality and want to save time). If all the parameters aren't
> there, jenkins doesn't complain, it just takes the defaults.
>
> If I put in a file parameter into the configuration and try to trigger a
> build, and no file is uploaded, jenkins throws a 500 error instead of simply
> not putting a file into the job workdir. I would think the expected behavior
> would be to just not put a file in the workdir.
>
> Thanks again,
> Andrew
>
>
>
>>
>>
>> You configure the job to take file parameter and name it foo.tmp. Then
>> your build script checks if file foo.tmp exists. If it does, rename it to
>> foo and start testing it. If it doesn't, build foo and start testing it.
>>
>> -- Sami
>>
>> Andrew Melo  kirjoitti 21.2.2012 kello 7.36:
>>
>> Hey Sami,
>>
>> On Mon, Feb 20, 2012 at 11:32 PM, Sami Tikka  wrote:
>>>
>>> You just have to change your build scripts to use the uploaded file if it
>>> exists in the workspace and do something else if it doesn't.
>>
>>
>> I would like to do that, but it doesn't seem to work. If I make the call
>> with urllib (I'm using python), I get a 500 error back (so the job never
>> fires). If I add a file to it, the job works fine. If I remove the file
>> parameterization, it works. It's just when I try to submit a job and don't
>> include the file that things blow up.
>>
>> Unfortunately (well, fortunately in a way), I'm doing my qualifying exam
>> tomorrow AM, so I can't dig out the backtrace, but one of the stack frames
>> was in buildWithParameters. I can send that tomorrow once I'm done if that
>> helps.
>>
>> Thanks!
>> Andrew
>>
>>>
>>>
>>> -- Sami
>>>
>>> Andrew Melo  kirjoitti 20.2.2012 kello 0.09:
>>>
>>> > Hello, everyone-
>>> >
>>> > We currently use jenkins to test commits that are in our Git
>>> > repository, but I'd like to add support for developers to test their
>>> > current workspace with jenkins before the commit makes it up. I added
>>> > some logic to the beginning of the build process to unpack a tarball
>>> > passed in with the file parameterization, which works great. However,
>>> > any existing processes that try to submit a job end up failing if they
>>> > don't pass in a file with the http request.
>>> >
>>> > Is there a way to have jenkins ignore if a file isn't passed in
>>> > (perhaps making a zero-length file)? Or is there a better way to go
>>> > about this? (Our job configuration is super complex, so maintaining
>>> > two jobs with identical options modulo the build parameterization
>>> > would probably end up with them desynchronizing).
>>> >
>>> > Thanks,
>>> > Andrew
>>
>>
>>
>>
>> --
>> --
>> Andrew Melo
>>
>
>
>
> --
> --
> Andrew Melo
>


Re: Optional File Parameterization?

2012-02-20 Thread Andrew Melo
On Mon, Feb 20, 2012 at 11:42 PM, Sami Tikka  wrote:

> Sorry, but you lost me. How does urllib come into the picture?
>

Sorry, I should've clarified.

We have a number of different tools that trigger builds with jenkins
through the REST interface. For instance, when someone posts a pull request
to github, a script makes a new branch in git and tells jenkins to build
against it. This works great, we have a build parameterization that tells
jenkins what branch to build, so I can just make a request to
http://jenkins.server/job/something/something/buildWithParameters?branch=test_branchand
jenkins queues the build. We have a few different build parameters
that
accept strings to let us configure different things about the job (i.e.
someone can request only an oracle or mysql backend if they're testing
specific functionality and want to save time). If all the parameters aren't
there, jenkins doesn't complain, it just takes the defaults.

If I put in a file parameter into the configuration and try to trigger a
build, and no file is uploaded, jenkins throws a 500 error instead of
simply not putting a file into the job workdir. I would think the expected
behavior would be to just not put a file in the workdir.

Thanks again,
Andrew




>
> You configure the job to take file parameter and name it foo.tmp. Then
> your build script checks if file foo.tmp exists. If it does, rename it to
> foo and start testing it. If it doesn't, build foo and start testing it.
>
> -- Sami
>
> Andrew Melo  kirjoitti 21.2.2012 kello 7.36:
>
> Hey Sami,
>
> On Mon, Feb 20, 2012 at 11:32 PM, Sami Tikka  wrote:
>
>> You just have to change your build scripts to use the uploaded file if it
>> exists in the workspace and do something else if it doesn't.
>>
>
> I would like to do that, but it doesn't seem to work. If I make the call
> with urllib (I'm using python), I get a 500 error back (so the job never
> fires). If I add a file to it, the job works fine. If I remove the file
> parameterization, it works. It's just when I try to submit a job and don't
> include the file that things blow up.
>
> Unfortunately (well, fortunately in a way), I'm doing my qualifying exam
> tomorrow AM, so I can't dig out the backtrace, but one of the stack frames
> was in buildWithParameters. I can send that tomorrow once I'm done if that
> helps.
>
> Thanks!
> Andrew
>
>
>>
>> -- Sami
>>
>> Andrew Melo  kirjoitti 20.2.2012 kello 0.09:
>>
>> > Hello, everyone-
>> >
>> > We currently use jenkins to test commits that are in our Git
>> > repository, but I'd like to add support for developers to test their
>> > current workspace with jenkins before the commit makes it up. I added
>> > some logic to the beginning of the build process to unpack a tarball
>> > passed in with the file parameterization, which works great. However,
>> > any existing processes that try to submit a job end up failing if they
>> > don't pass in a file with the http request.
>> >
>> > Is there a way to have jenkins ignore if a file isn't passed in
>> > (perhaps making a zero-length file)? Or is there a better way to go
>> > about this? (Our job configuration is super complex, so maintaining
>> > two jobs with identical options modulo the build parameterization
>> > would probably end up with them desynchronizing).
>> >
>> > Thanks,
>> > Andrew
>>
>
>
>
> --
> --
> Andrew Melo
>
>


-- 
--
Andrew Melo


Re: Optional File Parameterization?

2012-02-20 Thread Sami Tikka
Sorry, but you lost me. How does urllib come into the picture?

You configure the job to take file parameter and name it foo.tmp. Then your 
build script checks if file foo.tmp exists. If it does, rename it to foo and 
start testing it. If it doesn't, build foo and start testing it.

-- Sami

Andrew Melo  kirjoitti 21.2.2012 kello 7.36:

> Hey Sami,
> 
> On Mon, Feb 20, 2012 at 11:32 PM, Sami Tikka  wrote:
> You just have to change your build scripts to use the uploaded file if it 
> exists in the workspace and do something else if it doesn't.
> 
> I would like to do that, but it doesn't seem to work. If I make the call with 
> urllib (I'm using python), I get a 500 error back (so the job never fires). 
> If I add a file to it, the job works fine. If I remove the file 
> parameterization, it works. It's just when I try to submit a job and don't 
> include the file that things blow up.
> 
> Unfortunately (well, fortunately in a way), I'm doing my qualifying exam 
> tomorrow AM, so I can't dig out the backtrace, but one of the stack frames 
> was in buildWithParameters. I can send that tomorrow once I'm done if that 
> helps.
> 
> Thanks!
> Andrew
>  
> 
> -- Sami
> 
> Andrew Melo  kirjoitti 20.2.2012 kello 0.09:
> 
> > Hello, everyone-
> >
> > We currently use jenkins to test commits that are in our Git
> > repository, but I'd like to add support for developers to test their
> > current workspace with jenkins before the commit makes it up. I added
> > some logic to the beginning of the build process to unpack a tarball
> > passed in with the file parameterization, which works great. However,
> > any existing processes that try to submit a job end up failing if they
> > don't pass in a file with the http request.
> >
> > Is there a way to have jenkins ignore if a file isn't passed in
> > (perhaps making a zero-length file)? Or is there a better way to go
> > about this? (Our job configuration is super complex, so maintaining
> > two jobs with identical options modulo the build parameterization
> > would probably end up with them desynchronizing).
> >
> > Thanks,
> > Andrew
> 
> 
> 
> -- 
> --
> Andrew Melo
> 


Re: Optional File Parameterization?

2012-02-20 Thread Andrew Melo
Hey Sami,

On Mon, Feb 20, 2012 at 11:32 PM, Sami Tikka  wrote:

> You just have to change your build scripts to use the uploaded file if it
> exists in the workspace and do something else if it doesn't.
>

I would like to do that, but it doesn't seem to work. If I make the call
with urllib (I'm using python), I get a 500 error back (so the job never
fires). If I add a file to it, the job works fine. If I remove the file
parameterization, it works. It's just when I try to submit a job and don't
include the file that things blow up.

Unfortunately (well, fortunately in a way), I'm doing my qualifying exam
tomorrow AM, so I can't dig out the backtrace, but one of the stack frames
was in buildWithParameters. I can send that tomorrow once I'm done if that
helps.

Thanks!
Andrew


>
> -- Sami
>
> Andrew Melo  kirjoitti 20.2.2012 kello 0.09:
>
> > Hello, everyone-
> >
> > We currently use jenkins to test commits that are in our Git
> > repository, but I'd like to add support for developers to test their
> > current workspace with jenkins before the commit makes it up. I added
> > some logic to the beginning of the build process to unpack a tarball
> > passed in with the file parameterization, which works great. However,
> > any existing processes that try to submit a job end up failing if they
> > don't pass in a file with the http request.
> >
> > Is there a way to have jenkins ignore if a file isn't passed in
> > (perhaps making a zero-length file)? Or is there a better way to go
> > about this? (Our job configuration is super complex, so maintaining
> > two jobs with identical options modulo the build parameterization
> > would probably end up with them desynchronizing).
> >
> > Thanks,
> > Andrew
>



-- 
--
Andrew Melo


Re: Optional File Parameterization?

2012-02-20 Thread Sami Tikka
You just have to change your build scripts to use the uploaded file if it 
exists in the workspace and do something else if it doesn't. 

-- Sami

Andrew Melo  kirjoitti 20.2.2012 kello 0.09:

> Hello, everyone-
> 
> We currently use jenkins to test commits that are in our Git
> repository, but I'd like to add support for developers to test their
> current workspace with jenkins before the commit makes it up. I added
> some logic to the beginning of the build process to unpack a tarball
> passed in with the file parameterization, which works great. However,
> any existing processes that try to submit a job end up failing if they
> don't pass in a file with the http request.
> 
> Is there a way to have jenkins ignore if a file isn't passed in
> (perhaps making a zero-length file)? Or is there a better way to go
> about this? (Our job configuration is super complex, so maintaining
> two jobs with identical options modulo the build parameterization
> would probably end up with them desynchronizing).
> 
> Thanks,
> Andrew


Optional File Parameterization?

2012-02-19 Thread Andrew Melo
Hello, everyone-

We currently use jenkins to test commits that are in our Git
repository, but I'd like to add support for developers to test their
current workspace with jenkins before the commit makes it up. I added
some logic to the beginning of the build process to unpack a tarball
passed in with the file parameterization, which works great. However,
any existing processes that try to submit a job end up failing if they
don't pass in a file with the http request.

Is there a way to have jenkins ignore if a file isn't passed in
(perhaps making a zero-length file)? Or is there a better way to go
about this? (Our job configuration is super complex, so maintaining
two jobs with identical options modulo the build parameterization
would probably end up with them desynchronizing).

Thanks,
Andrew