Как я могу обновить ошибки Bugzilla из сценариев bash и php? - PullRequest
2 голосов
/ 04 декабря 2008

Наш процесс разработки высоко автоматизирован с помощью сценариев bash и php (включая сценарии ловушек subversion). Эти сценарии выполняют ряд функций для интеграции с нашей установкой Bugzilla 3.0.

Но нынешний подход к интеграции - это набор вызовов SQL, которые напрямую обновляют базу данных bugzilla, что, очевидно, имеет ряд недостатков, в том числе заставляет меня нервничать по поводу обновления до 3.2 в случае изменения схемы базы данных!

Например, чтобы добавить комментарий к ошибке, я делаю INSERT в таблицу longdescs.

Итак, мой (слегка затянувшийся) вопрос:

  • если я буду использовать Bugzilla WebServices (и если да, то есть ли какая-нибудь хорошая документация, кроме документации по Bugzilla API, которая не позволяет мне быстро освоиться)
  • или я должен использовать какой-нибудь другой Bugzilla API (прямые вызовы perl?) - и опять же, есть ли приличный документ?
  • или, если я просто продолжу делать то, что делаю (прямые вызовы SQL), потому что БД не так сильно меняется и "выполняет свою работу"

Ответы [ 3 ]

3 голосов
/ 05 декабря 2008

Согласно API-интерфейсу Bugzilla WebServices, некоторые из необходимых функций (например, изменение состояния ошибки) еще не доступны, поэтому в настоящее время прямые вызовы SQL кажутся наиболее подходящим вариантом.

Схема базы данных существенно не изменилась между версиями 3.0 и 3.2, так что это практический путь вперед.

2 голосов
/ 12 декабря 2008

FYI, в дистрибутиве Bugzilla 3.2 есть файл contrib/bz_webservice_demo.pl, целью которого является «Показать, как общаться с Bugzilla через XMLRPC».

0 голосов
/ 02 октября 2009

Будь осторожен! Некоторые изменения в базе данных подразумевают и другие изменения. Добавление комментария к ошибке путем добавления строки в longdescs работает, но вы также должны обновлять delta_ts в таблицах ошибок.

До тех пор, пока веб-службы не станут доступны, я бы сделал следующее: выполнить действие с использованием пользовательского интерфейса, который вы хотите выполнить из оболочки. (Предполагая MySQL). Посмотрите на двоичный журнал для базы данных, используя «mysqlbinlog», и вы увидите, какие операторы Bugzilla обычно выполняет при выполнении чего угодно.

Если вы хотите, чтобы добавленный вами комментарий был отправлен по почте при следующем внесении изменений, оставьте bugs.last_diffed в покое. Если вы не хотите, чтобы добавленный вами комментарий был отправлен по почте, обновите bugs.last_diffed так же, как и bugs.delta_ts.

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

...