【问题标题】:How can I update Bugzilla bugs from bash and php scripts?如何从 bash 和 php 脚本更新 Bugzilla 错误?
【发布时间】:2010-09-25 07:46:50
【问题描述】:

我们的开发过程通过大量 bash 和 php 脚本(包括 subversion 挂钩脚本)实现了高度自动化。这些脚本做了很多事情来与我们的 Bugzilla 3.0 安装集成。

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

例如,要为错误添加注释,我正在对 longdescs 表执行 INSERT。

所以我的(有点啰嗦)的问题是:

  • 我是否应该使用 Bugzilla WebServices(如果是,除了 Bugzilla API 文档之外,是否还有其他没有让我快速上手的好的文档)
  • 或者,我是否应该使用其他一些 Bugzilla API(直接 perl 调用?) - 再说一遍,这方面有没有像样的文档?
  • 或者,我是否应该继续做我正在做的事情(直接 SQL 调用),因为 db 并没有发生太大变化并且它“完成了工作”

【问题讨论】:

    标签: php web-services bash integration bugzilla


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        如果您希望您添加的评论在下次有人进行更改时被邮寄,请不要理会 bugs.last_diffed。如果您不希望您添加的评论被邮寄出去,请像对 bugs.delta_ts 所做的那样更新 bugs.last_diffed。

        Bugzilla 在数据库中有许多微妙的依赖关系,您必须尊重这些依赖关系,否则您可能会得到一些意想不到的结果。

        【讨论】:

          猜你喜欢
          • 2023-03-28
          • 2017-02-07
          • 2021-03-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-07
          • 2012-04-07
          相关资源
          最近更新 更多