Tutorial Penghantaran Berterusan - Membangun Paip Penghantaran Berterusan Menggunakan Jenkins



Blog mengenai Penghantaran Berterusan ini akan menerangkan setiap fasa yang terlibat di dalamnya, seperti Build, Test dll dengan menggunakan Jenkins secara langsung.

Penghantaran berterusan:

Penghantaran Berterusan adalah proses, di mana perubahan kod dibuat, diuji, dan disiapkan secara automatik untuk pengeluaran.Saya harap anda telah menikmati saya Di sini, saya akan membincangkan topik berikut:

  • Apakah Penghantaran Berterusan?
  • Jenis Ujian Perisian
  • Perbezaan Antara Integrasi Berterusan, Penyampaian, dan Penerapan
  • Apa perlunya Penghantaran Berterusan?
  • Hands-on Menggunakan Jenkins dan Tomcat

Mari kita cepat memahami bagaimana Penghantaran Berterusan berfungsi.





Apakah Penghantaran Berterusan?

Ini adalah proses di mana anda membina perisian sedemikian rupa sehingga dapat dilancarkan ke produksi pada bila-bila masa.Pertimbangkan rajah di bawah:

Penghantaran Berterusan - Penghantaran Berterusan - Edureka



Izinkan saya menerangkan rajah di atas:

  • Skrip binaan automatik akan mengesan perubahan dalam Pengurusan Kod Sumber (SCM) seperti Git.
  • Setelah perubahan dikesan, kod sumber akan digunakan ke pelayan build khusus untuk memastikan build tidak gagal dan semua kelas ujian dan ujian integrasi berjalan dengan baik.
  • Kemudian, aplikasi build diterapkan pada pelayan ujian (pelayan pra-produksi) untuk Uji Penerimaan Pengguna (UAT).
  • Akhirnya, aplikasi disebarkan secara manual di pelayan pengeluaran untuk dilepaskan.

Sebelum saya meneruskan, hanya wajar saya menerangkan kepada anda pelbagai jenis ujian.

Jenis Ujian Perisian:

Secara umum terdapat dua jenis ujian:



  • Ujian Kotak Hitam: Ini adalah teknik pengujian yang mengabaikan mekanisme dalaman sistem dan memfokuskan pada output yang dihasilkan terhadap sebarang input dan pelaksanaan sistem. Ia juga dipanggil pengujian fungsional. Ia pada dasarnya digunakan untuk mengesahkan perisian.
  • Ujian Whitebox: adalah teknik pengujian yang mengambil kira mekanisme dalaman sistem. Ia juga disebut ujian struktur dan pengujian kotak kaca. Ia pada dasarnya digunakan untuk mengesahkan perisian.

Ujian Whitebox:

Terdapat dua jenis ujian, yang termasuk dalam kategori ini.

  • Ujian Unit: Ia adalah pengujian unit individu atau kumpulan unit yang berkaitan. Ia sering dilakukan oleh pengaturcara untuk menguji bahawa unit yang telah dilaksanakannya menghasilkan output yang diharapkan daripada input yang diberikan.
  • Ujian Integrasi: Ini adalah jenis ujian di mana sekumpulan komponen beradadigabungkan untuk menghasilkan output. Juga, interaksi antara perisian dan perkakasan diuji jika komponen perisian dan perkakasan mempunyai hubungan. Ia mungkin berada di bawah ujian kotak putih dan ujian kotak hitam.

Ujian Kotak Hitam:

Terdapat banyak ujian yang termasuk dalam kategori ini. Saya akan memberi tumpuanbeberapa, yang penting untuk anda ketahui, untuk memahami blog ini:

  • Ujian Fungsi / Penerimaan: Ini memastikan bahawa fungsi tertentu yang diperlukan dalam keperluan sistem berfungsi. Ia dilakukan untuk memastikan produk yang dihantar memenuhi keperluan dan berfungsi seperti yang diharapkan pelanggan
  • Ujian Sistem: Ini memastikan bahawa dengan meletakkan perisian di persekitaran yang berbeza (mis., Sistem Operasi) ia masih berfungsi.
  • Ujian Tekanan: Ia menilai bagaimana sistem berkelakuan dalam keadaan yang tidak baik.
  • Ujian Beta: Ia dilakukan oleh pengguna akhir, pasukan dari luar pengembangan, atau secara terbuka mengeluarkan versi pra-lengkap produk yang dikenali sebagaibetaversi. Tujuan ujian beta adalah untuk menutup kesalahan yang tidak dijangka.

Sekarang adalah masa yang tepat untuk saya menerangkan perbezaan antara Integrasi Berterusan, Penyampaian dan Penerapan.

Perbezaan Antara Integrasi Berterusan, Penghantaran Dan Penerapan:

Kandungan visual mencapai otak seseorang dengan cara yang lebih cepat dan lebih mudah difahami daripada maklumat teks. Oleh itu, saya akan memulakan dengan gambarajah yang menjelaskan dengan jelas perbezaannya:

Dalam Integrasi Berterusan, setiap komit kod dibuat dan diuji, tetapi, tidak dalam kondisi untuk dilepaskan. Maksud saya aplikasi build tidak digunakan secara automatik pada pelayan ujian untuk mengesahkannya menggunakan berbagai jenis pengujian Blackbox seperti - Uji Penerimaan Pengguna (UAT).

Dalam Penghantaran Berterusan, aplikasi terus digunakan pada pelayan ujian untuk UAT. Atau, anda boleh mengatakan bahawa aplikasinya siap dilancarkan ke produksi pada bila-bila masa. Jadi, jelas Integrasi Berterusan diperlukan untuk Penghantaran Berterusan.

Penerapan Berterusan adalah langkah berikutnya setelah Pengiriman Berkelanjutan, di mana Anda tidak hanya membuat paket yang dapat diterapkan, tetapi Anda sebenarnya menerapkannya secara automatik.

program penjadualan round robin di c

Izinkan saya merumuskan perbezaan menggunakan jadual:

Integrasi berterusan Penghantaran Berterusan Penyebaran Berterusan
Pembinaan automatik untuk setiap, komitedPembinaan automatik dan UAT untuk setiap, komitedPembuatan automatik, UAT dan keluarkan untuk pengeluaran untuk setiap komitmen
Bebas dari Penghantaran Berterusan dan Penerapan BerterusanIni adalah langkah seterusnya setelah Integrasi Berterusania adalah satu langkah lagi Penghantaran Berterusan
Pada akhirnya, aplikasi ini tidak dalam kondisi untuk dikeluarkan untuk pengeluaranPada akhirnya, aplikasi tersebut dalam keadaan akan dikeluarkan untuk pengeluaran.Aplikasi ini terus digunakan
Termasuk ujian WhiteboxTermasuk ujian Blackbox dan WhiteboxIni merangkumi keseluruhan proses yang diperlukan untuk menyebarkan aplikasi

Secara sederhana, Integrasi Berterusan adalah bahagian dari Penghantaran Berterusan dan Penerapan Berterusan. Dan Penerapan Berterusan seperti Penghantaran Berterusan, kecuali pelepasan berlaku secara automatik.

Ketahui Cara Membuat Saluran Paip CI / CD Menggunakan Jenkins On Cloud

Tetapi persoalannya, adakah Integrasi Berterusan sudah mencukupi.

Mengapa Kita Perlu Penghantaran Berterusan?

Mari kita fahami ini dengan contoh.

Bayangkan ada 80 pemaju yang mengusahakan projek besar. Mereka menggunakan saluran paip Integrasi Berterusan untuk memudahkan pembuatan automatik. Kami tahu membina merangkumi Ujian Unit juga. Suatu hari mereka memutuskan untuk menggunakan build terbaru yang telah lulus ujian unit ke persekitaran ujian.

Ini mesti merupakan pendekatan yang panjang tetapi terkawal untuk penggunaan yang dilakukan oleh pakar persekitaran mereka. Walau bagaimanapun, sistem ini nampaknya tidak berfungsi.

Apa Mungkin Penyebab Kegagalan Yang Jelas?

Sebab pertama yang difikirkan oleh kebanyakan orang adalah bahawa terdapat beberapa masalah dengan konfigurasi. Seperti kebanyakan orang malah mereka berpendapat demikian.Mereka menghabiskan banyak masa untuk mencari apa yang salah dengan konfigurasi persekitaran, tetapi mereka tidak dapat menemui masalahnya.

Pembangun Satu Persepsi Mengikut Pendekatan Pintar:

Kemudian salah seorang Pengembang kanan mencuba aplikasi tersebut di mesin pengembangannya. Ia juga tidak berfungsi di sana.

Dia mundur melalui versi yang lebih awal dan lebih awal sehingga dia mendapati bahawa sistem telah berhenti berfungsi tiga minggu sebelumnya. Bug kecil yang tidak jelas telah menghalang sistem untuk memulakan dengan betul. Walaupun, projek ini mempunyai liputan ujian unit yang baik.Walaupun begitu, 80 pembangun, yang biasanya hanya menjalankan ujian daripada aplikasi itu sendiri, tidak melihat masalah selama tiga minggu.

Pernyataan masalah:

Tanpa menjalankan Uji Penerimaan dalam persekitaran seperti produksi, mereka tidak tahu sama ada aplikasi itu memenuhi spesifikasi pelanggan, atau apakah aplikasi itu dapat digunakan dan bertahan di dunia nyata. Sekiranya mereka mahukan maklum balas tepat pada masanya mengenai topik ini, mereka mesti memperluaskan jangkauan proses integrasi berterusan mereka.

Izinkan saya meringkaskan pelajaran yang diperoleh dengan melihat masalah di atas:

  • Ujian Unit hanya menguji perspektif pemaju mengenai penyelesaian masalah. Mereka hanya memiliki kemampuan terbatas untuk membuktikan bahawa aplikasi melakukan apa yang seharusnya dari perspektif pengguna. Mereka tidak cukup untukmengenal pasti masalah fungsi sebenar.
  • Menyebarkan aplikasi di persekitaran ujian adalah proses yang intensif secara manual yang cukup rentan terhadap kesalahan.Ini bermaksud bahawa setiap percubaan penyebaran adalah eksperimen baru - proses manual, rawan kesalahan.

Penyelesaian - Saluran Penghantaran Berterusan (Ujian Penerimaan Automatik):

Mereka membawa Integrasi Berterusan (Penghantaran Berterusan) ke langkah berikutnya dan memperkenalkan beberapa Ujian Penerimaan automatik yang mudah yang membuktikan bahawa aplikasi berjalan dan dapat menjalankan fungsinya yang paling mendasar.Sebilangan besar ujian yang dijalankan semasa peringkat Ujian Penerimaan adalah Ujian Penerimaan Fungsional.

Pada dasarnya, mereka membangun saluran pipa Pengiriman Berterusan, untuk memastikan aplikasi diterapkan dengan lancar di lingkungan produksi, dengan memastikan aplikasi berfungsi dengan baik ketika digunakan pada server uji yang merupakan replika pelayan produksi.

Cukup teori, saya sekarang akan menunjukkan kepada anda bagaimana membuat saluran paip Penghantaran Berterusan menggunakan Jenkins.

Paip Penghantaran Berterusan Menggunakan Jenkins:

Di sini saya akan menggunakan Jenkins untuk membuat Paip Penghantaran Berterusan, yang akan merangkumi tugas-tugas berikut:

Langkah-langkah yang terlibat dalam Demo:

  • Mengambil kod dari GitHub
  • Menyusun kod sumber
  • Uji unit dan menghasilkan laporan ujian JUnit
  • Mengemas aplikasi ke dalam fail WAR dan menyebarkannya ke pelayan Tomcat

Prasyarat:

  • Mesin CentOS 7
  • Jenkins 2.121.1
  • Docker
  • Tomcat 7

Langkah - 1 Menyusun Kod Sumber:

Mari mulakan dengan membuat projek Freestyle di Jenkins terlebih dahulu. Pertimbangkan tangkapan skrin di bawah:

Beri nama untuk projek anda dan pilih Projek Gaya Bebas:

Apabila anda menatal ke bawah, anda akan mendapat pilihan untuk menambah repositori kod sumber, pilih git dan tambahkan URL repositori, di repositori itu terdapat denda pom.xml yang akan kami gunakan untuk membina projek kami. Pertimbangkan tangkapan skrin di bawah:

Sekarang kita akan menambah Build Trigger. Pilih pilihan SCM poll, pada dasarnya, kita akan mengkonfigurasi Jenkins untuk meninjau repositori GitHub selepas setiap 5 minit untuk perubahan kod. Pertimbangkan tangkapan skrin di bawah:

Sebelum saya meneruskan, izinkan saya memberi anda sedikit pengenalan mengenai Maven Build Cycle.

Setiap kitaran hayat binaan ditentukan oleh senarai fasa binaan yang berbeza, di mana fasa binaan mewakili tahap dalam kitar hayat.

Berikut adalah senarai fasa binaan:

  • mengesahkan - mengesahkan projek itu betul dan semua maklumat yang diperlukan ada
  • menyusun - menyusun kod sumber projek
  • menguji - menguji kod sumber yang disusun menggunakan kerangka pengujian unit yang sesuai. Ujian ini semestinya tidak memerlukan kod dikemas atau digunakan
  • pakej - ambil kod yang disusun dan bungkuskan dalam format yang boleh diedarkan, seperti JAR.
  • mengesahkan - menjalankan sebarang pemeriksaan terhadap keputusan ujian integrasi untuk memastikan kriteria kualiti dipenuhi
  • pasang - pasang pakej ke repositori tempatan, untuk digunakan sebagai kebergantungan dalam projek lain secara tempatan
  • menyebarkan - dilakukan di lingkungan binaan, menyalin pakej terakhir ke repositori jauh untuk dikongsi dengan pemaju dan projek lain.

Saya boleh menjalankan perintah di bawah ini, untuk menyusun kod sumber, pengujian unit dan juga mengemas aplikasi dalam fail perang:

apa aplikasi di salesforce
pakej bersih mvn

Anda juga boleh menguraikan pekerjaan membina anda menjadi beberapa langkah membina. Ini menjadikannya lebih mudah untuk mengatur binaan dalam tahap yang bersih dan terpisah.

Oleh itu, kita akan mulakan dengan menyusun kod sumber. Pada tab binaan, klik pada sasaran sasaran peringkat atas dan taipkan arahan di bawah:

menyusun

Pertimbangkan tangkapan skrin di bawah:

Ini akan menarik kod sumber dari repositori GitHub dan juga akan menyusunnya (Maven Compile Phase).

Klik Simpan dan jalankan projek.

Sekarang, klik pada output konsol untuk melihat hasilnya.

Langkah - Ujian Unit 2:

Sekarang kita akan membuat satu lagi Projek Gaya Bebas untuk ujian unit.

Tambahkan URL repositori yang sama di tab pengurusan kod sumber, seperti yang kami lakukan pada pekerjaan sebelumnya.

Sekarang, di tab 'Buid Trigger' klik pada 'build setelah projek lain dibina'. Ketik nama projek sebelumnya di mana kami menyusun kod sumber, dan anda boleh memilih mana-mana pilihan di bawah:

  • Pencetus hanya jika binaannya stabil
  • Mencetuskan walaupun binaannya tidak stabil
  • Mencetuskan walaupun binaannya gagal

Saya rasa pilihan di atas cukup jelas, jadi pilihlah. Pertimbangkan tangkapan skrin di bawah:

Pada tab Build, klik pada target target level atas dan gunakan arahan di bawah:

ujian

Jenkins juga melakukan tugas yang baik untuk membantu anda memaparkan keputusan ujian dan tren keputusan ujian anda.

Piawai de facto untuk pelaporan ujian di dunia Java adalah format XML yang digunakan oleh JUnit. Format ini juga digunakan oleh banyak alat pengujian Java lainnya, seperti TestNG, Spock, dan Easyb. Jenkins memahami format ini, jadi jika binaan anda menghasilkan keputusan ujian JUnit XML, Jenkins dapat menghasilkan laporan ujian grafik dan statistik hasil ujian dari masa ke masa, dan juga membolehkan anda melihat perincian kegagalan ujian. Jenkins juga memantau berapa lama ujian anda dijalankan, baik di peringkat global, dan setiap ujian — ini boleh berguna jika anda perlu mengesan masalah prestasi.

Oleh itu, perkara seterusnya yang perlu kita lakukan ialah membuat Jenkins terus mengikuti ujian unit kita.

Pergi ke bahagian Tindakan Pasca-bina dan tandakan kotak pilihan 'Terbitkan laporan hasil ujian JUnit'. Apabila Maven menjalankan ujian unit dalam sebuah projek, secara automatik menghasilkan laporan ujian XML dalam direktori yang disebut surefire-laporan. Oleh itu, masukkan '** / target / surefire-laporan / *. Xml' di medan 'Uji laporan XML'. Dua tanda bintang di awal jalan (“**”) adalah praktik terbaik untuk membuat konfigurasi sedikit lebih mantap: mereka membenarkan Jenkins mencari direktori sasaran tidak kira bagaimana kita telah mengkonfigurasi Jenkins untuk memeriksa kod sumber.

** / target / surefire-laporan / *. xml

Sekali lagi simpan dan klik pada Build Now.

Sekarang, laporan JUnit ditulis kepada / var / lib / jenkins / ruang kerja / ujian / gameoflife-core / target / surefire-report / TEST-behavior.

Di papan pemuka Jenkinsanda juga dapat melihat keputusan ujian:

Langkah - 3 Membuat Fail WAR Dan Menggunakan Pelayan Tomcat:

Sekarang, langkah selanjutnya adalah mengemas aplikasi kita dalam file WAR dan menyebarkannya pada pelayan Tomcat untuk ujian Penerimaan Pengguna.

Buat satu lagi projek gaya bebas dan tambahkan URL repositori kod sumber.

Kemudian pada tab pencetus binaan, pilih bina ketika projek lain dibina, pertimbangkan tangkapan skrin di bawah:

Pada asasnya, selepas tugas ujian, fasa penyebaran akan bermula secara automatik.

Di tab bina, pilih skrip shell. Ketik perintah di bawah untuk mengemas aplikasi dalam fail WAR:

pakej mvn

Langkah seterusnya adalah menyebarkan fail WAR ini ke Tomcatpelayan. Pada tab 'Tindakan Pasca-Bangun' pilih menyebarkan perang / telinga ke wadah. Di sini, berikan jalan ke fail perang dan berikan jalan konteks. Pertimbangkan tangkapan skrin di bawah:

Pilih kelayakan Tomcat dan, perhatikan tangkapan skrin di atas. Anda juga perlu memberikan URL pelayan Tomcat anda.

Untuk menambahkan kelayakan di Jenkins, klik pada pilihan kelayakan pada papan pemuka Jenkins.

Klik pada Sistem dan pilih kelayakan global.

Kemudian anda akan mendapat pilihan untuk menambahkan bukti kelayakan. Klik padanya dan tambahkan kelayakan.

Tambahkan kelayakan Tomcat, pertimbangkan tangkapan skrin di bawah.

Klik OK.

Sekarang dalam Konfigurasi Projek anda, tambahkan kelayakan tomcat yang telah anda masukkan pada langkah sebelumnya.

Klik Save dan kemudian pilih Build Now.

Pergi ke URL tomcat anda, dengan jalan konteks, dalam kes saya http: // localhost: 8081. Sekarang tambahkan jalan konteks pada akhirnya, pertimbangkan Tangkapan Skrin di bawah:

Pautan - http: // localhost: 8081 / gof

Saya harap anda telah memahami maksud jalan konteks.

Sekarang buat paparan saluran paip, pertimbangkan tangkapan skrin di bawah:

Klik pada ikon tambah, untuk membuat paparan baru.

Konfigurasikan saluran paip dengan cara yang anda mahukan, pertimbangkan tangkapan skrin di bawah:

Saya tidak mengubah apa-apa selain memilih pekerjaan awal. Jadi saluran paip saya akan bermula dari penyusunan. Berdasarkan cara saya mengkonfigurasi pekerjaan lain, setelah pengujian kompilasi dan penerapan akan terjadi.

Akhirnya, anda boleh menguji saluran paip dengan mengklik RUN. Selepas setiap lima minit, jika ada perubahan pada kod sumber, keseluruhan saluran paip akan dilaksanakan.

Oleh itu, kami dapat terus menggunakan aplikasi kami di pelayan ujian untuk ujian penerimaan pengguna (UAT).

Saya harap anda seronok membaca catatan ini di Penghantaran Berterusan. Sekiranya anda mempunyai keraguan, jangan ragu untuk memasukkannya ke bahagian komen di bawah dan saya akan segera kembali dengan jawapan.

jenis fungsi dalam sql

Untuk Membina Saluran Saluran CI / CD, Anda Perlu Menguasai Pelbagai Kemahiran Kuasai Kemahiran DevOps yang Diperlukan Sekarang