迁移到 Storyboard

如果您的项目正在考虑迁移到 Storyboard,或者已经迁移到 Storyboard,以下内容将帮助您入门。

迁移计划

所以您想迁移…

  • 与 Storyboard 团队沟通,确认您的项目是否准备就绪,例如,它是否严重依赖其他项目,是否可以干净地迁移到测试环境等。#storyboard 频道是一个开始对话的好地方。我们有 定期会议,您可以随时加入。
  • 一旦确定您可以干净地迁移,请选择一个更改日期,在此期间,尽量关闭尽可能多的 bug。
  • 如果您想运行自己的测试迁移,请参阅下面的“测试迁移”部分中的说明。

测试迁移

  1. 获取 StoryBoard 实例

    首先,您需要一个 StoryBoard 实例的超级用户权限。除非您是 infra-core 或 Zara 或 SotK,否则最好的方法是在 VM 或其他地方启动您自己的测试实例。

    开发者安装和运行 中有关于如何操作的说明。我不会在这里详细介绍设置的细节。当您拥有最新的数据库时,您需要通过 webclient 登录。成功登录后,使用 mysql 命令行客户端连接到您的数据库,并根据提示提供您的密码。

    mysql -u $YOUR_DB_USER -p
    

    然后运行以下命令:

    connect $YOUR_DB_NAME;
    update users set is_superuser=1;
    

    这将使所有迄今为止登录过的用户都具有超级用户权限。

    • (可选) 获取生产数据库的清理转储

      如果您想针对生产数据测试迁移,您需要这些数据。获取此数据的方法是礼貌地请求 infra core。

      您可以使用提供的 .sql 文件在您的本地实例中重新创建生产数据库。

      mysql -u $YOUR_DB_USER -p < /path/to/db/dump.sql
      

    警告

    此数据库将命名为 storyboard,并将清除任何具有相同名称的现有数据库的内容。

  2. 创建 StoryBoard 项目

    登录到您的 StoryBoard 实例的 webclient。登录后,单击“创建新…”按钮,然后选择“项目”。为项目指定一个名称(在 storyboard.o.o 中,这将与 git 仓库名称匹配,因此您可以使用相同的名称)和一个描述。

    当您对名称和描述满意,并且两者都用绿色突出显示时,单击“创建项目”。

  3. 迁移!

    您可以使用以下命令执行此操作:

    tox -e lpimport --
      --config-file etc/storyboard.conf
      --from-project $PROJECT_IN_LAUNCHPAD
      --to-project $PROJECT_IN_STORYBOARD
    

    在这里,$PROJECT_IN_LAUNCHPAD 应替换为 Launchpad 中的项目名称,例如 monasca。同样,$PROJECT_IN_STORYBOARD 应替换为 StoryBoard 中您导入到的项目名称,例如 openstack/monasca

    lpimport 使用的 storyboard-migrate 命令的两个参数允许根据与 bug 关联的标签进行过滤。这两个参数都接受逗号分隔的标签列表,并且它们是互斥的。

    --only-tags=tags
     

    仅选择具有所有指定标签的 bug

    --exclude-tags=tags
     

    排除具有任何指定标签的 bug

    然后您必须等待一段时间,让项目迁移完成。如果您愿意,可以观看输出。有时它会因回溯而崩溃,提示数据库对象已存在。

    如果发生这种情况,则您的迁移测试失败,您需要去责怪 SotK 以修复此 bug(或者如果您有时间,可以自行修复)。

    有时它可能会以其他方式崩溃。如果发生这种情况,则您的迁移测试失败,并且您发现了一个新的令人兴奋的 bug。在 #storyboard 中报告它,也许在 StoryBoard 的某个地方报告它,并尝试修复它(如果您愿意)。

  4. 检查一切是否顺利进行

    此时,您已成功运行迁移。现在您需要检查您是否触发了我们当前已知的任何迁移问题。

    如 3.1 中所述检查分支,并检查您是否可以在 webclient 中查看项目页面。浏览故事,确保其中没有破坏 webclient 的内容。

    检查您是否可以查看 URL

    https://:9000/api/v1/stories?project_id=$YOUR_PROJECT_ID_HERE

    在 Web 浏览器中。如果您的浏览器在渲染它时遇到麻烦,则其中一个故事包含一个非 Unicode 字符,这将毁掉 StoryBoard 的一天。

    如果任何这些检查失败,则您的迁移测试失败。

    如果它们都成功,那么您的迁移可能也成功了。测试您想测试的一切,检查一些故事以确保它们看起来合理。小心那些看起来一团糟的东西,但实际上只是我们的 markdown 解析器破坏了未由 bug 提交者缩进的日志。这些不是问题,但可能会让某人感到难过。

    假设您使用生产数据进行测试,并且一切都检查完毕,则该项目应该准备好进行实际迁移。如果它没有使用生产数据进行测试,现在是时候使用它进行测试,因为您可能会发现其他 bug。

迁移过程

  • 需要向 project-config 仓库推送一个补丁,以修改 projects.yaml,以将您的每个项目中的“use-storyboard”更新为 True。
  • infra 的代表运行迁移脚本

最近迁移

  • 通知您的项目、用户和操作员,bug 现在将在您的 storyboard 项目 而不是 launchpad 项目中提交。

  • 锁定您的 launchpad 项目,以便用户和操作员无法在那里提交 bug。在“更改详细信息”部分,您应该更新有关现在在哪里提交 bug 的信息,然后转到“Bug”部分,并将“bug 跟踪”单选按钮设置为“其他地方”选项。

    注意

    Launchpad 不会关闭打开的 bug,也不会注意人们应该进行评论和更新的新位置,这就是为什么向用户、操作员和贡献者传达您已迁移非常重要的原因。

问答

  • 是否与 gerrit 集成? 是的。 详情请参见此处。
  • bug 链接会发生什么? bug 号码是故事编号,用于故事的 url 中。
  • 蓝图会发生什么? 它们不会被迁移,因为它们是与 Launchpad 绑定的结构。它们可以被选择性地迁移,但默认情况下不受支持。
  • 如何关闭任务? 将状态从“待办”更改为“合并”。 故事的整体状态源自每个任务。虽然任务可以完成,但故事可能尚未完成,直到所有任务都被标记为“合并”或“无效”。有关更多详细信息,请参阅上面的 gerrit 集成链接。
  • 有标签吗? 是的,任何人都可以向故事添加任何标签。
  • 我能编写脚本吗? 是的,有一个 REST API
  • 我们为什么要使用 Storyboard? 它专为 OpenStack 用例而设计,并能够管理跨项目的工作。它由 OpenStack 管理,因此可以快速修复和更改。