将 bug 报告从 Launchpad 迁移到 JIRA 的脚本
大约两年半前,我写了一篇关于 MariaDB 项目如何将 bug 报告从 Launchpad 迁移到 JIRA 的文章。时不时会有人联系我,询问是如何完成的,以及我是否愿意分享所使用的工具,当然我分享了。特别是在一次偶然的机会中,这些脚本被一家正在做完全相同事情的公司(即将 bug 从 Launchpad 迁移到 JIRA)进一步开发。感谢来自 Linaro 的 Philip Colmer 做的增强!
Launchpad 中没有现成的用于导出 bug 的工具,我也没找到任何第三方工具。但是,Launchpad 有一个 API,通过它几乎可以检索到 Launchpad 中的所有信息。Launchpad 提供了一个利用此 API 的 Python 库。
通过使用 Launchpad Python API,我编写了一个 Python 脚本 LaunchpadBugs.py,该脚本从 Launchpad 中提取 bug 信息并为每个 bug 创建一个 XML 文档。如果 bug 包含附件,这些附件也会被下载并按一种可以与 XML 关联的方式命名。
当然,如果运行 Python 脚本后得到的 XML 文件和附件可以直接上传到 JIRA 实例中就好了。不幸的是,除非最近添加了此功能,否则这是不可能的,需要另一种单独的格式。根据我的调查,JIRA 在导入信息时最好使用 CSV(逗号分隔值)格式。这就需要将大量 XML 文件转换为 CSV 文件。CSV 文件可以包含附件的链接。
我过去做过相当多的 C# 编程,脑子里仍然记得在 C# 中处理 XML 的方法,所以我选择使用 C# 在一个 Windows 命令行应用程序中完成 XML 到 CSV 的转换。您可以在下面提到的 Github 仓库中找到名为 JiraCSV 的应用程序。
上面描述的脚本对那些明确要求获取副本的人很有用,但也许兴趣更广泛。要最初实现成功迁移,需要进行大量的尝试来纠正数据、添加缺失的数据、更改 XML 或 CSV 结构等等,以确保 JIRA 接受所有内容。我希望通过现在分享这些脚本,人们可以节省大量时间。这就是我决定将它们上传到 Github 的原因,这样任何对此感兴趣的人都可以获取它们并加以利用,甚至进一步改进。您可以在 https://github.com/rasmushoj/LP2JIRA 找到它们。
对于现在尝试此操作的人来说,JIRA 确实有一个 API:https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis/jira-rest-api-tutorials/jira-rest-api-example-create-issue
还有一个 python 辅助库:https://github.com/pycontribs/jira