Как удаленно запускать интеграционные тесты с помощью maven - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть многомодульный проект. Каждый модуль имеет джунты и интеграционные тесты.

Я могу развернуть модуль (он содержит папку lib, которая содержит все зависимости, конфигурационную папку, тестовую папку, которая содержит тестовые классы и файлы поддержки) на сервер, используя следующий плагин.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>${maven.antrun.plugin}</version>
<dependencies>
    <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-jsch</artifactId>
        <version>1.9.9</version>
    </dependency>
</dependencies>
<executions>
    <execution>
        <id>integration-test</id>
        <phase>install</phase>
        <configuration>
            <target name="integrationTest">
                <macrodef name="integrationTest">
                    <attribute name="adapter"/>
                    <sequential>
                        <!--@formatter:off-->
                         <tar tarfile="${basedir}/target/test-integration-src.tar.gz" compression="gzip" longfile="gnu">
                            <tarfileset dir="${basedir}/target/test-integration-src" mode="750" prefix="test-integration-src">
                                <include name="**/*"/>
                                <exclude name="**/*.java"/>
                            </tarfileset>
                         </tar>
                        <echo message="Installing ${basedir}/target/@{adapter}-${project.version}.tar.gz in test server ${test.server.host} ."/>
                        <scp todir="${test.server.user}@${test.server.host}:${test.server.installDir}"
                             sftp="true"
                             failonerror="false"
                             trust="true"
                             verbose="true"
                             filemode="750"
                             password="${test.server.password}">
                            <fileset dir="${basedir}/target">
                                <include name="@{adapter}-${project.version}.tar.gz"/>
                            </fileset>
                        </scp>
                        <sshexec trust="yes" host="${test.server.host}"
                                 username="${test.server.user}"
                                 password="${test.server.password}"
                                command="tar -zxvf ${test.server.installDir}/@{adapter}-${project.version}.tar.gz -C ${test.server.installDir} &amp;&amp; rm  ${test.server.installDir}/@{adapter}-${project.version}.tar.gz"/>
                        <scp todir="${test.server.user}@${test.server.host}:${test.server.installDir}/@{adapter}-${project.version}"
                             sftp="true"
                             failonerror="false"
                             verbose="true"
                             filemode="750"
                             password="${test.server.password}">
                            <fileset dir="${basedir}/target">
                                <include name="test-integration-src.tar.gz"/>
                            </fileset>
                        </scp>
                        <sshexec trust="yes" host="${test.server.host}"
                                 username="${test.server.user}"
                                 password="${test.server.password}"
                                command="${test.server.installDir}/integrationtest_runner.sh @{adapter}-${project.version}"/>
                        <!--@formatter:on-->
                    </sequential>
                </macrodef>
            </target>
        </configuration>
        <goals>
            <goal>run</goal>
        </goals>
    </execution>
</executions>

затем запустите тесты с использованием сценария интеграцииtest_runner.sh. он содержит следующую команду maven

mvn surefire:test -Denv=test -f pom.xml

верный плагин.

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <configuration>
                    <reuseForks>false</reuseForks>
                    <argLine>-javaagent:${basedir}/lib/spring-agent-${version.spring}.jar
                    </argLine>
                </configuration>
            </plugin>

Он работает успешно, если репозиторий maven имеет все зависимости.

Теперь мой вопрос:

1) Как использовать локальные зависимости (присутствующие в модуле \ lib) из модуля вместо репозитория maven.

2) Как дождаться сборки jenkins, пока сервер не вернет результаты теста.

3) не удается построить сборку Дженкинса в зависимости от состояния.

попробовал вариант ниже, но не повезло с вопросом 1:

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <configuration>
                    <reuseForks>false</reuseForks>
                    <argLine>-javaagent:${basedir}/lib/spring-agent-${version.spring}.jar
                    </argLine>
        <additionalClasspathElements>
                          <additionalClasspathElement>${basedir}/lib/*.jar</additionalClasspathElement>
                    </additionalClasspathElements>
        <useManifestOnlyJar>false</useManifestOnlyJar>  
        <useSystemClassLoader>false</useSystemClassLoader>
                </configuration>
            </plugin>
...