Ini pertanyaan yang sedikit .. sia-sia, tetapi keluaran BuildBot tidak terlalu bagus untuk dilihat ..
Misalnya, dibandingkan dengan ..
..dan lainnya, BuildBot terlihat agak .. kuno
Saat ini saya bermain dengan Hudson, tetapi sangat Java-sentris (meskipun dengan panduan ini , saya merasa lebih mudah untuk mengatur daripada BuildBot, dan menghasilkan lebih banyak info)
Pada dasarnya: apakah ada sistem Integrasi Berkelanjutan yang ditujukan untuk python, yang menghasilkan banyak grafik mengkilap dan sejenisnya?
Pembaruan: Sejak saat ini proyek Jenkins telah menggantikan Hudson sebagai versi komunitas dari paket tersebut. Penulis asli telah pindah ke proyek ini juga. Jenkins sekarang menjadi paket standar di Ubuntu / Debian, RedHat / Fedora / CentOS, dan lainnya. Pembaruan berikut pada dasarnya masih benar. Titik awal untuk melakukan ini dengan Jenkins berbeda.
Pembaruan: Setelah mencoba beberapa alternatif, saya pikir saya akan tetap menggunakan Hudson. Integritas bagus dan sederhana, tetapi sangat terbatas. Saya pikir Buildbot lebih cocok untuk memiliki banyak build-slave, daripada semuanya berjalan pada satu mesin seperti yang saya gunakan.
Menyiapkan Hudson untuk proyek Python cukup sederhana:
- Unduh Hudson dari http://hudson-ci.org/
- Jalankan dengan
java -jar hudson.war
- Buka antarmuka web di alamat default
http://localhost:8080
- Pergi ke Kelola Hudson, Plugin, klik "Perbarui" atau serupa
- Instal plugin Git (saya harus mengatur
git
jalur di preferensi global Hudson) - Buat proyek baru, masukkan repositori, interval polling SCM, dan sebagainya
- Instal
nosetests
melaluieasy_install
jika belum - Di langkah pembuatan, tambahkan
nosetests --with-xunit --verbose
- Centang "Publikasikan laporan hasil pengujian JUnit" dan setel "XML laporan pengujian" ke
**/nosetests.xml
Hanya itu yang dibutuhkan. Anda dapat mengatur notifikasi email, dan pluginnya layak untuk dilihat. Beberapa yang saat ini saya gunakan untuk proyek Python:
- Plugin SLOCCount untuk menghitung baris kode (dan membuat grafik!) - Anda perlu menginstal sloccount secara terpisah
- Pelanggaran untuk mengurai keluaran PyLint (Anda dapat menyiapkan ambang peringatan, membuat grafik jumlah pelanggaran pada setiap build)
- Cobertura dapat mengurai output coverage.py. Nosetest dapat mengumpulkan cakupan saat menjalankan pengujian Anda, menggunakan
nosetests --with-coverage
(ini menulis output ke**/coverage.xml
)
Jawaban:
Anda mungkin ingin memeriksa Nose dan plugin keluaran Xunit . Anda dapat menjalankan pengujian unit Anda, dan pemeriksaan cakupan dengan perintah ini:
Itu akan membantu jika Anda ingin menggunakan rute Jenkins, atau jika Anda ingin menggunakan server CI lain yang memiliki dukungan untuk pelaporan pengujian JUnit.
Demikian pula Anda dapat menangkap keluaran pylint menggunakan plugin pelanggaran untuk Jenkins
sumber
nosetests --with-xunit
nosetests --with-xunit --enable-audit
saya mendapatkannosetests: error: no such option: --enable-audit
--with-nosexunit
menjadi--with-xunit
.Tidak tahu apakah itu akan berhasil: Bitten dibuat oleh orang-orang yang menulis Trac dan terintegrasi dengan Trac. Apache Gump adalah alat CI yang digunakan oleh Apache. Itu ditulis dengan Python.
sumber
Kami telah sukses besar dengan TeamCity sebagai server CI kami dan menggunakan hidung sebagai pelari pengujian kami. Plugin Teamcity untuk nosetests memberi Anda jumlah lulus / gagal, tampilan yang dapat dibaca untuk tes yang gagal (yang dapat dikirim melalui E-Mail). Anda bahkan dapat melihat detail kegagalan pengujian saat stack Anda berjalan.
Jika tentu saja mendukung hal-hal seperti menjalankan beberapa mesin, dan jauh lebih mudah untuk mengatur dan memelihara daripada buildbot.
sumber
Halaman air terjun Buildbot bisa sangat cantik. Inilah contoh bagus http://build.chromium.org/buildbot/waterfall/waterfall
sumber
Atlassian's Bamboo juga patut untuk dicoba. Seluruh paket Atlassian (JIRA, Confluence, FishEye, dll) cukup manis.
sumber
Saya kira utas ini cukup tua tetapi inilah pendapat saya tentang hudson:
Saya memutuskan untuk menggunakan pip dan menyiapkan repo (yang menyakitkan untuk bekerja tetapi eggbasket terlihat bagus), yang diunggah secara otomatis oleh hudson dengan tes yang berhasil. Berikut ini skrip kasar dan siap saya untuk digunakan dengan skrip eksekusi konfigurasi hudson seperti: /var/lib/hudson/venv/main/bin/hudson_script.py -w $ WORKSPACE -p my.package -v $ BUILD_NUMBER, masukkan saja ** / coverage.xml, pylint.txt dan nosetests.xml di bit konfigurasi:
Dalam hal menerapkan hal-hal, Anda dapat melakukan sesuatu seperti:
Dan kemudian orang dapat mengembangkan sesuatu dengan menggunakan:
Hal ini mengasumsikan Anda memiliki struktur repo per paket dengan setup.py dan semua dependensi sudah diatur maka Anda dapat memeriksa trunk dan menjalankan hal ini di dalamnya.
Saya harap ini membantu seseorang.
------memperbarui---------
Saya telah menambahkan epydoc yang sangat cocok dengan hudson. Cukup tambahkan javadoc ke konfigurasi Anda dengan folder html
Perhatikan bahwa pip tidak mendukung flag -E dengan benar saat ini, jadi Anda harus membuat venv secara terpisah
sumber
satu lagi: Shining Panda adalah alat yang dihosting untuk python
sumber
Jika Anda sedang mempertimbangkan solusi CI yang dihosting, dan menggunakan sumber terbuka, Anda juga harus melihat Travis CI - ini memiliki integrasi yang sangat bagus dengan GitHub. Saat ini dimulai sebagai alat Ruby, mereka telah menambahkan dukungan Python beberapa waktu lalu.
sumber
Sinyal adalah pilihan lain. Anda dapat mengetahui lebih banyak tentang itu dan menonton video juga di sini .
sumber
Saya akan mempertimbangkan CircleCi - ia memiliki dukungan Python yang hebat, dan hasil yang sangat bagus.
sumber
Continum 's binstar sekarang dapat memicu build dari github dan dapat dikompilasi untuk linux, osx dan windows ( 32/64 ). hal yang menarik adalah itu benar-benar memungkinkan Anda untuk menggabungkan distribusi dan integrasi berkelanjutan. Itu melintasi t dan menghiasi I Integrasi. Situs, alur kerja, dan alat benar-benar dipoles dan AFAIK conda adalah cara paling kuat dan pythonic untuk mendistribusikan modul python yang kompleks, di mana Anda perlu membungkus dan mendistribusikan pustaka C / C ++ / Fotran.
sumber
Kami telah menggunakan gigitan cukup banyak. Ini cantik dan terintegrasi dengan baik dengan Trac, tetapi sulit untuk menyesuaikan jika Anda memiliki alur kerja yang tidak standar. Juga tidak ada banyak plugin seperti yang ada untuk alat yang lebih populer. Saat ini kami sedang mengevaluasi Hudson sebagai penggantinya.
sumber
Periksa rultor.com . Seperti yang dijelaskan artikel ini , ini menggunakan Docker untuk setiap build. Berkat itu, Anda dapat mengonfigurasi apa pun yang Anda suka di dalam gambar Docker Anda, termasuk Python.
sumber
Sedikit penafian, saya sebenarnya harus membuat solusi seperti ini untuk klien yang menginginkan cara untuk secara otomatis menguji dan menerapkan kode apa pun pada git push plus mengelola tiket masalah melalui catatan git. Ini juga mengarah pada pekerjaan saya di proyek AIMS .
Satu bisa dengan mudah hanya setup sistem simpul telanjang yang memiliki build pengguna dan mengelola membangun mereka melalui
make(1)
,expect(1)
,crontab(1)
/systemd.unit(5)
, danincrontab(1)
. Seseorang bahkan dapat melangkah lebih jauh dan menggunakan ansible dan seledri untuk build terdistribusi dengan penyimpanan file gridfs / nfs.Meskipun, saya tidak akan mengharapkan orang lain selain seorang pria Graybeard UNIX atau insinyur / arsitek tingkat Principle untuk benar-benar melangkah sejauh ini. Hanya membuat ide bagus dan pengalaman belajar potensial karena server build tidak lebih dari cara untuk secara sewenang-wenang menjalankan tugas-tugas skrip secara otomatis.
sumber