web-dev-qa-db-ja.com

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では、すでに-Sなしでdebパッケージを生成できますが、最終的にsbuildを使用して生成するのはなぜですか?これは署名専用ですか?
  2. bzr builddebsbuildの違いは何ですか?
  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
    

私はschrootをインストールするためにpipを使用しようとしましたが、エグゼキューターが含まれていないようです。

助けてください。

19
Ray Sun

sbuildは、schrootを使用して、隔離された環境でパッケージをビルドします。この環境では、ソースパッケージによって宣言されたビルドの依存関係のみがインストールされ、それ以外はインストールされません。これにより、ビルドが実行元の開発者またはCI環境の影響を受けないようになります。たとえば、sbuildを使用しない場合、CI環境にパッケージが存在すると、実際には宣言が未作成のビルド依存関係であるためにビルドが成功したように見えるため、他のすべての場所で失敗します。再現性と安定性の理由から、sbuildを使用することをお勧めします。

1
Robie Basak