Ich habe die OpenStack-Build-Aufgabe auf der Ubuntu-QA-Site gefunden, bin aber ein wenig verwirrt über die Build-Schritte.
Hier ist der Link für Build-Schritte: https://jenkins.qa.ubuntu.com/view/Openstack_Testing/view/Grizzly/job/precise_grizzly_keystone_stable/275/consoleText
Aus dem Jenkins-Build-Protokoll kenne ich die Schritte, mit denen Ubuntu Openstack-Pakete erstellt:
- Holen Sie sich Openstack-Code von Github, verwenden Sie
git clone
- Build -
openstack tar.gz
Dateipython setup.py sdist
- Verwenden Sie
bzr
diese Option, um die Debian-Steuerdateien abzurufen, die von Canonical verwaltet werden - Verwenden Sie den
dch
Befehl, um ein neues Build-Release zu generieren und es an local zu übergeben - Verwenden Sie
bzr builddeb -S -- -sa -us -uc
diese Option, um ein Quellpaket und eine zugehörige Steuerdatei zu generieren, zdsc
- unterschreibe das Paket
- Verwenden Sie
mk-build-deps
, um die Abhängigkeit zu installieren - Verwenden Sie
sbuild
diese Option, um die echten Deb-Pakete zu generieren - In Test-Repos hochladen
Meine Fragen sind:
- In Schritt 5 können wir die Deb-Pakete bereits ohne generieren
-S
, aber warum verwenden wir sie schließlichsbuild
, um sie zu generieren? Ist dies nur zur Unterschrift? - Was ist der Unterschied zwischen
bzr builddeb
undsbuild
? Ich fand die Build-Skripte, die Jenkins verwendete, hier:,
~openstack-ubuntu-testing/openstack-ubuntu-testing
aber wenn ich versuche, Befehle unter auszuführenbin
, erhalte ich immer: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
Ich habe versucht, pip zu verwenden, um schroot zu installieren, aber es scheint, dass sie keinen Executor darin haben.
Bitte helfen Sie.
package-management
packaging
openstack
Ray Sun.
quelle
quelle
Antworten:
sbuild
Erstellt ein Paket in einer isolierten Umgebung mitschroot
. In dieser Umgebung werden nur die vom Quellpaket deklarierten Build-Abhängigkeiten installiert, sonst nichts. Auf diese Weise wird sichergestellt, dass der Build nicht von dem Entwickler oder der CI-Umgebung beeinflusst wird, von der aus er ausgeführt wird. Ohne sbuild könnte beispielsweise das Vorhandensein eines Pakets in der CI-Umgebung den Anschein erwecken, dass der Build erfolgreich war, obwohl es sich tatsächlich um eine nicht deklarierte Build-Abhängigkeit handelte und daher überall sonst fehlschlägt. Aus Gründen der Reproduzierbarkeit und Stabilität ist es besser, sbuild zu verwenden.quelle