对于构建 OpenStack 包感到困惑?

对于构建 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获取由 canonical 维护的 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
    

我尝试使用 pip 来安装 schroot,但似乎其中没有执行器。

请帮忙。

答案1

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

相关内容