gpt4 book ai didi

deployment - 部署到集成服务器并使用 Maven 运行冒烟测试

转载 作者:行者123 更新时间:2023-12-04 14:18:13 33 4
gpt4 key购买 nike

我们正在使用 Maven 构建一个 Web 应用程序。

现在我们希望我们的 CI(持续集成)服务器自动将 WAR 部署到远程 Tomcat 实例,该实例充当 alpha 测试服务器。

我们使用 cargo-maven-plugin 来做到这一点,它工作正常。

但是,现在我们还想在部署后在远程 Tomcat 上运行冒烟测试,以确保(重新)部署顺利进行。

我们有测试可以做到这一点(使用 HtmlUnit),但我们无法将它们集成到 Maven 中。到目前为止,我们直接启动了 cargo (使用 mvn cargo:redeploy )。这行得通 - 但是,我们找不到之后运行冒烟测试的方法。

那么我们如何设置maven到

  • 首次使用 cargo 部署
  • 然后运行烟雾测试

  • 在 maven 构建生命周期中似乎没有这个位置。
    我们是否需要定义自定义构建生命周期?我们能以某种方式绑定(bind)到默认的生命周期阶段吗?哪一个?

    最佳答案

    您必须做的最重要的事情是将您的集成放入一个单独的 maven 模块中,称为whatever-it(用于集成测试)。将 cargo 插件放入集成阶段:

    <plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <configuration>
    <wait>false</wait>
    <container>
    <containerId>tomcat${tomcat.major}x</containerId>
    <zipUrlInstaller>
    <url>http://archive.apache.org/dist/tomcat/tomcat-${tomcat.major}/v${tomcat.version}/bin/apache-tomcat-${tomcat.version}.tar.gz</url>
    <downloadDir>${project.build.directory}/cargo/download/</downloadDir>
    <extractDir>${installDir}</extractDir>
    </zipUrlInstaller>
    <output>${project.build.directory}/tomcat${tomcat.major}x.log</output>
    <log>${project.build.directory}/cargo.log</log>
    </container>
    <configuration>
    <home>${project.build.directory}/tomcat-${tomcat.version}/container</home>
    <properties>
    <cargo.logging>high</cargo.logging>
    <cargo.servlet.port>9080</cargo.servlet.port>
    </properties>
    </configuration>
    </configuration>

    添加执行 block :
      <executions>
    <execution>
    <id>start-container</id>
    <phase>pre-integration-test</phase>
    <goals>
    <goal>start</goal>
    <goal>deploy</goal>
    </goals>
    <configuration>
    <deployer>
    <deployables>
    <deployable>
    <groupId>${project.groupId}</groupId>
    <artifactId>mod-war</artifactId>
    <type>war</type>
    <pingURL>http://localhost:9080/mod-war</pingURL>
    <pingTimeout>30000</pingTimeout>
    <properties>
    <context>mod-war</context>
    </properties>
    </deployable>
    </deployables>
    </deployer>
    </configuration>
    </execution>

    和关机部分:
          <execution>
    <id>stop-container</id>
    <phase>post-integration-test</phase>
    <goals>
    <goal>stop</goal>
    </goals>
    </execution>
    </executions>
    </plugin>

    上面的配置描述了一个完整的集成测试周期,下载一个 tomcat 解压 tomcat 的分发,部署一个 war 文件(依赖项目到 tomcat),启动 web 应用程序,最后停止 Tomcat。为了您的目的,您需要更改的是您没有启动阶段,因为您已经有一个正在运行的容器。 cargo documentation 中描述了如何执行此操作。 .最后,您必须将集成测试放入集成测试模块的 src/test/java 文件夹中,并且不要忘记配置 maven-surefire-plugin,如下所示:
      <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>
    <execution>
    <phase>integration-test</phase>
    <goals>
    <goal>test</goal>
    </goals>
    </execution>
    </executions>
    <configuration>
    <printSummary>true</printSummary>
    <testFailureIgnore>true</testFailureIgnore>
    </configuration>
    </plugin>

    您可以查看完整示例 here .对此的描述给出了 here .

    关于deployment - 部署到集成服务器并使用 Maven 运行冒烟测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6925356/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com