This plugin is up for adoption. Want to help improve this plugin? Click here to learn more!
FSTrigger provides polling mechanisms to monitor a file system and trigger a build if a file or a set of files have changed.
The plug-in makes it possible to monitor changes of a file or a set of files in a folder.
Note: The plug-in uses only persistence in memory. There is no impact on the Jenkins infrastructure (no new files created).
This plugin provides a polling typology among the XTrigger Plugin.
1) Polling a set of files in a folder
For the first use case, we trigger a build if the list of files has changed between 2 pollings:
A build is triggered in the following situations:
- there are more or fewer files
- the last modified date of at least one file has changed
- the content of at least one file has changed
2) Polling a file in a folder
For the second use case, we monitor a file from a path.
The file path can be provided either explicitly or with a GLOB.
A build is triggered in the following situations:
- The file exists and it didn't exist in the previous polling
- The file no longer exists whereas it existed in the previous polling
- The last modification date of the file has changed compared to the previous polling
- The content of the file has changed
For the latest choice, the content file detection can be:
- the full content in a file (whatever the file type)
- the modification of values from XPath expressions in an XML file
- the modification of the structure or the content in a JAR or in ZIP file
- the modification of the structure or the content in a TAR file.
- the modification of a property (or all properties) in a properties file
- the modification of an attribute (or all attributes) in the MANIFEST.NF of a JAR file
- the modification of an attribute (or all attributes) in a source MANIFEST.NF
- the presence of a pattern in a text file (such as a log file)
Some use cases
1. Scheduling a build if a specified file is found in a folder and was not present in the previous build
2. Scheduling a build if the last modification date of a file has changed compared to the last modification file date captured in the previous polling
3. Avoiding explicit jobs dependencies (with upstream/downstream mechanisms)
- A first job 'jobA' polls a SCM tool and schedules a build if there is at least one change.
The build instantiates a build process, produces artifacts (binaries, text output, ...) and deploys these artifacts in a target filesystem.
- A second job 'jobB' checks the existance of the new artifacts in the target filesystem. If there is a change, 'jobB' is scheduled.
'jobB' may provide packaging steps, testing steps or other steps of a pipeline.
Both jobs are independents and listen external events.
Other similar plugins
* If you want just to know if a set of files exists and display the number of files found, you can use Files Found Trigger plugin.
The current code is written in Java and it is not very optimized. For example, we can't get similar performance as with Python. Therefore, we recommend to not use FSTrigger plugin when you want to poll a directory with a large set of files.
* Fix XPath computation
* Fix Check Path field with latest Jenkins version in configuration
* Upgrade to latest Jenkins LTS (1.554.1)
* Fix JENKINS-17591 - FSTrigger fails to poll when build node labels change
* Fix JENKINS-18658 - NPE in FSTrigger upon configuration save
* Fix JENKINS-17641 - Unknown field 'logEnabled' in org.jenkinsci.lib.xtrigger.XTriggerCause
* Fix JENKINS-16809 - Plugins FSTrigger/Envinject, NPE while loading jobs
** Update to xtrigger-lib 0.20
** Update to envinject-lib 1.17
* Fix NullPointerException on polling action
* Upgrade to envinject-lib 1.11
* Upgrade to xtrigger-lib 0.18
* Fix potential NullPointer exception at startup (envinject-lib 1.8/ xtrigger-lib 1.5)
* Upgrade to xtrigger-lib 0.14 (more logs)
* Fix JENKINS-12176 - Unable to delete a job that has a fstrigger
* Upgrade to xtrigger-lib 0.13
* Fix reponed JENKINS-12924 - FSTrigger triggers builds on jenkins restart
* Fix JENKINS-12924 - FSTrigger triggers builds on jenkins restart
* Update to xtrigger-lib 0.8 (fix JENKINS-12888)
* Update to xtrigger-lib 0.7
* Add the choice of check content, last modification date or a change in the size of files for folder content type
* Update to xtrigger-lib 0.6
* For 'Folder type', add check with new directories
* Fix JENKINS-12208 - More information in log file
* Fix JENKINS-12168 - Monitor files - Does not monitor a unix soft link
* Add check 'A job is not triggered when Jenkins is quieting down and is not buildable'
* Fix reoponed JENKINS-12073 - fstrigger plugin download didn't pull in dependency envinject
* Fix JENKINS-12073 - fstrigger plugin download didn't pull in dependency envinject
* For 'monitor folder' type, the last modification date is checked before a content check
* Environment variables are taken into account
* Fix JENKINS-11569 - Enhanced help for includes
* Fix JENKINS-11567 - unhandled FileNotFountException
* Add check for configuration page
* Built for 1.409 (compatible LTS)
* Fix bug on save when no content nature is selected for FileNameTrigger
* Fix empty includes value for 'Folder trigger type'
* Fix path resolution for Windows - Merge pull request from vinaynaik
* Add the ability to monitor more than one file.
* Add an help message for the update center.
* Remove named regular expression (unusual)
Release 0.9 (technical release)
* Internationalizing some messages
* Fix a bug for XML Content type
* Added help messages for end users.
* Add Tar monitoring capabilities
* Fix a regression on the last modification date check
* Fix check on last modification date
* Polling is done on slaves if configured
* Remove the usage of regular expression for the file name to poll
* Internal Refactoring
* Add 'Poll the content of an XML File' regarding XPath expressions.
* Add a page for displaying polling log
* Initial release