#plugins #teamcity
#Плагины #teamcity
Вопрос:
Я разрабатываю плагин TeamCity, и мне даже не удается выполнить его с помощью TeamCity.
Я загружаю zip-файл с плагином и перезапускаю TeamCity, затем я вижу плагин в списке внешних плагинов, он также распаковывается в .BuildServer/plugins/.unpacked, но кроме этого ничего не происходит.
Не похоже, что плагин запущен. (Я даже не вижу имени плагина ни в одном файле журнала)
Моей самой простой попыткой было просто создать плагин из maven archetype:
mvn archetype:generate -DarchetypeRepository=http://download.jetbrains.com/teamcity-repository -DarchetypeArtifactId=teamcity-server-plugin -DarchetypeGroupId=org.jetbrains.teamcity.archetypes -DarchetypeVersion=RELEASE
а затем добавьте только некоторые записи:
package com.example.plugin;
import jetbrains.buildServer.log.Loggers;
public class AppServer {
public void run() {
Loggers.SERVER.info("I'm running");
}
}
и создайте необходимый компонент с помощью метода init:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
default-autowire="constructor">
<bean id="appServer" class="com.example.plugin.AppServer" init-method="run"/>
</beans>
Я загружаю плагин, перезапускаю TeamCity, но сообщение журнала от AppServer не отображается ни в одном файле журнала.
Чего мне не хватает? Как зарегистрировать это сообщение?
Ответ №1:
Я ожидал бы увидеть исключение (плюс трассировку стека) в teamcity-server.log
файле. Вы уверены, что проверили этот файл?
Поведение, которое вы описываете, может свидетельствовать о том, что вы создали плагин с версией JDK, несовместимой с JRE TeamCity. Например, вы создаете свой плагин с Java 8, но ваш TeamCity работает под управлением Java 7. В этом случае плагин будет обнаружен (как и в вашем случае), но произойдет сбой, когда TC попытается его вызвать.
Комментарии:
1. Все скомпилировано и выполнено на той же версии Java, и никаких ошибок в журналах.teamcity-server.logs не существует
2. Тогда, похоже, ваш
run()
метод вообще не вызывается. Лучше всего взглянуть на существующий плагин, который действительно что-то делает (их много на GitHub), и посмотреть, как они подключаются к событиям TC для запуска их функциональности. Затем вы можете попытаться воспроизвести небольшие фрагменты этого в своем плагине no-op.