четверг, 26 сентября 2013 г.

Thucydides report & TeamCity

Дичайше захотев привнести thucydides report в TeamCity, решил запилить во чтобы то ни  стало. Инфа мелькала на atInfo не так давно:

При первом ознакомлении мануал оказался неоднозначным. Пришлось применить метод древнеруской тоски и вызвать дух коментерна, чтобы разобраться в том что написано. 

Ниже постарался сделать более детальное how to:


Дано:
1. TeamCity c настроенным СI для тестов.
2. Thucydides, ласково перебирающий по ночам тесты на сервере.
3. Maven3 и Java
4. Репорт Thucydides, который генерится на виртуалке. 
    Никто не знает что делают тесты, покрыта мраком суть применения Thucydides
Нужно: 
Запилить чтобы красиво и публично.

Итак, задача делится на 3 шага: 
  • подготовить артефакт с репортом
  • залить артефакт на сервер тимсити
  • создать кастомную табу в тимсити, на которой будет доступен отчет.  
 1) Готовим артефакт. 
  Артефакт, по сути, это любой файл или архив, который может использоваться в тимсити.
У нас, в качестве артефакта, должно выступать заархивированное содержимое стандартной папки проекта target\site\thucydides\ в которой находится сайт отчета. 
Напомню, что сам сайт генерируется по команде thucydides.maven.plagin - thusydides:aggrigate  
Идем к мавену, берем pom.xml и пишем:

 <profiles>
        <profile>
            <id>thucydides</id>
            <build>
                <plugins>
                      <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.2.1</version>
                        <configuration>
                            <finalName>configuration</finalName>
                            <descriptors>
                                <descriptor>src/test/resources/assembly/TeamCity-artifact.xml</descriptor>
                            </descriptors>
                        </configuration>
                        <executions>
                            <execution>
                                <id>make-assembly</id>
                                <phase>site</phase>
                                <goals>
                                    <goal>attached</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>


В пекедж проэкта resources,  по адресу src/test/resources, добавляем папку assembly, а туда xml 
TeamCity-artifact.

<assembly>
    <id>TC_REPORT</id>
    <includeBaseDirectory>false</includeBaseDirectory>
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <outputDirectory>/</outputDirectory>
            <directory>target/site/thucydides</directory>
            <includes>
                <include>**</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

Можно это все сразу в помник записать. Я предпочел разделить.
Теперь у нас на maven фазе site будет собираться .zip содержащий отчет. 
Осталось дописать фазу site в конец Build Step:Maven  в настройках TeamCity 

у меня билд степ выглядит так: 

Шаг2. 

Теперь, после того, как мавен прогоняет тесты на виртуалке, он генерит сайт и ложит его в архив. Все еще на тойже виртуалке. 
Нужно отправить его на сервер TeamCity

Идем в настройки проэкта TeamCity. General Settings -> Artifact paths 
И дописываем туда путь к вашему архиву, либо просто /**/*.zip, тогда тимсити выберет все зип архивы в чекаут дириктории, которые найдет. (У меня он один :)


Шаг3. 

Теперь идем на сетинги основного проекта в тимсити.  Тут важно понимать, что автоматизация, которую вы запускаете , является таском, внутри проекта. Нужно сетапить именно проект.  

Там есть закладка Report Tabs, на которой можно создать собственную табу.



В качестве Start page выбираем Index.html из нашего отчета.

Теперь на странице проекта , у меня появилась новая закладка , при клике на которую открывается репорт в окне тимсити.

 Готово!




2 комментария: