webentwicklung-frage-antwort-db.com.de

Sie sind verwirrt über das Erstellen von OpenStack-Paketen?

Ich habe eine OpenStack-Build-Aufgabe auf einer Ubuntu-QA-Site gefunden, bin aber etwas verwirrt über die Build-Schritte.

Hier ist der Link für die Erstellungsschritte: 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:

  1. holen Sie sich Openstack-Code von Github, verwenden Sie git clone
  2. erstelle openstack tar.gz Datei mit python setup.py sdist
  3. verwenden Sie bzr, um die Debian-Steuerdateien abzurufen, die von Canonical verwaltet werden
  4. verwenden Sie den Befehl dch, um ein neues Build-Release zu generieren und es an local zu übergeben
  5. verwenden Sie bzr builddeb -S -- -sa -us -uc, um das Quellpaket und die zugehörige Steuerdatei zu generieren, z. B. dsc.
  6. unterschreibe das Paket
  7. verwenden Sie mk-build-deps, um die Abhängigkeit zu installieren
  8. verwenden Sie sbuild, um die echten Deb-Pakete zu generieren
  9. in Test-Repos hochladen

Meine Fragen sind:

  1. In Schritt 5 können wir die deb-Pakete bereits ohne -S generieren, aber warum verwenden wir schließlich sbuild, um sie zu generieren? Ist das nur zur Unterschrift?
  2. Was ist der Unterschied zwischen bzr builddeb und sbuild?
  3. Ich habe festgestellt, dass sich die von Jenkins verwendeten Build-Skripte hier befinden: ~openstack-ubuntu-testing/openstack-ubuntu-testing, aber wenn ich versuche, Befehle unter bin auszuführen, erhalte ich immer:

    [email protected]:~/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.

19
Ray Sun

sbuild erstellt ein Paket in einer isolierten Umgebung mit schroot. 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.

1
Robie Basak