


Memperkenalkan Jenkins: Ujian Automatik dengan Pipelines
mata teras
- Jenkins adalah pelayan binaan sumber terbuka yang popular yang menyokong ujian automatik aplikasi kompleks dan mempercepatkan proses pelepasan dengan menemui dan menyelesaikan kesilapan sebelum penggunaan.
- Jenkins Pipeline (diperkenalkan dalam versi 2.0) adalah satu set langkah -langkah yang disesuaikan yang ditulis dalam bahasa skrip groovy untuk ujian dan kod bangunan. Jika satu langkah gagal, keseluruhan binaan akan gagal dan Jenkins akan berhenti melaksanakan.
- Jenkins boleh dipasang dan dikonfigurasi dengan mudah menggunakan Homestead Laravel. Sebaik sahaja persediaan selesai, anda boleh membuat kerja binaan baru untuk menyemak versi terbaru projek, memasang dependensi, dan menjalankan ujian unit.
- Paip Jenkins boleh ditulis sebagai skrip Jenkinsfile dalam direktori root asas kod, dengan itu melaksanakan kawalan versi. Anda juga boleh menyediakan pekerjaan saluran paip pelbagai cawangan untuk menjalankan operasi yang berbeza di cabang-cabang yang berlainan projek.
- Jenkins menyokong ekosistem plug-in yang boleh dipasang dan dikonfigurasikan untuk memperluaskan keupayaan mereka, termasuk ujian pemalam dan integrasi dengan perkhidmatan awan. Ia boleh dikonfigurasikan untuk dibina secara automatik setiap kali komit ditolak ke repositori dan harus dijamin dengan betul.
Katakan untuk menguji permohonan, langkah -langkah berikut diperlukan:
- run
- untuk memastikan kebergantungan dipasang
composer install
run - pada setiap fail php di pangkalan kod untuk memeriksa ralat sintaks
php -l
Jalankan phpunit untuk ujian unit - menjalankan codeception untuk ujian fungsi
Jika mana -mana langkah ini gagal, perisian harus dianggap tidak sesuai untuk penggunaan sehingga ralat diselesaikan. Memandangkan perisian menjadi lebih kompleks dan bilangan ujian meningkat dari masa ke masa, ia boleh mengambil masa beberapa minit untuk menjalankan suite ujian penuh, yang melambatkan pemaju dan, pada gilirannya, melambatkan proses pelepasan.
Untuk mengatasi masalah ini, membina pelayan boleh diperkenalkan dalam aliran kerja pembangunan. Pelayan Build menjalankan sekeping perisian yang membolehkan anda menjalankan beberapa langkah berulang kali, dan jika salah satu daripada mereka gagal, pelayan Build dapat memberitahu anda tentang masalah tersebut. Sekiranya anda terlibat dalam projek sumber terbuka, anda mungkin melihat aplikasi praktikal untuk pelayan bangunan seperti Travisci atau CircleCi. Sebagai contoh, setiap permintaan tarik untuk projek Laravel diuji oleh Travisci untuk memastikan bahawa perubahan tidak memecahkan sebarang ujian, dan Styleci kemudian memastikan bahawa perubahan kod sepadan dengan gaya kod projek.
Pipeline adalah satu set langkah -langkah yang disesuaikan sepenuhnya yang boleh dijalankan secara berurutan untuk menguji dan membina kod. Paip ditulis dalam bahasa skrip groovy dan ia mempunyai sintaks yang sangat mudah dan mudah dimulakan. Sebagai contoh, jika anda ingin menerangkan langkah ujian yang diterangkan sebelum ini sebagai saluran paip, ia mungkin kelihatan seperti ini:
Kenyataan
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
memberitahu Jenkins untuk memberikan nod binaan berasingan (Jenkins boleh dijalankan dalam mod tunggal-pelayan atau tetapan multi-nod). node
Terdapat pelbagai peringkat di blok, setiap peringkat melakukan operasi tertentu. Jenkins akan menjalankan setiap peringkat pada gilirannya, dan jika mana -mana peringkat gagal, seluruh binaan akan gagal dan Jenkins akan berhenti melaksanakan. node
Pasang Jenkins
Jenkins sangat mudah dipasang, dan dalam tutorial ini kami akan menggunakan Laravel Homestead untuk menyediakan persekitaran maya yang konsisten supaya anda boleh menggunakan Jenkins secara tempatan.
Langkah pertama ialah memasang Laravel Homestead - Berikut adalah panduan yang berguna. Anda hanya perlu memulakan dan menjalankan mesin maya, kami tidak perlu mengkonfigurasi mana -mana tapak dalam fail
. homestead.yaml
untuk log masuk ke dalamnya. vagrant ssh
Homestead datang dengan semua kebergantungan yang kita perlukan, iaitu Git, PHP, dan komposer, jadi kita hanya perlu memasang Jenkins sendiri. Berikutan panduan pakej Jenkins Debian, kita perlu melaksanakan langkah -langkah berikut.
run
Seterusnya, senarai sumber pakej perlu dikemas kini supaya kebolehan mengetahui tentang repositori pakej Jenkins. Jalankan wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
.
Akhirnya, kita memerlukan kebolehan untuk mengemas kini cache pakej yang tersedia dan kemudian pasang Jenkins: echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee -a /etc/apt/sources.list
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
Memasang Jenkins mengambil masa kira -kira lima minit, kerana ia juga mempunyai banyak kebergantungan yang perlu dipasang.
Selepas memasang Jenkins, buka http://192.168.10.10:8080
(atau URL hos maya yang anda konfigurasi, contohnya homestead.app
) dalam penyemak imbas anda dan anda harus melihat halaman bertajuk "Unlock Jenkins".
, dan nombor rawak dan tali abjad akan dicetak ke konsol. Salin dan tampal rentetan ke dalam medan teks dalam penyemak imbas dan tekan Teruskan. sudo cat /var/lib/jenkins/secrets/initialAdminPassword
anda akan melihat dua pilihan - pilih "Pasang plugin yang dicadangkan" dan tunggu beberapa minit sehingga plugin dimuat turun dan dipasang.
Pada skrin seterusnya, masukkan butiran pengguna pentadbir dan tekan "Simpan dan Selesai".
Buat pekerjaan pertama
Setelah menubuhkan Jenkins, kami akan membuat pekerjaan binaan baru yang akan melakukan perkara berikut:
lihat versi terbaru
- Memasang Ketergantungan Komposer
laravel/framework
Jalankan phpUnit - Klik pada Buat Pautan Kerja Baru (atau Buat Pautan Projek Baru - mereka semua melakukan perkara yang sama).
, pilih "Pipeline", dan tekan OK.
laravel
sudo apt-get update && sudo apt-get install jenkins
Paparan fasa akan dikemas kini apabila setiap fasa bermula dan berakhir ketika kita menentukan dalam skrip saluran paip.
Jika anda mengklik pada panggung, lapisan akan muncul dengan output log untuk peringkat itu, yang sangat berguna untuk debugging. Sebagai alternatif, anda boleh mengklik kerja di menu di sebelah kiri dan klik Konsol.
Semua pekerjaan Jenkins mempunyai ruang kerja mereka sendiri, yang merupakan zon di mana anda boleh membuat sebarang fail sementara yang mungkin anda perlukan di zon binaan. Lokasi ruang kerja untuk pekerjaan ini boleh didapati di /var/lib/jenkins/workspace/laravel
. Secara lalai, Jenkins tidak membersihkan ruang kerja ini untuk setiap binaan. Jika anda perlu melakukan ini, anda boleh menambah fasa ke permulaan skrip saluran paip seperti berikut:
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
Jenkinsfile
Untuk pekerjaan pertama kami, kami menyunting skrip saluran paip dalam antara muka Tetapan Kerja. Walau bagaimanapun, lebih berguna untuk menyimpan skrip ini dalam kawalan versi dengan kod kami.
Menggunakan saluran paip Jenkins, anda boleh menulis saluran paip sebagai skrip Jenkinsfile dalam direktori akar repositori kod dan ia akan ditemui dan dijalankan. Konsepnya sama dengan fail .travis.yml
atau .circleci.yml
yang mungkin sudah biasa.
Pada halaman Projek laravel/framework
GitHub, klik butang "Fork" di sudut kanan atas, dan kemudian klik profil dalam tetingkap pop timbul.
Buat cawangan baru bernama jenkinsfile
dan kemudian buat fail baru (anda boleh melakukan ini secara langsung di GitHub dan anda tidak perlu mengklon repositori jika anda tidak memerlukannya).
sudo apt-get update && sudo apt-get install jenkins
Masukkan butiran repositori yang telah anda bercabang dan klik Simpan.
Pada skrin Gambaran Keseluruhan Job, klik Bina Sekarang dalam menu di sebelah kiri. Anda harus mempunyai binaan yang berjaya.
Kebanyakan projek perisian menggunakan pelbagai cawangan di repositori untuk menentukan tahap projek yang berlainan. Contohnya:
Cawangan induk mewakili versi pengeluaran semasa
Membangunkan cawangan mewakili versi sementara semasa
- cawangan/cawangan halaman baru boleh mewakili fungsi berterusan
- Untuk setiap cawangan, anda mungkin ingin menjalankan banyak operasi tersuai - contohnya, apabila terdapat komitmen dari Master atau membangunkan cawangan, anda ingin menjalankan ujian penuh dan ujian integrasi, sementara di semua cawangan lain, hanya ujian unit adalah cukup.
- Jenkinsfile ditulis dalam bahasa pengaturcaraan groovy, yang bermaksud kita mempunyai bahasa skrip lengkap untuk digunakan.
Dalam contoh ini, saya menambah pernyataan jika untuk memeriksa nama cawangan;
Selepas, terdapat pernyataan suis yang mewujudkan arkib penempatan yang berbeza dan mendaftarkannya kepada perkhidmatan penempatan kod berdasarkan nama cawangan (dalam contoh ini, saya menunjukkan bagaimana ini akan berfungsi dengan Perkhidmatan CodeDeploy Amazon Web Service).
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
Pekerjaan saluran paip berbilang bercabang juga mudah untuk ditubuhkan-apabila membuat projek, pilih "Pipeline Multi-Branched" sebagai jenis:
Apabila pilihan "Indeks Jenama" dijalankan (ia menggantikan item menu "Bina Sekarang" di dalam pekerjaan), Jenkins akan berulang -ulang melelehkan setiap cawangan di repositori dan untuk setiap cawangan dengan Jenkinsfile yang baru -baru ini berubah, a Binaan baru untuk cawangan itu akan dijalankan.
pergi lebih jauh
populariti Jenkins sebahagian besarnya disebabkan oleh ekosistem plugin yang luas.
Pada skrin utama Jenkins, klik Urus Jenkins dalam menu di sebelah kiri, dan kemudian klik Plugin Manager.
Anda boleh memasang dan mengkonfigurasi berpuluh-puluh pemalam, dari ujian pemalam ke integrasi dengan perkhidmatan awan.
Sebagai contoh, jika pasukan anda menggunakan Slack, anda boleh mengaktifkan plugin pemberitahuan Slack. Ia dikonfigurasikan dalam skrin Tetapan Jenkins Utama ("Urus Jenkins" -> "Konfigurasi Sistem") dan mesej SLACK kemudiannya boleh dihantar sebagai sebahagian daripada skrip saluran paip:
Apabila Jenkins sedang berjalan dan berjalan di pelayan, pekerjaan itu dapat dikonfigurasi dengan mudah untuk membina secara automatik (atau menjalankan indeks cawangan) setiap kali komit ditolak ke repositori.
sudo apt-get update && sudo apt-get install jenkins
Untuk projek GitHub, pastikan plugin GitHub dipasang dan diaktifkan, dan kemudian membolehkan integrasi dengan perkhidmatan "Jenkins (GitHub Plugin)" dalam tetapan repositori GitHub.
Untuk bitbucket, ini sedikit lebih rumit, dan saya telah terperinci langkah -langkah yang diperlukan di blog saya.
Anda juga harus memastikan bahawa pelayan Jenkins dilindungi dengan betul - pengguna boleh dibuat secara manual di Jenkins, pengesahan yang diwakilkan ke GitHub atau Bitbucket menggunakan OAuth, atau disambungkan Jenkins ke direktori LDAP organisasi anda. Sekali lagi, Jenkins harus sentiasa dijalankan melalui SSL supaya akses kepada Jenkins tidak dapat dipintas dengan mudah.
Pemasangan Jenkins juga dilengkapi dengan "Penjana Coretan Kod" yang membolehkan anda melihat semua fungsi saluran paip yang diaktifkan (mis., Kami sudah menggunakan SH, Slacksend, Deletedir (), dan SCM). Anda boleh mencari pautan ke dalam menu kiri skrin gambaran kerja.
Ringkasan
Jenkins adalah alat yang sangat kuat yang dapat membantu meningkatkan kebolehpercayaan perisian anda dan menyelamatkan anda dan pasukan anda banyak masa. Manusia sangat buruk dalam melaksanakan tugas berulang berulang kali, tetapi komputer baik pada ini.
Jika pasukan anda perlahan kerana ujian yang berjalan selama lebih dari lima minit, nyahpasang ujian ke Jenkins.
Jenkins boleh melakukan ini jika anda ingin menjana arkib penempatan secara automatik apabila versi pengeluaran atau pementasan baru tersedia.
Jika anda ingin mengawasi kualiti kod dan menemui regresi sebelum pelanggan menemui, maka Jenkins bersedia untuk membantu.
Sila tinggalkan sebarang pertanyaan atau komen di bawah dan beritahu kami saluran paip Jenkins yang paling kreatif!
Jika anda suka artikel ini, anda juga boleh mencari yang berikut berguna:
- ujian cypress: Panduan untuk menjalankan aplikasi web
- Memperkenalkan ujian unit python menggunakan Unittest dan Pytest
- bagaimana untuk menguji komponen reaksi menggunakan jest
- belajar ujian akhir-ke-akhir dengan dalang
- Kaedah Ujian Berterusan Tiga Tangan Tinggi
soalan yang sering ditanya mengenai Jenkins menggunakan saluran paip untuk ujian automatik
Apakah faedah menggunakan Jenkins untuk ujian automatik?
Jenkins adalah alat sumber terbuka yang popular yang memberikan banyak faedah untuk ujian automatik. Pertama, ia menyediakan integrasi berterusan dan penghantaran berterusan (CI/CD), yang membolehkan pemaju mengintegrasikan perubahan ke dalam projek lebih kerap. Ini membawa kepada pengesanan awal masalah yang berpotensi dan mengurangkan masa pembaikan. Kedua, Jenkins menyokong pelbagai pemalam, menjadikannya sangat disesuaikan dan disesuaikan dengan keperluan projek yang berbeza. Ketiga, ia memberikan hasil ujian masa nyata dan laporan terperinci, yang membantu dengan cepat mengenal pasti dan menyelesaikan masalah. Akhirnya, Jenkins menyokong Pipeline, satu set alat yang membolehkan mudah untuk penghantaran saluran paip "sebagai kod" melalui bahasa domain saluran paip (DSL).
Bagaimana untuk menyediakan Jenkins untuk ujian PHP?
Menyediakan Jenkins untuk ujian PHP melibatkan beberapa langkah. Pertama, anda perlu memasang Jenkins pada pelayan. Selepas pemasangan, anda boleh memasang pemalam yang diperlukan untuk ujian PHP, seperti pemalam PHP, pemalam phpunit, dll. Selepas memasang plugin, anda boleh membuat kerja Jenkins baru dan mengkonfigurasinya untuk projek PHP anda. Ini termasuk menubuhkan pengurusan kod sumber, pencetus bangunan, dan langkah -langkah bangunan. Dalam langkah membina, anda boleh menentukan arahan untuk menjalankan ujian PHP. Sebaik sahaja konfigurasi selesai, pekerjaan itu boleh dijalankan, dan Jenkins akan melakukan ujian dan memberikan laporan terperinci.
Bagaimana ujian Jenkins dengan phpunit?
Jenkins bekerja dengan PHPUnit dengan melakukan ujian phpunit dalam pekerjaan Jenkins. Perintah PHPUNIT boleh ditentukan dalam langkah membina pekerjaan Jenkins. Apabila tugas dijalankan, Jenkins akan melakukan ujian phpunit dan menangkap hasilnya. Hasilnya kemudian dipaparkan di papan pemuka Jenkins, memberikan laporan terperinci mengenai pelaksanaan ujian. Ini termasuk bilangan ujian yang dijalankan, diluluskan, gagal, dan dilangkau, serta liputan kod.
Apakah aliran kerja yang betul untuk aplikasi Jenkins PHP menggunakan phpunit?
Aliran kerja yang betul untuk aplikasi Jenkins PHP menggunakan PHPUnit biasanya termasuk langkah -langkah berikut: Pertama, lihat kod sumber dari sistem kawalan versi. Seterusnya, pasang sebarang kebergantungan, seperti komposer untuk projek PHP. Kemudian, jalankan ujian phpunit. Hasil ujian kemudian dikumpulkan dan dipaparkan di papan pemuka Jenkins. Jika sebarang ujian gagal, binaan itu ditandakan sebagai gagal. Jika tidak, binaan itu ditandakan sebagai berjaya. Aliran kerja ini boleh automatik menggunakan saluran paip Jenkins untuk integrasi dan penghantaran berterusan.
Bagaimana untuk menghuraikan PHPUNIT dan JUNIT menghasilkan Jenkins?
PHPUNIT dan JUNIT Hasil boleh dihuraikan di Jenkins menggunakan plugin Junit. Selepas menjalankan ujian phpunit, anda boleh menghasilkan laporan JUNIT XML. Plugin Junit di Jenkins kemudian dapat menghuraikan laporan ini. Dalam operasi selepas kerja kerja Jenkins, anda boleh menambah operasi "Terbitkan Laporan Hasil Ujian Junit" dan tentukan lokasi laporan JUNIT XML. Jenkins kemudian mengepam laporan itu dan memaparkan keputusan di papan pemuka. Ini termasuk bilangan ujian yang dijalankan, diluluskan, gagal, dan dilangkau, serta tempoh ujian dan trend.
Atas ialah kandungan terperinci Memperkenalkan Jenkins: Ujian Automatik dengan Pipelines. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Alipay Php ...

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimana cara debug mod CLI dalam phpstorm? Semasa membangun dengan PHPStorm, kadang -kadang kita perlu debug PHP dalam mod Interface Line Command (CLI) ...

Fungsi penghitungan dalam Php8.1 meningkatkan kejelasan dan jenis keselamatan kod dengan menentukan pemalar yang dinamakan. 1) Penghitungan boleh menjadi bilangan bulat, rentetan atau objek, meningkatkan kebolehbacaan kod dan keselamatan jenis. 2) Penghitungan adalah berdasarkan kelas dan menyokong ciri-ciri berorientasikan objek seperti traversal dan refleksi. 3) Penghitungan boleh digunakan untuk perbandingan dan tugasan untuk memastikan keselamatan jenis. 4) Penghitungan menyokong penambahan kaedah untuk melaksanakan logik kompleks. 5) Pemeriksaan jenis dan pengendalian ralat yang ketat boleh mengelakkan kesilapan biasa. 6) Penghitungan mengurangkan nilai sihir dan meningkatkan keupayaan, tetapi memberi perhatian kepada pengoptimuman prestasi.

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.
