TeamCity загружает пользовательский плагин, но нет никаких доказательств того, что код плагина работает.

Я играю с установкой TeamCity и разрабатываю плагин, расширяющий BuildServerAdapter. Когда я упаковываю его и устанавливаю на сервер, teamcity-server.log содержит записи для моего подключаемого модуля:

  • обнаружены при сканировании подключаемых модулей (.BuildServer \ plugins), папка
  • регистрация подключаемого модуля агента из подключаемого модуля сервера
  • загружает в общий загрузчик классов
  • загружается

Плагин также указан на странице плагинов в администрировании сервера.

Кроме того ... ничего. Я ввел различные операторы журнала как через средство ведения журнала, так и через System.out, и я их не вижу.Я даже добавил исключение в конструктор, и я не вижу никаких свидетельств этого в системных журналах. Когда происходит сборка, снова нет свидетельств того, что мой код вызван.

public class CustomBuildServerAdapter extends BuildServerAdapter {

    private SBuildServer myBuildServer;
    private static final Logger LOG = Logger.getLogger(CustomBuildServerAdapter.class);

    private void debug(String msg) { LOG.debug(msg); System.out.println(msg); }

    public CustomBuildServerAdapter(SBuildServer aBuildServer) throws Exception {
        throw new Exception("constructor is being called, at least we know that...");

        //myBuildServer = aBuildServer;
        //debug("constructor");
    }

    public void register() {
        debug("registering");
        myBuildServer.addListener(this);
        debug("registered");
    }

    public void buildFinished(SRunningBuild build) {
        debug("build finished");
        postMessage(build.getFullName() + " - " + build.getStatusDescriptor().getText());
        debug("message posted");
    }

...

ZIP-архив, который я копирую в .BuildServer \ plugins , имеет следующую структуру:

  • MyTeamCityPlugin.zip
    • teamcity.plugin.xml
    • сервер
    • MyTeamCityPlugin.jar
      • папки пакетов, содержащие файлы классов
      • META-INF
        • build-server-plugin.xml
        • MANIFEST.MF

Если посмотреть на другие плагины, они используют следующую структуру, поэтому я тоже пробовал.

  • MyTeamCityPlugin.zip
    • MyTeamCityPlugin
      • teamcity.plugin.xml
      • MyTeamCityPlugin.jar
        • папки пакетов, содержащие файлы классов
        • META-INF
          • build-server-plugin.xml
          • MANIFEST.MF

Мой build-server-plugin.xml содержит следующее:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-autowire="constructor">
    <bean id="myplugin" class="com.blah.blah.blah.CustomBuildServerAdapter" init-method="register"/>
</beans>

Я часть пути туда, так как журнал teamcity-server.log содержит указать, что он знает о плагине и больше не генерирует исключение при его загрузке. К сожалению, не ошибаться - это не то же самое, что работать.

Используя сценарии сборки ant из образца плагина, я получаю следующую ошибку, поэтому я упаковывал вещи вручную. Это приводит к кажущейся успешной загрузке, как указано выше.

Не удалось инициализировать контекст Spring для подключаемого модуля MyTeamCityPlugin. Ошибка при создании bean-компонента с именем simpleRunnerRunType: не удалось создать экземпляр bean-компонента.

Может ли кто-нибудь дать мне толчок, чтобы это работало правильно?

51
задан Rebecca Chernoff 17 December 2011 в 11:44
поделиться