我想在Maven / Jenkins中有以下场景:
UNSTABLE
而不是FAILURE
状态问题:我该怎么做?
答案 0 :(得分:1)
您可以使用Exec Maven Plugin及其exec
目标在Maven中运行脚本。
如果您想在test
阶段运行脚本,那么您可以将插件的执行绑定到它,如下所示:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>run-test-script</id>
<phase>test</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable><!-- configure here your script .sh/.cmd --> </executable>
<arguments>
<argument><!-- configure here arguments, if any --></argument>
</arguments>
<workingDirectory><!-- configure here PWD, if required --></workingDirectory>
</configuration>
</plugin>
</plugins>
</build>
请注意,您还可以通过successCodes
配置条目配置不同的成功退出代码。
如果脚本失败,则构建将失败。但是,您可以通过Jenkins Text Finder Plugin在Jenkins构建中更改此行为,并将其配置为构建后操作:
.*Script Failed.*
将匹配脚本打印的字符串Script Failed
。所以构建实际上会失败,但是我们可以改变它在Jenkins上的状态(但不是在Maven上)Unstable if found
选项,该选项会将构建状态从FAILED
转换为UNSTABLE
根据Unstable if found
选项的文档:
使用此选项设置构建不稳定而不是使构建失败。
因此,您可以根据需要在test
阶段执行脚本,如果脚本执行此操作,Maven构建将失败,但Jenkins构建将根据您的Text Finder配置更改其状态插件。
另请注意:如果您希望Maven在脚本没有失败的情况下,您可以使用上面提到的successCodes
并仍然使Jenkins构建将其状态更改为UNSTABLE
,具体取决于Text Finder插件的相同配置。因此,不同的组合是可能的。