Problem spawning background process from Groovy script

755 views
Skip to first unread message

Dirk Heinrichs

unread,
Mar 9, 2017, 7:23:31 AM3/9/17
to Jenkins Users
Hi,

I've got a job that runs a Groovy script which should pull from a Mercurial repo, merge a given branch and then serve the result to sub jobs running in a multijob phase to perform builds on different OS's. For this to achieve, the script should spawn a "hg serve" process into the background. Once the Multijob phases have finished, another script should then kill that process again.

That works fine as long as I execute the Groovy script standalone (the script finishes and the background process keeps running). But if executed from Jenkins, the "hg serve" process is killed when the script finishes, which is of course not what I want.

How can I spawn a background process from a Groovy script in Jenkins so that it's still running when the script ends?

Here's my script:
// The repo clone is in directory "merge" in the workspace
def port = "9000"
def builder = new ProcessBuilder(["hg", "serve", "-p", port])
builder.redirectErrorStream(true)
builder.directory(new File("merge"))
def proc = builder.start()

Happens regardless of the slaves OS. Jenkins version is 2.32.1 (in case it matters).

Thanks a lot...

    Dirk
--
Dirk Heinrichs
Senior Systems Engineer, Delivery Pipeline
OpenTextTM Discovery | Recommind
Email: dirk.he...@recommind.com
Website: www.recommind.de

Recommind GmbH, Von-Liebig-Straße 1, 53359 Rheinbach

Vertretungsberechtigte Geschäftsführer John Marshall Doolittle, Gordon Davies, Roger Illing, Registergericht Amtsgericht Bonn, Registernummer HRB 10646

This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden

Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet.

Dirk Heinrichs

unread,
Mar 9, 2017, 8:37:49 AM3/9/17
to jenkins...@googlegroups.com
On 09.03.2017 13:23, Dirk Heinrichs wrote:

How can I spawn a background process from a Groovy script in Jenkins so that it's still running when the script ends?

OK, nevermind. Seems the background process is killed because the job's next step failed (which is OK).

Bye...

Christopher Orr

unread,
Mar 10, 2017, 9:45:14 PM3/10/17
to jenkins...@googlegroups.com
On Thu, 9 Mar 2017, at 13:23, Dirk Heinrichs wrote:
> Hi,
>
> I've got a job that runs a Groovy script which should pull from a
> Mercurial repo, merge a given branch and then serve the result to sub
> jobs running in a multijob phase to perform builds on different OS's.
> For this to achieve, the script should spawn a "hg serve" process into
> the background. Once the Multijob phases have finished, another script
> should then kill that process again.
>
> That works fine as long as I execute the Groovy script standalone (the
> script finishes and the background process keeps running). But if
> executed from Jenkins, the "hg serve" process is killed when the script
> finishes, which is of course not what I want.
>
> How can I spawn a background process from a Groovy script in Jenkins so
> that it's still running when the script ends?

Sounds like
https://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build
Reply all
Reply to author
Forward
0 new messages