Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

[Resolved] Настройка и запуск тестов Jenkins + maven + git

git
jenkins
maven
Теги: #<Tag:0x00007f7b62880c40> #<Tag:0x00007f7b62880a60> #<Tag:0x00007f7b62880920>

(Pavel Berlinets) #1

Привет всем. Сегодня столкнулся с задачей настройки запуска теcтов на Jenkins.
Тесты написаны на Java + jUnit.
Проблема состоит в настройке jenkins. Нигде не могу найти толкового гайда по настройке дженкинса именно с моими запросами.
Итак: Есть написан тест и его нужно запустить в jenkins.

В Jenkins лог выводит BUILD SUCCESS но, я так понимаю, он не запускает сам тест. Видимо его нужно где-то указать, что является для меня загадкой. Кто подскажет, как правильно настроить Jenkins проект, что бы он корректно работал с maven и git? Все нужные логи и данные я предоставлю. Спасибо


(Sergey Korol) #2

Из описания не совсем понятно, как все-таки пытались настраивать Jenkins.
В самом общем случае вам нужно создать maven job, установить git плагины, указать путь к вашему репозиторию c креденшалами, в build разделе надо указать относительный путь к pom.xml + goals. Этого должно хватить для тестового запуска.


(Denis Gayevskiy) #3

Чтобы Maven понимал ваш код как тесты, название класса должно содержать слово Test, например Login_Test.java


(Serhii Tanchenko) #4

Непонятно, что у Вас есть в pom.xml.
похоже, что Вы не указали, чем вы будете запускать тесты.
Я вот, например, запускаю их с помощью maven-failsafe-plugin. Соответственно у меня есть следующее в pom.xml:

<project>
[...]
<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.18.1</version>
       <configuration>
          <includes>
            <include>*Test.java</include>
          </includes>
        </configuration>
      </plugin>
    </plugins>
</build>
[...]
</project>

(alexander) #5

Для начала попробуйте запустить тесты только с помощью Maven. Если получится прогнать тесты уже можно добавлять сверху Jenkins.


(alexander) #6

Да, структура каталогов проекта с тестами и содержание pom.xml очень поможет в решении задачи


(Pavel Berlinets) #7

Maven запускает тесты без проблем. Сейчас вся загвоздка в Jenkins’е.
POM.xml


  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
    <dependency>
      <groupId>ru.stqa.selenium</groupId>
      <artifactId>webdriver-factory</artifactId>
      <version>1.1.43</version>
    </dependency>
  </dependencies>
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <filtering>true</filtering>
      </testResource>
    </testResources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin> 
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
          <includes>
            <include>**/*TestSuite.java</include>
              <include>**/*IntegrationSuite.class</include>
          </includes>
          <systemPropertyVariables>
            <application.properties>/application.properties</application.properties>
          </systemPropertyVariables>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

(Pavel Berlinets) #8

Мне важно увидеть настройки JOB’a в дженкинсе.


(Sergey Korol) #9

Чем вас не устроил ответ? Неужели так сложно самому попробовать? Или вам нужен скрин секции Source Code Management с чекнутым Git и указанным URL / creds?

Или вы не нашли секции Build?

Если у вас уже создан maven job, я удивляюсь, какая проблема просто ради интереса пройтись по всем параметрам и почитать help?

По-моему, там все настолько очевидно, что настройка должна занять не больше 30 минут, если это первый раз. Из которых 25 вы потратите на чтение хэлпа. Исключением может быть только распространенная проблема неверно подключенных ключей для Git.


(alexander) #10

Тесты лежат в src/test/java?


(Pavel Berlinets) #11

Да, тесты лежат src/test/java в пекеджах.


(Pavel Berlinets) #12

Я написал сюда после целого дня мучений) Я все это указал в настройках. Билд билдится успешно, но тестов он не видит. Тут проблема или pom.xml или другая. Вот и ищу здесь подсказку.


(Имя Фамилия) #13

С чего вы делаете вывод, что он не видит тестов?

попробуйте немного странный способ: добавте System.out.println("test test ") в ваш тест и посмотрите отбразится ли она в console дженкинса


(Pavel Berlinets) #14

У меня есть в тесте вывод лога в консоль. В дженкинсе я его не вижу. Я уверен, что ошибка у меня либо в pom.xml либо в классе TestSuite где указано какие тесты нужно выполнять.
Вот лог который выводит дженкинс

Started by user anonymous
Building in workspace /Users/bpv/.jenkins/jobs/Login Test/workspace

/usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
/usr/bin/git config remote.origin.url /Users/bpv/vicman/webpresence/.git # timeout=10
Fetching upstream changes from /Users/bpv/vicman/webpresence/.git
/usr/bin/git --version # timeout=10
/usr/bin/git -c core.askpass=true fetch --tags --progress /Users/bpv/vicman/webpresence/.git +refs/heads/:refs/remotes/origin/
/usr/bin/git rev-parse refs/remotes/origin/master^{commit} # timeout=10
/usr/bin/git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 4c1cecc0c51ffb2995ba45a017361b7f5b93dc29 (refs/remotes/origin/master)
/usr/bin/git config core.sparsecheckout # timeout=10
/usr/bin/git checkout -f 4c1cecc0c51ffb2995ba45a017361b7f5b93dc29
/usr/bin/git rev-list 4c1cecc0c51ffb2995ba45a017361b7f5b93dc29 # timeout=10
Parsing POMs
[PageIsTests] $ /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/java -cp /Users/bpv/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven32-agent-1.6.jar:/usr/local/apache-maven-3.2.3/boot/plexus-classworlds-2.5.1.jar:/usr/local/apache-maven-3.2.3/conf/logging jenkins.maven3.agent.Maven32Main /usr/local/apache-maven-3.2.3 /Users/bpv/.jenkins/war/WEB-INF/lib/remoting-2.49.jar /Users/bpv/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven32-interceptor-1.6.jar /Users/bpv/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.6.jar 60423
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven: -B -f /Users/bpv/vicman/webpresence/PageIsTests/pom.xml clean test
[INFO] Scanning for projects…
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building PageIsTests 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] — maven-clean-plugin:2.5:clean (default-clean) @ PageIsTests —
[INFO] Deleting /Users/bpv/vicman/webpresence/PageIsTests/target
[INFO]
[INFO] — maven-resources-plugin:2.6:resources (default-resources) @ PageIsTests —
[INFO] Using ‘UTF-8’ encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] — maven-compiler-plugin:3.1:compile (default-compile) @ PageIsTests —
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] — maven-resources-plugin:2.6:testResources (default-testResources) @ PageIsTests —
[INFO] Using ‘UTF-8’ encoding to copy filtered resources.
[INFO] Copying 9 resources
[INFO]
[INFO] — maven-compiler-plugin:3.1:testCompile (default-testCompile) @ PageIsTests —
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 16 source files to /Users/bpv/vicman/webpresence/PageIsTests/target/test-classes
[INFO]
[INFO] — maven-surefire-plugin:2.17:test (default-test) @ PageIsTests —
[JENKINS] Recording test results
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.283 s
[INFO] Finished at: 2015-02-04T14:14:48+02:00
[INFO] Final Memory: 23M/207M
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving /Users/bpv/vicman/webpresence/PageIsTests/pom.xml to com.is.page/PageIsTests/1.0-SNAPSHOT/PageIsTests-1.0-SNAPSHOT.pom
/Users/bpv/vicman/webpresence/PageIsTests/pom.xml is not inside /Users/bpv/.jenkins/jobs/Login Test/workspace/Users/bpv/vicman/webpresence/PageIsTests/; will archive in a separate pass
channel stopped
Finished: SUCCESS


(Sergey Korol) #15

Интереса ради, уберите includes из maven-surefire-plugin и обзовите ваши классы согласно конвеншенам. Ибо такие вещи выглядят весьма странно: <include>**/*IntegrationSuite.class</include>


(Pavel Berlinets) #16

Хах, убрал и тест пошел :smile:


(Sergey Korol) #17

Ну тогда начинать надо было отсюда. И дженкинс тут не причем.


(Pavel Berlinets) #18

Я так понимаю, что он сейчас запускает мне просто файл LoginTest и все остальные файлы, которые заканчиваются на …test. А как мне прикрепить suite, что бы он с него считывал порядок запуска тестов?


(Sergey Korol) #19

Я использую TestNG, так что не подскажу, как JUnit работает со suites / ordered tests через maven-surefile-plugin.


(Pavel Berlinets) #20

Подскажи, как работает TestNG перейти на него проблемы нет.