如何在mvn中运行脚本作为测试

时间:2016-01-28 17:21:13

标签: maven testing jenkins

我想在Maven / Jenkins中有以下场景:

  • 运行测试脚本(bash / shell)
  • 当脚本退出时出现问题(错误),那么Jenkins上的Maven构建应该在UNSTABLE而不是FAILURE状态

问题:我该怎么做?

1 个答案:

答案 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构建中更改此行为,并将其配置为构建后操作:

  • 您应该设置一个正则表达式,该表达式可以作为Jenkins上Maven构建输出的一部分找到。例如,在这种情况下,正则表达式.*Script Failed.*将匹配脚本打印的字符串Script Failed。所以构建实际上会失败,但是我们可以改变它在Jenkins上的状态(但不是在Maven上)
  • 您应该选中Unstable if found选项,该选项会将构建状态从FAILED转换为UNSTABLE

根据Unstable if found选项的文档:

  

使用此选项设置构建不稳定而不是使构建失败。

您可以在下图中看到此类配置的示例: Jenkins Text Finder Plugin example

因此,您可以根据需要在test阶段执行脚本,如果脚本执行此操作,Maven构建将失败,但Jenkins构建将根据您的Text Finder配置更改其状态插件。

另请注意:如果您希望Maven在脚本没有失败的情况下,您可以使用上面提到的successCodes并仍然使Jenkins构建将其状态更改为UNSTABLE,具体取决于Text Finder插件的相同配置。因此,不同的组合是可能的。