对构建 OpenStack 软件包感到困惑?

Ray*_*Sun 19 package-management packaging openstack

我在 Ubuntu QA 站点上找到了 OpenStack 构建任务,但我对构建步骤有点困惑。

这是构建步骤的链接:https : //jenkins.qa.ubuntu.com/view/Openstack_Testing/view/Grizzly/job/precise_grizzly_keystone_stable/275/consoleText

从 jenkins 构建日志中,我知道 Ubuntu 构建 Openstack 包的步骤:

  1. 从 github 获取 openstack 代码,使用 git clone
  2. openstack tar.gz使用构建文件python setup.py sdist
  3. 用于bzr获取由规范维护的 debian 控制文件
  4. 使用dch命令生成新的构建版本并将其提交到本地
  5. 用于bzr builddeb -S -- -sa -us -uc生成源码包及相关控制文件,如dsc
  6. 签收包裹
  7. 用于mk-build-deps安装依赖
  8. 用于sbuild生成真正的 deb 包
  9. 上传到测试仓库

我的问题是:

  1. 在第5步中,我们已经可以不用 生成deb包了-S,但是为什么最后还要用sbuild它来生成呢?这只是为了签名吗?
  2. bzr builddeb和 和有sbuild什么区别?
  3. 我发现 jenkins 使用的构建脚本位于此处:~openstack-ubuntu-testing/openstack-ubuntu-testing,但是当我尝试在 下运行任何命令时bin,我总是得到:

    root@demo:~/openstack-ubuntu-testing/bin# ./build-package
    Traceback (most recent call last):
      File "./build-package", line 14, in <module>
        from openstack_ubuntu_testing.build.component_build import ComponentBuild
      File "/home/sysadmin/openstack-ubuntu-testing/bin/openstack_ubuntu_testing/build/component_build.py", line 11, in <module>
        from schroot.executor import SchrootExecutor
    ImportError: No module named schroot.executor
    
    Run Code Online (Sandbox Code Playgroud)

我尝试使用 pip 安装 schroot,但似乎他们没有执行程序。

请帮忙。

Rob*_*sak 1

sbuild使用 . 在隔离环境中构建包schroot。在此环境中,仅安装源包声明的构建依赖项,而不安装其他任何东西。这有助于确保构建不受开发人员或运行它的 CI 环境的影响。例如,如果没有 sbuild,CI 环境中存在的包可能会使构建看起来成功,而实际上它是未声明的构建依赖项,因此在其他地方都会失败。出于可重复性和稳定性的原因,最好使用 sbuild。