J'ai trouvé la tâche de génération OpenStack sur le site Ubuntu QA, mais je suis un peu confus quant aux étapes de construction.
Voici le lien pour les étapes de construction: https://jenkins.qa.ubuntu.com/view/Openstack_Testing/view/Grizzly/job/precise_grizzly_keystone_stable/275/consoleText
Depuis le journal de construction de jenkins, je connais les étapes de la façon dont Ubuntu construit un paquet Openstack:
- obtenir le code openstack de github, utilisez
git clone
openstack tar.gz
fichier de génération à l'aidepython setup.py sdist
- utiliser
bzr
pour obtenir les fichiers de contrôle debian qui sont maintenus par canonique - utiliser la
dch
commande pour générer une nouvelle version de build et la valider en local - utiliser
bzr builddeb -S -- -sa -us -uc
pour générer le package source et le fichier de contrôle associé, tels quedsc
- signer le colis
- utiliser
mk-build-deps
pour installer la dépendance - utiliser
sbuild
pour générer les vrais packages deb - télécharger vers les dépôts de test
Mes questions sont:
- À l'étape 5, nous pouvons déjà générer les paquets deb sans
-S
, mais pourquoi avons-nous finalement utilisésbuild
pour le générer? Est-ce uniquement pour la signature? - Quelle est la différence entre
bzr builddeb
etsbuild
? J'ai trouvé les scripts de construction utilisés par jenkins ici
~openstack-ubuntu-testing/openstack-ubuntu-testing
, mais quand j'essaye d'exécuter des commandes sousbin
, j'obtiens toujours: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
J'ai essayé d'utiliser pip pour installer schroot, mais il semble qu'ils n'aient pas d'exécuteur.
Veuillez aider.
Réponses:
sbuild
construit un package dans un environnement isolé en utilisantschroot
. Dans cet environnement, seules les dépendances de génération déclarées par le package source sont installées, et rien d'autre. Cela permet de garantir que la génération n'est pas influencée par le développeur ou l'environnement CI à partir duquel elle est exécutée. Par exemple, sans sbuild, la présence d'un package dans l'environnement CI peut faire croire que la génération réussit alors qu'en fait il s'agissait d'une dépendance de génération non déclarée et échoue donc partout ailleurs. Pour des raisons de reproductibilité et de stabilité, il est préférable d'utiliser sbuild.la source