2
votes

Le rapport du tableau de bord HTML JMeter ne s'affiche pas dans Jenkins

Je ne parviens pas à afficher le rapport Jmeter Dashboard dans Jenkins, mais le travail jenkins crée un rapport index.html mais il est vide

 jenkins

cela fonctionne très bien localement et index.html est généré avec toutes les valeurs requises.

Que me manque-t-il ici?

voici mon pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.performance.dataengg</groupId>
  <artifactId>DataEngg</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>

  <name>DataEngg</name>
  <url>http://maven.apache.org</url>

  <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <profiles>
        <profile>
            <id>Windows</id>
            <activation>
                <os>
                    <family>Windows</family>
                </os>
            </activation>
            <properties>
                <script.extension>.bat</script.extension>
            </properties>
        </profile>
        <profile>
            <id>unix</id>
            <activation>
                <os>
                    <family>unix</family>
                </os>
            </activation>
            <properties>
                <script.extension>.sh</script.extension>
            </properties>
        </profile>
    </profiles>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <filesets>
                        <fileset>
                            <directory>${basedir}/htmlReport/Reporting_framework/</directory>
                            <includes>
                                <include>AggregateReport.csv</include>
                                <include>Report.html</include>
                                <include>ReportOutput.zip</include>
                            </includes>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>

            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>2.7.0</version>
                <configuration>
                    <propertiesUser>
                        <threads>${threads}</threads>
                        <rampUp>${rampUp}</rampUp>
                        <baseURL>${baseURL}</baseURL>
                        <Pconstantthroughputtimer>${constantThroughputTimer}</Pconstantthroughputtimer>
                        <Resultsdirectory>${basedir}/target/jmeter/results/*.jtl</Resultsdirectory>
                        <loopCountDuration>${loopCountDuration}</loopCountDuration>

                    </propertiesUser>
                </configuration>
                <executions>
                    <!-- Run JMeter tests -->
                     <execution>
                        <id>jmeter-tests</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                    <!-- Fail build on errors in test -->
                </executions>
            </plugin>

             <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>pre-site</phase>
                        <configuration>
                            <tasks>
                                <delete dir="${basedir}/target/jmeter/results/dashboard" />
                                <mkdir dir="${basedir}/target/jmeter/results/dashboard" />
                                <copy file="${basedir}/src/test/resources/reportgenerator.properties"
                                         tofile="${basedir}/target/jmeter/bin/reportgenerator.properties" />
                                <copy todir="${basedir}/target/jmeter/bin/report-template">
                                    <fileset dir="${basedir}/src/test/resources/report-template" />
                                </copy>
                                <java jar="${basedir}/target/jmeter/bin/ApacheJMeter-4.0.jar" fork="true">
                                    <arg value="-l" />
                                    <arg value="${basedir}/target/jmeter/results/*.jtl" />
                                    <arg value="-g" />
                                    <arg value="${basedir}/target/jmeter/results/*.jtl" />
                                    <arg value="-o" />
                                    <arg value="${basedir}/target/jmeter/results/dashboard/" />
                                </java>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Peut-il s'agir d'une configuration jenkins qui ne va pas?


0 commentaires

3 Réponses :


3
votes

Cela est dû à la politique de sécurité du contenu de Jenkins .

Vous devez l'ajuster en définissant la propriété Java System:

hudson.model.DirectoryBrowserSupport.CSP

Comme il contient un caractère réservé, vous pouvez définir cette propriété en créant un Groovy script fichier $ JENKINS_HOME / init.groovy, ou tout fichier .groovy du répertoire $ JENKINS_HOME / init.groovy.d / contenant:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline'; font-src *;img-src 'self' data: *;frame-ancestors 'self'")

Si vous souhaitez en savoir plus sur les tests de performances et JMeter, ce book peut vous aider.

Notez que vous pouvez faire ce que vous faites facilement en suivant ceci tutoriel .


2 commentaires

L'administrateur de jenkins dit que le changement mentionné ci-dessus pose un risque pour la sécurité, est-ce vrai? si oui, quelle est la solution alternative, puis-je configurer les changements dans le travail jenkins lui-même?


Cela détend la sécurité mais demandez-lui d'expliquer le risque. Non, vous ne pouvez pas configurer au niveau de la tâche. Aucune autre solution AFAIK. Si la réponse est correcte, veuillez l'accepter et voter pour. Merci



0
votes

Vous pouvez afficher le tableau de bord à l'aide du HTML Publisher Plugin

Par défaut, la la politique de sécurité du contenu Jenkins ressemble à p >

sandbox; default-src 'none'; img-src 'self'; style-src 'self';

La valeur est en cours de lecture depuis hudson.model.DirectoryBrowserSupport.CSP Propriété Java System afin que vous puissiez le configurer de manière plus" décontractée "en définissant la valeur appropriée via Jenkins Script Console (il vivra jusqu'au prochain redémarrage) ou en ajoutant le paramètre approprié à l'argument de démarrage de Jenkins.

Vous pourriez également être intéressé par Jenkins Performance Plugin qui ajoute des fonctionnalités supplémentaires telles que des critères de réussite / échec et des graphiques de tendances de performances


0 commentaires

2
votes

Étant donné que mon organisation ne permet pas d'assouplir la sécurité et de réinitialiser la politique de sécurité du contenu, je l'ai donc fait en utilisant docker et j'ai pu afficher les rapports proprement

Voici le Dockerfile p>

FROM alpine:3.9

ENV JMETER_HOME /opt/apache-jmeter-5.1
ENV JMETER_BIN ${JMETER_HOME}/bin
ENV PATH $PATH:$JMETER_BIN
ENV JMETER_DOWNLOAD_URL http://mirrors.estointernet.in/apache//jmeter/binaries/apache-jmeter-5.1.tgz

RUN apk update \
    && apk upgrade \
    && apk add --update openjdk8-jre curl unzip bash \
    && rm -rf /var/cache/apk/* \
    && mkdir -p /tmp/dependencies  \
    && curl -L --silent ${JMETER_DOWNLOAD_URL} >  /tmp/dependencies/apache-jmeter-5.1.tgz  \
    && mkdir -p /opt  \
    && tar -xzf /tmp/dependencies/apache-jmeter-5.1.tgz -C /opt  \
    && rm -rf /tmp/dependencies

COPY launch.sh /opt/
COPY src/ /opt/src

WORKDIR /opt

ENTRYPOINT ["/opt/launch.sh"]

Et vous pouvez avoir vos commandes jmeter dans les scripts launch.sh et .jmx dans src code > dossier


0 commentaires