Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jenkinsci/text-finder-plugin

Jenkins text-finder plugin
https://github.com/jenkinsci/text-finder-plugin

Last synced: about 1 month ago
JSON representation

Jenkins text-finder plugin

Awesome Lists containing this project

README

        

= Text Finder Plugin
:toc:
:toc-placement!:
:toc-title:
ifdef::env-github[]
:tip-caption: :bulb:
:note-caption: :information_source:
:important-caption: :heavy_exclamation_mark:
:caution-caption: :fire:
:warning-caption: :warning:
endif::[]

https://ci.jenkins.io/job/Plugins/job/text-finder-plugin/job/master/[image:https://ci.jenkins.io/job/Plugins/job/text-finder-plugin/job/master/badge/icon[Build Status]]
https://github.com/jenkinsci/text-finder-plugin/graphs/contributors[image:https://img.shields.io/github/contributors/jenkinsci/text-finder-plugin.svg[Contributors]]
https://plugins.jenkins.io/text-finder[image:https://img.shields.io/jenkins/plugin/v/text-finder.svg[Jenkins Plugin]]
https://github.com/jenkinsci/text-finder-plugin/releases/latest[image:https://img.shields.io/github/release/jenkinsci/text-finder-plugin.svg?label=changelog[GitHub release]]
https://plugins.jenkins.io/text-finder[image:https://img.shields.io/jenkins/plugin/i/text-finder.svg?color=blue[Jenkins Plugin Installs]]

toc::[]

== Introduction

This plugin lets you search for some text using regular expressions in a set of files or the console log.
Based on the outcome, you can downgrade the build result to `UNSTABLE`, `FAILURE`, `NOT_BUILT`, or `ABORTED`.

For example, you can search for the string `failure` in a set of log files.
If a match is found, you can downgrade the build result from `SUCCESS` to `FAILURE`.
This is handy when you have some tools in your build chain that do not properly set the exit code.

== Getting started

=== https://jenkins.io/doc/book/pipeline/[Pipeline] jobs

The basic Pipeline syntax is as follows:

[source,groovy]
----
findText(textFinders: [textFinder(regexp: '', fileSet: '')])
----

The regular expression uses the syntax supported by the Java https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html[`Pattern`] class.
The file set specifies the path to the files to search, relative to the workspace root.
This can use wildcards, like `logs/**/*/*.txt`.
See the documentation for the `@includes` attribute of the Ant https://ant.apache.org/manual/Types/fileset.html[`FileSet`] type for details.

To also check the console log, use the following syntax:

[source,groovy]
----
findText(textFinders: [textFinder(regexp: '', fileSet: '', alsoCheckConsoleOutput: true)])
----

If you just want to check the console log, you can omit the file set:

[source,groovy]
----
findText(textFinders: [textFinder(regexp: '', alsoCheckConsoleOutput: true)])
----

To downgrade the build result, use the following syntax:

[source,groovy]
----
findText(textFinders: [textFinder([...], buildResult: 'UNSTABLE')])
----

If a match is found, the build result will be set to this value.

NOTE: The build result can only get worse, so you cannot change the result to `SUCCESS` if the current result is `UNSTABLE` or worse.

Whether or not a build is downgraded depends on its change condition.
The default change condition is `MATCH_FOUND`, which downgrades the build result if a match is found.
To downgrade the build result if a match is _not_ found, set the change condition to `MATCH_NOT_FOUND`:

[source,groovy]
----
findText(textFinders: [textFinder([...], changeCondition: 'MATCH_NOT_FOUND', buildResult: 'UNSTABLE')])
----

To search for multiple regular expressions, use the following syntax:

[source,groovy]
----
findText(textFinders: [
textFinder(regexp: '', [...]),
textFinder(regexp: '', [...]),
textFinder(regexp: '', [...])
])
----

=== Freestyle jobs

This plugin provides https://plugins.jenkins.io/job-dsl/[Job DSL] support for Freestyle jobs using https://github.com/jenkinsci/job-dsl-plugin/wiki/Dynamic-DSL[the Dynamic DSL].
For example:

[source,groovy]
----
job('example') {
publishers {
findText {
textFinders {
textFinder {
regexp ''
fileSet ''
changeCondition ''
alsoCheckConsoleOutput true
buildResult 'UNSTABLE'
}
}
}
}
}
----

To search for multiple regular expressions, use the following syntax:

[source,groovy]
----
job('example') {
publishers {
findText {
textFinders {
textFinder {
regexp ''
[...]
}
textFinder {
regexp ''
[...]
}
textFinder {
regexp ''
[...]
}
}
}
}
}
----

== Issues

Report issues and enhancements in the https://issues.jenkins.io/[Jenkins issue tracker].
Use the `text-finder-plugin` component in the `JENKINS` project.

== Contributing

Refer to our https://github.com/jenkinsci/.github/blob/master/CONTRIBUTING.md[contribution guidelines].