Plugin implements proper termination of Cygwin processes in Jenkins jobs # About this plugin By default, Jenkins don't terminate Cygwin process trees on timeouts and manual termination of builds on Windows platforms. This is caused by Cygwin architecture, but it is very painful in automation environments, because unterminated processes may modify files and even lock workspace for the future builds. This plugin implements proper termination of Cygwin process trees in Jenkins jobs. See [JENKINS-13615](https://issues.jenkins-ci.org/browse/JENKINS-13615) for more info. # Usage guidelines Warning Due to the current implementation of Jenkins core, this plugin version works only for processes, which are the children of the parent process being terminated by Jenkins. ## Requirements 1. Jenkins Core should contain fix for invocation of Process Killers on Windows (see [JENKINS-19156](https://issues.jenkins-ci.org/browse/JENKINS-19156) for more info) 2. You should use only one Cygwin installation on the host 1. Due to Cygwin's architecture, ps commands discovers processes running within the same cygwin1.dll 2. Other processes will be ignored ## Initial configuration By default, plugin is disabled. After the installation, plugin should be configured via Jenkins global configuration page. ### Approach 1. Minimal configuration Steps below allow to use Cygwin Process Killer, which relies on global environment variables during the process termination. Please note that this approach is not recommended due to possible conflicts with other utilities. 1. Go to "Cygwin process killer" section of the global configuration page 2. Click on "Enable killer" checkbox to enable the plugin ![](docs/images/KillerConfiguration.png) ### Approach 2. Configure the plugin to use Cygwin tool installations This section describes setup of Cygwin Killer for installations without configured Cygwin environment 1. Configure the "Cygwin Process Killer" installation 1. Tool's home should point to CYGWIN\_HOME (root folder with bin and lib folders) 2. %CYGWIN\_HOME%\\bin must contain *uname.exe* and *bash.exe* utilities 3. You can use any tool installer. You also can configure local installation via individual node configurations. 2. Save and reopen the configuration. Then, go to the "Cygwin process killer" section 3. Click on the "Use Cygwin from a tool installation" checkbox 4. Select a tool installation from the list 5. Optional 1. You can customize process termination scripts. If you have a version for execution with "-ex" flags, please create a pull request ASAP :) ![](docs/images/ToolInstallation.png){width="819" height="296"} ![](docs/images/KillerConfiguration_Tool.png) # Wishlist - Extended logging and support of various interpreters - Automatic definition of used cygwin1.dll - Support of a graceful process termination (the current version invokes "kill -9") - "Restore default" script button in the web interface # Version history #### Version 0.2 (Jan 31, 2018) - Require Jenkins Core 1.625.3 or above - Fix issues reported by FindBugs and injected tests #### Version 0.1 (10/25/2013) - Initial version of the plugin