extreme feedback device plugin

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

extreme feedback device plugin

N Daley
Hi,

I'm interested in creating a plugin for extreme feedback devices (for example http://www.developertesting.com/archives/month200404/20040401-eXtremeFeedbackForSoftwareDevelopment.html).

Generally, I think this is what I'll need to setup:

Hudson System Configuration:
A new section (like the JDK section) that allows new extreme feedback devices to be added.
The section will have 2 text fields:
  -name: a human readable name for the device
  -command: the command to execute whenever a subscribed build completes

Project Configuration:
A new entry, again like the JDK, that is simply a drop down list of configured extreme feedback devices.

When a build completes, the plugin will calculate the overall status of all projects that share the same extreme feedback device (ie. red if any project is red, else yellow if any project is yellow, else green).  The plugin then calls the configured command with the overall status.

That's it.  Pretty simple but it requires changes to the System Config panel and Project Config panel, plus the ability to retrieve build status from all sharing projects.  Is this possible?  Can someone help me get started?

Thanks,
Nige

Reply | Threaded
Open this post in threaded view
|

Re: extreme feedback device plugin

Kohsuke Kawaguchi-2
N Daley wrote:
> Hi,
>
> I'm interested in creating a plugin for extreme feedback devices (for example http://www.developertesting.com/archives/month200404/20040401-eXtremeFeedbackForSoftwareDevelopment.html).

Sounds like fun. I'm actually building one of those devices by myself
right now. It's a real-world Hudson ball that changes color and all
that. Stay tuned for my future blog...


> Generally, I think this is what I'll need to setup:
>
> Hudson System Configuration:
> A new section (like the JDK section) that allows new extreme feedback devices to be added.
> The section will have 2 text fields:
>   -name: a human readable name for the device
>   -command: the command to execute whenever a subscribed build completes

That's quite doable, although I tend to think it's easier to get the UI
right if you write a plugin for each device separately.

> That's it.  Pretty simple

Yep.

 > but it requires changes to the System Config
> panel and Project Config panel

I don't think so. It fits nicely into the "Publisher" pluggability
point. Each publisher plugin can contribute its own config section, just
like "publish javadoc" and "archive artifacts" work.

 > plus the ability to retrieve build
> status from all sharing projects.  Is this possible?

Yes.

for( Job j : Hudson.getInstance().getJobs() ) {
   ...
}

 > Can someone help me get started?

Please take a look at https://hudson.dev.java.net/plugin-tutorial.html 
first, and see if you can make some progress. Once your environment is
ready and need more hudson-specific help, I'd be happy to help.

Would you be interested in hosting your plugin on
http://hudson.dev.java.net/ ? I'm not sure how easily available those
devices are, but I think other people would be interested in it, plus
the rest of us can more easily pitch in if we can access the code.

--
Kohsuke Kawaguchi
Sun Microsystems                   [hidden email]

smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: extreme feedback device plugin

N Daley
In reply to this post by N Daley
My device is an ambient orb, but there are so many other options, some homegrown, that I figured a generic command would be a more flexible interface to these devices than 1 plugin for each device.  For my orb, I need to ssh to another machine and call thru it's serial interface.  The orb will reflect the build status of 3 different builds.

I'll work at getting my environment setup.  I'm not a Jelly/Groovy guy at all, so I may need some help there.  I'll let you know.   And yes, I'm happy to host it on hudson.dev.java.net.

Cheers,
Nige

----- Original Message ----
From: Kohsuke Kawaguchi <[hidden email]>
To: [hidden email]
Sent: Wednesday, November 15, 2006 3:45:04 PM
Subject: Re: extreme feedback device plugin

N Daley wrote:
> Hi,
>
> I'm interested in creating a plugin for extreme feedback devices (for example http://www.developertesting.com/archives/month200404/20040401-eXtremeFeedbackForSoftwareDevelopment.html).

Sounds like fun. I'm actually building one of those devices by myself
right now. It's a real-world Hudson ball that changes color and all
that. Stay tuned for my future blog...


> Generally, I think this is what I'll need to setup:
>
> Hudson System Configuration:
> A new section (like the JDK section) that allows new extreme feedback devices to be added.
> The section will have 2 text fields:
>   -name: a human readable name for the device
>   -command: the command to execute whenever a subscribed build completes

That's quite doable, although I tend to think it's easier to get the UI
right if you write a plugin for each device separately.

> That's it.  Pretty simple

Yep.

> but it requires changes to the System Config
> panel and Project Config panel

I don't think so. It fits nicely into the "Publisher" pluggability
point. Each publisher plugin can contribute its own config section, just
like "publish javadoc" and "archive artifacts" work.

> plus the ability to retrieve build
> status from all sharing projects.  Is this possible?

Yes.

for( Job j : Hudson.getInstance().getJobs() ) {
   ...
}

> Can someone help me get started?

Please take a look at https://hudson.dev.java.net/plugin-tutorial.html
first, and see if you can make some progress. Once your environment is
ready and need more hudson-specific help, I'd be happy to help.

Would you be interested in hosting your plugin on
http://hudson.dev.java.net/ ? I'm not sure how easily available those
devices are, but I think other people would be interested in it, plus
the rest of us can more easily pitch in if we can access the code.

--
Kohsuke Kawaguchi
Sun Microsystems                   [hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: extreme feedback device plugin

Tom Ball
I recommend that instead of hacking Hudson, you create an RSS reader for
your device and sign it up to Hudson's existing RSS feed.  That's what I
did for the NetBeans build monitor plug-in; although it doesn't have any
cool hardware, the control flow is the same.  Here is a link to its
simple RSS feed parser, which fires status events your device could
easily sink:

http://www.netbeans.org/source/browse/contrib/buildmonitor/src/org/netbeans/modules/buildmonitor/BuildMonitor.java?rev=1.8&view=markup

Tom

N Daley wrote:

> My device is an ambient orb, but there are so many other options, some
> homegrown, that I figured a generic command would be a more flexible
> interface to these devices than 1 plugin for each device.  For my orb, I
> need to ssh to another machine and call thru it's serial interface.  The
> orb will reflect the build status of 3 different builds.
>
> I'll work at getting my environment setup.  I'm not a Jelly/Groovy guy
> at all, so I may need some help there.  I'll let you know.   And yes,
> I'm happy to host it on hudson.dev.java.net.
>
> Cheers,
> Nige
>
> ----- Original Message ----
> From: Kohsuke Kawaguchi <[hidden email]>
> To: [hidden email]
> Sent: Wednesday, November 15, 2006 3:45:04 PM
> Subject: Re: extreme feedback device plugin
>
> N Daley wrote:
>  > Hi,
>  >
>  > I'm interested in creating a plugin for extreme feedback devices (for
> example
> http://www.developertesting.com/archives/month200404/20040401-eXtremeFeedbackForSoftwareDevelopment.html).
>
> Sounds like fun. I'm actually building one of those devices by myself
> right now. It's a real-world Hudson ball that changes color and all
> that. Stay tuned for my future blog...
>
>
>  > Generally, I think this is what I'll need to setup:
>  >
>  > Hudson System Configuration:
>  > A new section (like the JDK section) that allows new extreme feedback
> devices to be added.
>  > The section will have 2 text fields:
>  >   -name: a human readable name for the device
>  >   -command: the command to execute whenever a subscribed build completes
>
> That's quite doable, although I tend to think it's easier to get the UI
> right if you write a plugin for each device separately.
>
>  > That's it.  Pretty simple
>
> Yep.
>
>  > but it requires changes to the System Config
>  > panel and Project Config panel
>
> I don't think so. It fits nicely into the "Publisher" pluggability
> point. Each publisher plugin can contribute its own config section, just
> like "publish javadoc" and "archive artifacts" work.
>
>  > plus the ability to retrieve build
>  > status from all sharing projects.  Is this possible?
>
> Yes.
>
> for( Job j : Hudson.getInstance().getJobs() ) {
>    ...
> }
>
>  > Can someone help me get started?
>
> Please take a look at https://hudson.dev.java.net/plugin-tutorial.html
> first, and see if you can make some progress. Once your environment is
> ready and need more hudson-specific help, I'd be happy to help.
>
> Would you be interested in hosting your plugin on
> http://hudson.dev.java.net/ ? I'm not sure how easily available those
> devices are, but I think other people would be interested in it, plus
> the rest of us can more easily pitch in if we can access the code.
>
> --
> Kohsuke Kawaguchi
> Sun Microsystems                   [hidden email]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: extreme feedback device plugin

Kohsuke Kawaguchi-2
In reply to this post by N Daley
N Daley wrote:
> My device is an ambient orb, but there are so many other options, some
> homegrown, that I figured a generic command would be a more flexible
> interface to these devices than 1 plugin for each device.

There's a classic trade off. If you try to make one feature more
generic. Then the UI gets less intuitive. For example, if you just write
a plugin for your orb, then the project set up could be as simple as just:

   [x] this project participates in Daley's orb

... and anyone in your team will be able to just click it without
knowing much about the mechanics.

In comparison, if you make it generic, then you'd have to type in the
command and everything, and the configuration gets more complicated. So
that's the trade off.

I think many CI tools ended up too complicated because they try to be
more generic. I'm trying to do better with Hudson because we can afford
to have a lot of special-purpose plugins.

Obviously It's really up to you as a plugin author, but I just wanted to
explain my point of view.

 > For my orb, I
> need to ssh to another machine and call thru it's serial interface.  The
> orb will reflect the build status of 3 different builds.

The other mandatory thing :-) I'm asking to various users is: would you
be interested in describing your Hudson set up? I'm thinking that it
would be nice to have a few "case study" documents that explain how
Hudson is deployed in the field, because that would help potential users
think about how it fits their environment.

Sounds like you have an interesting environment, hence the question.

I'm curious about the gory details --- like what server/OS you use, how
many jobs you run, how they relate to each other, about your orb, how
you interface with your existing systems, etc.


 > I'll work at getting my environment setup.  I'm not a Jelly/Groovy guy
 > at all, so I may need some help there.

No problem. We can pitch in there, and you can copy from existing code :-)

 > I'll let you know.   And yes,
 > I'm happy to host it on hudson.dev.java.net.

Cool. If we can decide the name first, I'll set up your module
directory. Also, let me know your java.net user id so that I can add you
to the project as a developer.

>
> Cheers,
> Nige
>
> ----- Original Message ----
> From: Kohsuke Kawaguchi <[hidden email]>
> To: [hidden email]
> Sent: Wednesday, November 15, 2006 3:45:04 PM
> Subject: Re: extreme feedback device plugin
>
> N Daley wrote:
>> Hi,
>>
>> I'm interested in creating a plugin for extreme feedback devices (for example http://www.developertesting.com/archives/month200404/20040401-eXtremeFeedbackForSoftwareDevelopment.html).
>
> Sounds like fun. I'm actually building one of those devices by myself
> right now. It's a real-world Hudson ball that changes color and all
> that. Stay tuned for my future blog...
>
>
>> Generally, I think this is what I'll need to setup:
>>
>> Hudson System Configuration:
>> A new section (like the JDK section) that allows new extreme feedback devices to be added.
>> The section will have 2 text fields:
>>   -name: a human readable name for the device
>>   -command: the command to execute whenever a subscribed build completes
>
> That's quite doable, although I tend to think it's easier to get the UI
> right if you write a plugin for each device separately.
>
>> That's it.  Pretty simple
>
> Yep.
>
>  > but it requires changes to the System Config
>> panel and Project Config panel
>
> I don't think so. It fits nicely into the "Publisher" pluggability
> point. Each publisher plugin can contribute its own config section, just
> like "publish javadoc" and "archive artifacts" work.
>
>  > plus the ability to retrieve build
>> status from all sharing projects.  Is this possible?
>
> Yes.
>
> for( Job j : Hudson.getInstance().getJobs() ) {
>    ...
> }
>
>  > Can someone help me get started?
>
> Please take a look at https://hudson.dev.java.net/plugin-tutorial.html 
> first, and see if you can make some progress. Once your environment is
> ready and need more hudson-specific help, I'd be happy to help.
>
> Would you be interested in hosting your plugin on
> http://hudson.dev.java.net/ ? I'm not sure how easily available those
> devices are, but I think other people would be interested in it, plus
> the rest of us can more easily pitch in if we can access the code.
>

--
Kohsuke Kawaguchi
Sun Microsystems                   [hidden email]

smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: extreme feedback device plugin

Kohsuke Kawaguchi-2
In reply to this post by Tom Ball
Tom Ball wrote:
> I recommend that instead of hacking Hudson, you create an RSS reader for
> your device and sign it up to Hudson's existing RSS feed.  That's what I
> did for the NetBeans build monitor plug-in; although it doesn't have any
> cool hardware, the control flow is the same.  Here is a link to its
> simple RSS feed parser, which fires status events your device could
> easily sink:
>
> http://www.netbeans.org/source/browse/contrib/buildmonitor/src/org/netbeans/modules/buildmonitor/BuildMonitor.java?rev=1.8&view=markup

Ah, that works, too. The difference is now the configuration is on each
orb, and you need a separate daemon or cron job to send the command to orb.


--
Kohsuke Kawaguchi
Sun Microsystems                   [hidden email]

smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: extreme feedback device plugin

N Daley
In reply to this post by N Daley
Ah, forgot to mention that I got the orb working in about 1/2 hour with this method.  Thanks Tom.

Cheers,
Nige

----- Original Message ----
From: Kohsuke Kawaguchi <[hidden email]>
To: [hidden email]
Sent: Wednesday, November 15, 2006 4:36:50 PM
Subject: Re: extreme feedback device plugin

Tom Ball wrote:
> I recommend that instead of hacking Hudson, you create an RSS reader for
> your device and sign it up to Hudson's existing RSS feed.  That's what I
> did for the NetBeans build monitor plug-in; although it doesn't have any
> cool hardware, the control flow is the same.  Here is a link to its
> simple RSS feed parser, which fires status events your device could
> easily sink:
>
> http://www.netbeans.org/source/browse/contrib/buildmonitor/src/org/netbeans/modules/buildmonitor/BuildMonitor.java?rev=1.8&view=markup

Ah, that works, too. The difference is now the configuration is on each
orb, and you need a separate daemon or cron job to send the command to orb.


--
Kohsuke Kawaguchi
Sun Microsystems                   [hidden email]



Sponsored Link


Mortgage rates near 39yr lows. $420,000 Mortgage for $1,399/mo - Calculate new house payment