Saya menemukan tugas membangun OpenStack di situs QA Ubuntu, tetapi saya sedikit bingung tentang langkah-langkah pembuatannya.
Berikut tautan untuk langkah pembuatan: https://jenkins.qa.ubuntu.com/view/Openstack_Testing/view/Grizzly/job/precise_grizzly_keystone_stable/275/consoleText
Dari log build jenkins, saya tahu langkah-langkah bagaimana Ubuntu membangun paket Openstack:
- dapatkan kode openstack dari github, gunakan
git clone
- membangun
openstack tar.gz
file menggunakanpython setup.py sdist
- gunakan
bzr
untuk mendapatkan file kontrol debian yang merupakan pemeliharaan oleh kanonik - gunakan
dch
perintah untuk menghasilkan rilis build baru dan komit ke lokal - gunakan
bzr builddeb -S -- -sa -us -uc
untuk menghasilkan paket sumber dan file kontrol terkait, sepertidsc
- menandatangani paket
- gunakan
mk-build-deps
untuk menginstal ketergantungan - gunakan
sbuild
untuk menghasilkan paket deb nyata - unggah ke repo pengujian
Pertanyaan saya adalah:
- Pada langkah 5, kita sudah bisa menghasilkan paket deb tanpa
-S
, tapi mengapa akhirnya kita gunakansbuild
untuk menghasilkan paket itu? Apakah ini hanya untuk tanda tangan? - Apa perbedaan antara
bzr builddeb
dansbuild
? Saya menemukan skrip build yang digunakan jenkins terletak di sini:,
~openstack-ubuntu-testing/openstack-ubuntu-testing
tetapi ketika saya mencoba menjalankan perintah apa pun di bawahbin
, saya selalu mendapatkan: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
Saya mencoba menggunakan pip untuk menginstal schroot, tetapi tampaknya mereka tidak memiliki pelaksana di dalamnya.
Tolong bantu.
package-management
packaging
openstack
Ray Sun
sumber
sumber
Jawaban:
sbuild
membangun sebuah paket di lingkungan terisolasi menggunakanschroot
. Dalam lingkungan ini, hanya dependensi build yang dideklarasikan oleh paket source yang diinstal, dan tidak ada yang lain. Ini membantu memastikan bahwa build tidak dipengaruhi oleh pengembang atau lingkungan CI tempat asalnya. Misalnya, tanpa sbuild, keberadaan paket di lingkungan CI mungkin membuatnya terlihat bahwa build berhasil ketika sebenarnya itu adalah dependensi build yang tidak dideklarasikan dan gagal di tempat lain. Untuk alasan reproduktifitas dan stabilitas, lebih baik menggunakan sbuild.sumber