Ubuntu QAサイトでOpenStackビルドタスクを見つけましたが、ビルド手順について少し混乱しています。
ビルド手順のリンクは次のとおりです。 https://jenkins.qa.ubuntu.com/view/Openstack_Testing/view/Grizzly/job/precise_grizzly_keystone_stable/275/consoleText
Jenkinsビルドログから、UbuntuがOpenstackパッケージをビルドする手順を知っています。
git clone
を使用しますopenstack tar.gz
を使用してpython setup.py sdist
ファイルを作成しますbzr
を使用して、debian制御ファイルを取得します。これは、標準的なメンテナンスですdch
コマンドを使用して、新しいビルドリリースを生成し、ローカルにコミットします。bzr builddeb -S -- -sa -us -uc
を使用して、dsc
などのソースパッケージと関連する制御ファイルを生成します。mk-build-deps
を使用して依存関係をインストールしますsbuild
を使用して実際のdebパッケージを生成します私の質問は:
-S
なしでdebパッケージを生成できますが、最終的にsbuild
を使用して生成するのはなぜですか?これは署名専用ですか?bzr builddeb
とsbuild
の違いは何ですか?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を使用しようとしましたが、エグゼキューターが含まれていないようです。
助けてください。
sbuild
は、schroot
を使用して、隔離された環境でパッケージをビルドします。この環境では、ソースパッケージによって宣言されたビルドの依存関係のみがインストールされ、それ以外はインストールされません。これにより、ビルドが実行元の開発者またはCI環境の影響を受けないようになります。たとえば、sbuildを使用しない場合、CI環境にパッケージが存在すると、実際には宣言が未作成のビルド依存関係であるためにビルドが成功したように見えるため、他のすべての場所で失敗します。再現性と安定性の理由から、sbuildを使用することをお勧めします。