mata utama
Berikut ini akan memperkenalkan secara terperinci Integrasi Berterusan (CI), amalan penting dalam pembangunan perisian, dan Jenkins, alat integrasi berterusan sumber industri standard. Dengan melaksanakan integrasi berterusan dan pelayan Jenkins CI, anda akan mengetahui bagaimana penyebaran Jenkins dapat membantu pasukan pembangunan anda melepaskan perisian berkualiti tinggi dan menjimatkan masa yang berharga.
Ingin mengetahui lebih lanjut mengenai Jenkins dan integrasi berterusan? Sila periksa pautan berikut:
Rakaman Skrin: Alat integrasi yang berterusan menyokong BitBucket?
Apa itu CI?
CI adalah amalan yang menguatkuasakan strategi untuk sering mengintegrasikan kod yang diuji ke dalam cabang projek yang stabil. Saya ingin menekankan "kod yang diuji" khususnya, kerana ini bermakna fungsi yang dibangunkan pada cawangan berasingan juga diuji dan oleh itu diintegrasikan ke dalam cawangan yang stabil.
Biasanya, jurutera DevOps biasanya bertanggungjawab untuk menubuhkan saluran paip CI. Hari ini, peranan jurutera DevOps sangat mirip dengan jurutera ujian, kerana kedua -duanya memastikan kualiti proses dan perisian. Saya biasanya mengatakan bahawa QA dan pengeluaran adalah persimpangan terdekat kepada pelanggan. Dalam pengertian ini, CI menyediakan jurutera ujian dengan alat yang sangat kuat untuk meningkatkan proses keseluruhan dan kualiti perisian dengan aktif mengambil bahagian dalam bidang berikut:
Pasukan pembangunan mempunyai repositori kawalan versi kod sumber sendiri yang mengandungi projek (biasanya GitHub hari ini). Cawangan yang stabil (cawangan utama) sering dianggap sebagai cawangan kerja dan jarang mengembangkan ciri -ciri baru secara langsung di cawangan utama. Sebaliknya, pemaju membuat cawangan mereka sendiri untuk membangunkan ciri -ciri baru (Cawangan A ciri a). Apabila perubahan ditolak ke repositori pada cawangan tertentu dan pemaju membuat permintaan tarik, beberapa set ujian asas (ujian asap) harus dilakukan terhadap cawangan itu. Dari perspektif CI, ini biasanya bermaksud berikut:
Ujian asap menjimatkan banyak masa untuk pemaju yang akan menjalani ulasan kod dan jurutera ujian yang perlu mengulangi ciri A pada cawangan permintaan tarik. Sekiranya ujian asap pada permintaan tarik gagal, maka pemaju yang bertanggungjawab untuk fungsi A kini bertanggungjawab untuk menetapkan ciri ujian asap dan mengeluarkan permintaan tarik baru (sehingga masalah itu ditetapkan, kod bermasalah tidak akan digabungkan ke cawangan utama ).
Jika ini dilakukan, dan kod baru untuk fungsi A digabungkan ke cawangan utama dari perspektif CI, yang berikut akan berlaku:
Ini menjadi semakin penting dalam lelaran akhir projek, kerana jurutera ujian mempunyai lebih banyak tugas (menguji ciri -ciri semasa dan semua ciri sebelumnya). Di sinilah ujian regresi berguna: dari perspektif CI, pelaksanaan ujian regresi biasanya berlaku apabila jurutera ujian secara eksplisit menjalankan ujian regresi atau ketika menggunakan penjadual (contohnya: melakukan ujian regresi setiap malam). Adalah kebiasaan yang baik untuk menyesuaikan pekerjaan ini supaya kami dapat menentukan cawangan mana yang akan dilakukan untuk dilakukan (di sini anda boleh membaca lebih lanjut mengenai mengapa dan kapan untuk melakukan automasi ujian regresi). Prosesnya adalah seperti berikut:
Pengenalan kepada Jenkins Tools
Plugin: Salah satu ciri utama Jenkins Test Automation adalah keupayaan untuk menyesuaikannya dengan menggunakan plugin sedia ada atau membuat plugin anda sendiri. Segala-galanya dalam alat Jenkins, dari bahagian Konfigurasi Kerja ke bahagian Konfigurasi Jenkins, sebenarnya adalah pemalam. Oleh kerana saiz besar komuniti Jenkins, pelbagai plugin Jenkins sudah wujud untuk memenuhi keperluan tugas aliran kerja CI yang paling menuntut. Ini bermakna anda kemungkinan besar akan menemui plugin yang berguna dan bukannya membuat penyelesaian tersuai.
Node: Dalam persediaan yang paling mudah, contoh Jenkins akan dijalankan pada mesin, di mana semua pekerjaan akan dilaksanakan. Untuk ujian kecil dan sedikit tugasan, ini masuk akal. Walau bagaimanapun, dalam praktiknya, sering terdapat kes di mana beberapa pasukan menggunakan contoh Jenkins yang sama. Oleh kerana mereka mempunyai sejumlah besar pekerjaan, ia dianggap tidak baik untuk dilaksanakan atas alasan untuk alasan berikut: keselamatan, pemulihan bencana, prestasi, skalabilitas, dll.
Masukkan Master/Hamba di Jenkins: Jenkins Master Node hanya digunakan untuk menjadualkan pekerjaan untuk dilaksanakan pada hamba Jenkins. Dengan cara ini, tuan rumah Jenkins tidak banyak digunakan, dan pasukan mempunyai mesin hamba sendiri yang merupakan saiz terbaik untuk projek automasi ujian mereka. Selain itu, nod hamba kemudian dikonfigurasikan untuk memproses beberapa pekerjaan selari yang akan dilaksanakan (bilangan pelaksana setiap nod). Anda juga boleh mengkonfigurasi nod atas permintaan dari AWS. Ini bermakna nod hanya wujud apabila pekerjaan perlu dilaksanakan di atasnya. Ini sangat berguna kerana kami mahukan mesin yang lebih besar yang hanya akan digunakan sepenuhnya apabila menjalankan ujian regresi. Untuk kes ini, contoh EC2 yang lebih besar akan dilancarkan pada AWS di mana tugas itu akan dilaksanakan dan setelah selesai (berdasarkan masa terbiar konfigurasi), contohnya akan tetap aktif untuk tempoh masa. Selepas itu, ia akan menentukan pendekatan mana yang lebih berfaedah apabila menggunakan perkhidmatan berbayar setiap jam, seperti perkhidmatan AWS.
Dalam pelayan Jenkins CI, setiap pekerjaan Jenkins mengandungi pelbagai bahagian:
Umum: Di sini, kami menentukan projek/nama/keterangan kerja, tambahkan parameter pekerjaan yang diperlukan, tentukan strategi putaran log kerja, dll. Skrin seterusnya menunjukkan cara mengkonfigurasi putaran log (anda boleh menentukan bilangan hari untuk menyimpan log binaan atau bilangan log binaan terakhir yang akan disimpan), bagaimana untuk memarameterkan pekerjaan (dengan menambahkan rentetan binaan dengan nilai lalai 0.0.1, bagaimanapun, nilai ini boleh ditentukan semasa memulakan pekerjaan) dan bagaimana untuk mengkonfigurasi tempat kerja ini akan dilaksanakan (nama nod hamba):
Jenkins Membina Alam Sekitar: Di sini kita menentukan pilihan yang berkaitan dengan persekitaran yang dibina akan dilaksanakan (padamkan ruang kerja setiap kali kerja dilaksanakan, membatalkan pekerjaan jika ia digantung untuk tempoh masa ... dll.).
Ini adalah contoh plugin "melaksanakan shell" yang sering digunakan untuk menyamakan skrip shell anda sendiri atau melaksanakan skrip shell sedia ada.
Sila ambil perhatian bagaimana $ BUILD_ID ditentukan dalam baris subjek e -mel. Oleh kerana tugas ini parameter, nilai ini ditentukan apabila tugas dimulakan. Parameter ini boleh digunakan di bahagian operasi Build dan selepas membina Jenkins pekerjaan.
Kesimpulan
Artikel ini pada asalnya diterbitkan di TestProject - Blog Automasi Ujian
Jenkins dan Travis CI adalah alat integrasi berterusan yang popular, tetapi mereka mempunyai beberapa perbezaan utama. Jenkins adalah penyelesaian yang dihoskan sendiri yang memerlukan anda mengurus dan mengekalkan pelayan anda sendiri. Ia sangat disesuaikan dan boleh dikonfigurasikan untuk menampung hampir mana -mana alur kerja CI/CD. Travis CI, sebaliknya, adalah perkhidmatan berasaskan awan yang mudah ditubuhkan dan digunakan. Ia mengintegrasikan dengan baik dengan GitHub dan menyokong banyak bahasa dari kotak. Walau bagaimanapun, untuk aliran kerja yang kompleks, ia mungkin tidak fleksibel seperti Jenkins.
Jenkins dan Gitlab CI/CD kedua -duanya menawarkan penyelesaian integrasi berterusan yang kuat. Jenkins terkenal dengan fleksibiliti dan ekosistem plugin yang besar, sementara Gitlab CI/CD telah menerima pujian untuk integrasi lancarnya dengan ekosistem Gitlab. Gitlab CI/CD juga menyediakan sokongan Docker terbina dalam, yang boleh menjadi kelebihan besar bagi pasukan menggunakan Docker.
Jenkins menawarkan beberapa kelebihan ke atas pelayan CI yang lain. Ia adalah sumber terbuka dan mempunyai komuniti yang besar dan aktif, yang bermaksud ia sentiasa bertambah baik dan mengemas kini. Ia juga mempunyai ekosistem besar pemalam yang membolehkan anda memperluaskan keupayaannya untuk memenuhi keperluan khusus anda. Di samping itu, Jenkins menyokong pelbagai bahasa dan alat, menjadikannya pilihan yang sama untuk pelbagai projek.
Jenkins adalah alat sejagat yang mengendalikan integrasi berterusan projek Python. Ia mengautomasikan pembinaan, ujian, dan penggunaan aplikasi Python dan menyokong banyak rangka kerja ujian Python yang popular. Jenkins juga mengintegrasikan dengan baik dengan sistem kawalan versi seperti Git, menjadikannya mudah untuk disatukan ke dalam aliran kerja anda yang sedia ada.
Apabila memilih antara Jenkins dan Travis CI, anda harus mempertimbangkan faktor -faktor seperti kepakaran teknikal pasukan, kerumitan aliran kerja CI/CD anda, dan bajet. Jenkins memerlukan lebih banyak persediaan dan penyelenggaraan, tetapi menawarkan fleksibiliti dan kawalan yang lebih besar. Travis CI lebih mudah untuk ditubuhkan dan digunakan, tetapi mungkin tidak cukup fleksibel untuk aliran kerja yang kompleks. Ia juga merupakan perkhidmatan berbayar, dan Jenkins adalah sumber percuma dan terbuka.
Jenkins menyokong saluran paip CI/CD dari integrasi dan ujian untuk digunakan dengan mengautomasikan semua fasa penghantaran kod. Ia membolehkan maklum balas yang berterusan kerana pemaju dapat dengan cepat mengenal pasti dan menyelesaikan masalah dalam kod mereka. Jenkins juga mengintegrasikan dengan pelbagai alat dalam ekosistem CI/CD, menjadikannya pilihan yang sama untuk melaksanakan saluran paip CI/CD.
Ya, Jenkins boleh digunakan untuk projek yang tidak dihoskan di GitHub. Ia menyokong pelbagai sistem kawalan versi termasuk subversi, mercurial, dan perforce. Ini menjadikan Jenkins pilihan sejagat untuk pasukan menggunakan sistem kawalan versi yang berbeza.
Jenkins mengendalikan binaan selari dengan memperuntukkan tugas antara pelbagai mesin atau pelaksana. Ini membolehkan masa membina lebih cepat dan penggunaan sumber yang lebih cekap. Anda boleh mengkonfigurasi Jenkins untuk mengurus infrastruktur membina anda secara automatik atau secara manual menentukan tugas -tugas yang harus dijalankan di mana mesin.
Beberapa cabaran biasa apabila menubuhkan Jenkins termasuk menguruskan kebergantungan, mengkonfigurasi pembentukan pencetus, dan menubuhkan akses yang selamat. Walau bagaimanapun, Jenkins mempunyai komuniti yang besar dan aktif, jadi terdapat banyak sumber untuk membantu anda mengatasi cabaran -cabaran ini.
anda boleh melanjutkan fungsi Jenkins dengan memasang plugin. Jenkins mempunyai ekosistem besar plugin yang termasuk plugin untuk pelbagai fungsi dari integrasi dengan sistem kawalan versi yang berbeza untuk meningkatkan antara muka pengguna. Jika anda memerlukan ciri -ciri yang tidak disediakan oleh plugin sedia ada, anda juga boleh menulis plugin anda sendiri.
Atas ialah kandungan terperinci Garis Panduan Utama untuk Integrasi Berterusan dan Jenkins CI Server. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!