Jenkins : Durable Task Plugin

Library offering an extension point for processes which can run outside of Jenkins yet be monitored.

Plugin Information

View Durable Task on the plugin site for more information.

Offers no direct features on its own but can be used by other feature plugins. Example

Blog post


Version 1.30 (Jul 05, 2019)

  • Bugfix: Run the wrapper process for shell scripts in the background. (JENKINS-58290)
  • Bugfix: Use sh to run shell scripts rather than attempting to use the absolute path to the default shell from the master on agents. (PR 95)
  • Bugfix: Make PowerShell exit codes propagate correctly. Fixes a regression from version 1.23 (JENKINS-52884)

Version 1.29 (Jan 31, 2019)

  • Enhancement: Add support for z/OS Unix System Services to the sh step. (JENKINS-37341)

Version 1.28 (Nov 14, 2018)

  • Bugfix: Do not rely on a shebang line to select the interpreter for sh scripts. This means that Pipelines can now use relative names for interpreters accessible from the PATH environment variable. (JENKINS-50902)

Version 1.27 (Nov 01, 2018)

  • Do not print the working directory or the type of script being run when a durable task starts. (PR #83)
  • Internal: Shut down thread pools when Jenkins shuts down. Should only affect other plugins using this plugin in their tests.

Version 1.26 (Sep 25, 2018)

  • Bugfix: Increase the default heartbeat interval used to detect dead processes from 15 seconds to 5 minutes (JENKINS-48300)
  • Developer: Define API for pushing durable task logs from build agents directly instead of having the Jenkins master pull logs from build agents (JENKINS-52165)

Version 1.25 (Aug 8, 2018)

  • Major bugfix: Fix regressions in 1.23 and 1.24 that caused build failures when running sh steps in minimal environments such as Alpine and Cygwin (JENKINS-52881)

Version 1.24 (Aug 7, 2018)

  • (Warning: Fix is incomplete. Full fix is in version 1.25) Major bugfix: Fix regression in 1.23 that caused build failures on Alpine-based build agents (JENKINS-52847)
  • Developer: Define API for gathering command output in a local encoding (JEP-206)

Version 1.23 (Jul 31, 2018)

  • Major bugfix: properly count log content sent to avoid endlessly-repeating logs (JENKINS-37575)
  • Bugfix: Ensure that the logfile-touching process exits when the wrapper script running the durable task dies (JENKINS-50892)
  • Fix/Enhancement: Simplify Powershell execution and make it more consistent (JENKINS-50840)
  • Admin: support incrementals

Version 1.22 (Mar 13, 2018)

  • Bugfix: Fix issues with Powershell error handling (JENKINS-50029)

Version 1.21 (Mar 8, 2018)

  • Bugfix: Resolves regression with Batch steps "hanging" on some Windows build agents (JENKINS-50025) introduced by 1.19
    • Fix for existing builds suffering the issue: go into the control directory in the workspace and run 'move jenkins-result.txt.tmp jenkins-result.txt' - the batch step will complete normally

Version 1.20 (Mar 7, 2018)

  • Bugfix: Prevent PowerShell stdout pollution when using returnStdout (JENKINS-49754)

Version 1.19 (Mar 6, 2018)

  • Bugfix: Fix bogus DurableTask failures with "exit status code -1" due to non-atomic write of exit status code from processes (JENKINS-25519)

Version 1.18 (Feb 16, 2018)

Version 1.17 (Nov 21, 2017)

  • Version 1.16 accidentally declared a Java dependency of 8+, despite being otherwise compatible with Jenkins 2.7.x+ which run on Java 7. Reverted to 7+.
  • Internal: improved resilience of Docker-based test suites.

Version 1.16 (Nov 14, 2017)

This version (1.16) temporarily introduced a dependency on Java 8 which was reverted to Java 7 with version 1.17

  • JENKINS-47791 - Eliminate ProcessLiveness Resolved Using a new system for determining whether sh step processes are still alive, which should solve various robustness issues.
  • Fixed BOM issue with the powershell step, perhaps  JENKINS-46496 - Powershell step in pipeline job outputs UTF-8 BOM Closed .

Version 1.15 (Oct 13, 2017)

  • Apply a timeout to checking when processes are started, so that we can't hang indefinitely

Version 1.14 (Jun 15 2017)

  • JENKINS-34581 Powershell support.
  • JENKINS-43639 File descriptor leak.

Version 1.13 (Jan 18 2017)

  • JENKINS-40734 Environment variable values containing $ were not correctly passed to subprocesses.
  • JENKINS-40225 Replace backslashes when on Cygwin to allow sh to be used.

Users setting node (or global) environment variables like PATH=/something:$PATH will see Pipeline sh failures with this update unless you also update the Pipeline Nodes and Processes Plugin to 2.9 or later (JENKINS-41339). Anyway you are advised to use the syntax PATH+ANYKEY=/something, as documented in inline help.

Version 1.12 (Jul 28 2016)

Version 1.11 (Jun 29 2016)

Version 1.10 (May 19 2016)

Version 1.9 (Mar 24 2016)

  • JENKINS-32701 Handle percent signs in the working directory for batch scripts, for example due to a Pipeline branch project based on a Git branch with a / in its name.

Version 1.8 (Mar 03 2016)

Version 1.8-beta-1 (Jan 19 2016)

  • JENKINS-32264 Linux-only process liveness check broke usage on FreeBSD.

Version 1.7 (Dec 03 2015)

  • JENKINS-27152 Not a fix, but use a more predictable control directory name.
  • JENKINS-27419 Handle batch scripts that exit without /b.

Version 1.6 (Aug 04 2015)

  • Do not kill a one-shot slave merely because a flyweight task happened to run on it (rather than on master as usual). Works around a bug in the Multibranch API plugin.

Version 1.5 (May 04 2015)

  • Requires Jenkins 1.565.3+.
  • Richer API for launching and stopping processes.

Version 1.4 (Mar 06 2015)

Version 1.3 (Feb 02 2015)

  • Continuing to try to fix deadlocks.

Version 1.2 (Jan 13 2015)

  • JENKINS-26380 Occasional deadlocks when running against Jenkins 1.592+.

Version 1.1 (Dec 05 2014)

  • JENKINS-25848 Failure to run shell tasks on some Mac OS X installations.

Version 1.0 (Nov 25 2014)

  • JENKINS-25727 Race condition causing spurious -1 exit codes, especially for short-lived shell scripts.
  • Print a warning when asked to run an empty shell script.
  • Avoid allocating a useless thread on the slave while running a task.

Version 0.7 (Oct 10 2014)

  • JENKINS-25727 Better reliability of liveness checker when short-lived scripts are being run. (Amended in 1.0.)

Version 0.6 (Oct 08 2014)

  • JENKINS-22249 Detect if the wrapper shell script is dead, for example because the machine was rebooted.
  • Efficiency improvements in log copying.

Version 0.5 (Sep 24 2014)

  • New APIs ContinuableExecutable and OnceRetentionStrategy.
  • Moved ContinuedTask into a subpackage.

Version 0.4 (Aug 27 2014)

Version 0.3 (Jul 22 2014)

  • Supporting

Version 0.2 (May 29 2014)

  • JENKINS-22248 Allow multiple scripts to run in the same workspace concurrently.
  • Allow a “shell” script to override the interpreter.
  • Use the default configured shell.
  • Start the shell with -xe (echo commands, fail on error).

Version 0.1 (Mar 18 2014)

  • Initial release.