如何从bash和php脚本更新Bugzilla错误?

时间:2008-12-04 12:48:43

标签: php web-services bash integration bugzilla

我们的开发过程通过大量的bash和php脚本(包括subversion钩子脚本)实现高度自动化。这些脚本可以与我们的Bugzilla 3.0安装集成很多东西。

但是当前的集成方法是一堆SQL调用直接更新bugzilla数据库 - 这显然有许多缺点 - 包括在数据库模式发生变化时让我担心升级到3.2!

例如,要为bug添加注释,我正在对longdescs表进行INSERT。

所以我(稍微啰嗦)的问题是:

  • 我应该使用Bugzilla WebServices(如果是的话,除了Bugzilla API文档之外还有其他任何好的文档,这些文档并没有让我快速上手)。
  • 或者,我是否应该使用其他一些Bugzilla API(直接perl调用?) - 再次,有没有合适的doco?
  • 或者,我应该继续做我正在做的事情(直接SQL调用),因为数据库不会改变那么多并且“完成工作”

3 个答案:

答案 0 :(得分:3)

根据Bugzilla WebServices API,所需的一些功能(例如更改错误状态)尚不可用,因此目前直接SQL调用似乎是最合适的选择。

数据库架构在版本3.0和3.2之间没有显着变化,因此这是一种实用的方法。

答案 1 :(得分:2)

仅供参考,在Bugzilla 3.2发行版中,有一个contrib/bz_webservice_demo.pl文件,其目的是“展示如何通过XMLRPC与Bugzilla对话”。

答案 2 :(得分:0)

小心!某些数据库更改也意味着其他更改。通过向longdescs添加行来为错误添加注释,但您还应该更新表错误中的delta_ts。

在Web服务可用之前,我会这样做:使用您想要从shell执行的UI执行操作。 (假设MySQL)使用'mysqlbinlog'查看数据库的二进制日志,你会看到Bugzilla在做任何事情时通常执行的语句。

如果您希望在下次有人进行更改时邮寄您添加的评论,请单独留下bugs.last_diffed。如果您不想将您添加的评论邮寄出去,请在bugs.delta_ts上更新bugs.last_diffed。

Bugzilla在数据库中有许多你必须尊重的微妙依赖,或者你可能会得到一些意想不到的结果。