Bab 1 Apa itu Jenkins?
Jenkins adalah mesin integrasi berkelanjutan yang dapat diskalakan.
Terutama digunakan untuk:
- Terus menerus dan otomatis membangun/menguji proyek perangkat lunak.
- l Pantau beberapa tugas yang dilakukan secara teratur.
Fitur yang dimiliki Jenkins meliputi:
- Mudah dipasang - cukup terapkan jenkins.war ke kontainer servlet tanpa dukungan database.
- l Mudah dikonfigurasi - semua konfigurasi dicapai melalui web antarmuka yang disediakan olehnya.
- l RSS/E-mail terintegrasi menerbitkan hasil build melalui RSS atau pemberitahuan melalui email saat build selesai.
- l Hasilkan laporan pengujian JUnit/TestNG.
- l Dukungan build terdistribusi Jenkins memungkinkan beberapa mesin untuk membangun/menguji bersama.
- l Pengenalan file: Jenkins dapat melacak toples mana yang dihasilkan oleh build mana, versi jar mana yang digunakan oleh build mana, dll.
- l Dukungan plugin: Ekstensi didukung, sehingga Anda dapat mengembangkan alat yang sesuai dengan penggunaan tim Anda.
1 Asal Jenkins
Integrasi berkelanjutan (CI) telah menjadi praktik umum bagi banyak tim pengembangan perangkat lunak untuk fokus memastikan kualitas kode di seluruh siklus hidup pengembangan perangkat lunak. Ini adalah praktik yang dirancang untuk memudahkan dan memperkuat proses pembuatan perangkat lunak. Dan ini dapat membantu tim pengembangan Anda menghadapi tantangan seperti:
- l Otomatisasi Pembuatan Perangkat Lunak: Setelah konfigurasi selesai, sistem CI akan membangun perangkat lunak target sesuai dengan jadwal yang telah ditentukan atau untuk acara tertentu.
- l Bangun pemeriksaan otomatis yang berkelanjutan: Sistem CI dapat terus mendapatkan kode sumber check-in baru atau yang dimodifikasi, yaitu, ketika tim pengembangan perangkat lunak perlu memeriksa kode baru atau yang dimodifikasi secara berkala, sistem CI akan terus mengonfirmasi apakah kode baru telah mengganggu keberhasilan pembuatan perangkat lunak asli. Ini mengurangi waktu dan upaya yang dihabiskan pengembang untuk memeriksa perubahan dalam kode saling bergantung mereka (mudah-mudahan, hehe).
- l Bangun pengujian otomatis yang berkelanjutan: bangun bagian pemeriksaan yang diperpanjang, jalankan serangkaian aturan pengujian yang telah ditentukan sebelumnya setelah pembuatan, dan picu pemberitahuan (email, RSS, dll.) kepada pihak terkait setelah selesai.
- l Otomatisasi proses berikutnya setelah generasi: Ketika pemeriksaan dan pengujian otomatis berhasil diselesaikan, tugas tambahan mungkin diperlukan dalam siklus pembuatan perangkat lunak, seperti menghasilkan dokumentasi, mengemas perangkat lunak, dan menyebarkan komponen ke runtime atau repositori perangkat lunak. Hal ini memungkinkan komponen tersedia untuk pengguna dengan lebih cepat.
- Persyaratan minimum yang diperlukan untuk menerapkan sistem CI adalah repositori kode sumber yang tersedia dan proyek dengan skrip build.
Diagram berikut merangkum struktur dasar sistem CI:
Komponen sistem berfungsi dalam urutan berikut:
1. Pengembang memeriksa kode ke repositori kode sumber.
2. Sistem CI membuat ruang kerja terpisah untuk setiap proyek. Saat build baru telah diatur sebelumnya atau diminta, build akan menyimpan kode sumber dari repositori kode sumber ke ruang kerja yang sesuai.
3. Sistem CI akan menjalankan proses build di ruang kerja yang sesuai.
4. (Jika Konfigurasi Ada) Setelah build selesai, sistem CI melakukan serangkaian pengujian yang ditentukan dalam artefak baru. Memicu pemberitahuan (Email, RSS, dll.) kepada pihak terkait setelah selesai.
5. (Konfigurasi, jika ada) Jika build berhasil, artefak ini dikemas dan ditransfer ke target penyebaran (misalnya server aplikasi) atau disimpan sebagai versi baru di repositori perangkat lunak. Repositori perangkat lunak dapat menjadi bagian dari sistem CI atau repositori eksternal, seperti server file atau situs web seperti Java.net, SourceForge, dll.
6. Sistem CI biasanya memulai tindakan yang sesuai berdasarkan permintaan, seperti build instan, membuat laporan, atau mengambil beberapa artefak buatan.
Jenkins adalah salah satu sistem CI tersebut. Sebelumnya dikenal sebagai Hudson.
Berikut adalah beberapa alasan untuk menggunakan Jenkins:
- l Ini adalah yang paling mudah untuk menginstal dan mengkonfigurasi di antara semua produk CI.
- l Berdasarkan akses web, antarmuka pengguna sangat ramah, intuitif, dan fleksibel, dan dalam banyak kasus memberikan umpan balik instan dari AJAX.
- l Jenkins dikembangkan di Java (yang sangat berguna jika Anda seorang pengembang Java), tetapi tidak terbatas pada membangun perangkat lunak berbasis Java.
- l Jenkins memiliki sejumlah besar plugin. Plugin ini sangat memperluas fungsionalitas Jenkins; Semuanya open source, dan dapat diinstal dan dikelola langsung melalui antarmuka web.
1.1 Tujuan Jenkins Tujuan utama Jenkins adalah untuk memantau proses pengembangan perangkat lunak dan dengan cepat mengungkapkan masalah. Oleh karena itu, dapat memastikan bahwa pengembang dan personel terkait menghemat waktu dan tenaga serta meningkatkan efisiensi pengembangan.
Peran utama sistem CI selama proses pengembangan adalah kontrol: ketika sistem mendeteksi perubahan dalam repositori kode, sistem mendelegasikan tugas menjalankan build ke proses build itu sendiri. Jika build gagal, maka sistem CI memberi tahu orang yang relevan dan kemudian terus memantau repositori. Karakternya tampak pasif; Tapi itu mencerminkan masalah dengan cepat.
Secara khusus, ia memiliki keunggulan sebagai berikut:
- l Jenkins Semua konfigurasi dapat dilakukan di antarmuka web. Beberapa konfigurasi seperti MAVEN_HOME dan email hanya perlu dikonfigurasi sekali, dan semua proyek dapat digunakan. Tentu saja, itu juga dapat dikonfigurasi dengan memodifikasi XML.
- l Modul yang mendukung Maven, Jenkins telah mengoptimalkan Maven, sehingga dapat secara otomatis mengenali modul, dan setiap modul dapat dikonfigurasi sebagai pekerjaan. Cukup fleksibel.
- l Agregasi laporan uji, laporan pengujian dari semua modul dikumpulkan bersama, dan hasilnya sekilas jelas, menggunakan CI lain, yang merupakan tugas yang hampir mustahil.
- l Sidik jari artefak, hasil dari setiap build dikelola dengan baik secara otomatis, dan dapat dengan mudah dijelajahi dan diunduh tanpa konfigurasi apa pun.
|