Rumah >pembangunan bahagian belakang >tutorial php >Menyediakan dan membina projek PHP di Jenkins

Menyediakan dan membina projek PHP di Jenkins

Christopher Nolan
Christopher Nolanasal
2025-02-19 10:48:11606semak imbas

Menyediakan dan membina projek PHP di Jenkins

Dalam artikel sebelumnya, kami melalui pemasangan Jenkins dan menyediakan segala -galanya untuk dimulakan. Kami akan meneruskan artikel ini dengan benar -benar menyediakan projek kami. Sekiranya anda mempunyai persediaan Jenkins siap dari sebelumnya, tidak perlu melalui bahagian sebelumnya - anda boleh mengikuti bersama dengan yang ini dengan baik.

Takeaways Key

    Untuk menyediakan projek PHP di Jenkins, ia dinasihatkan untuk mempunyai alat seperti PHPUnit dan PHP-Codesniffer yang tersedia. Ini boleh dicapai dengan memasang pakej secara global pada pelayan Jenkins atau menentukan kebergantungan dalam fail komposer.json.
  • Ant digunakan pada pelayan Jenkins untuk mengautomasikan proses membina perisian. Sasaran ditakrifkan dalam fail konfigurasi, dan ANT melakukan tindakan berdasarkan sasaran ini. Fail build.xml ditambah ke projek untuk Ant untuk melaksanakan tugas pada pelayan Jenkins.
  • Fail build.xml mungkin memerlukan pengubahsuaian untuk memenuhi projek tertentu. Ini termasuk menentukan di mana alat seperti phpunit boleh didapati dan membersihkan beberapa arahan untuk dipadankan dengan projek dengan betul.
  • Sasaran baru mungkin perlu dibuat untuk memastikan semua alat QA akan dijalankan seperti yang diharapkan. Ini termasuk berurusan dengan keperluan untuk menubuhkan projek dengan betul pada Jenkins, seperti kebergantungan yang dikawal oleh komposer dan bower.
  • Selepas menyediakan projek itu, perlu membuat projek di Jenkins dan mengkonfigurasinya. Langkah -langkah termasuk memasang plugin GitHub dalam Jenkins, membuat item baru, dan mengkonfigurasi pengurusan sumber. Binaan itu kemudiannya boleh dimulakan dengan mengklik 'Build Now' di menu sampingan projek.
Sediakan komposer

Kami akan menyediakan projek kami terlebih dahulu. Kami boleh menggunakan projek yang dibekalkan oleh Sebastian Bergmann, tetapi ia agak projek asas dan akan berjalan tanpa masalah di Jenkins. Dalam artikel ini, kita akan menggunakan repositori yang berbeza di mana kita perlu mengatasi beberapa halangan. Kami akan menggunakan garpu jumph sebagai asas kami.

Pertama dan terpenting, kita perlu memastikan bahawa kita mempunyai alat seperti phpunit dan php-codesniffer yang tersedia. Kita boleh melakukan ini dalam dua cara yang berbeza. Sama ada kami memasang pakej pada pelayan Jenkins kami melalui pir atau komposer di seluruh dunia, atau kami menentukan kebergantungan dalam fail komposer.json kami. Saya memutuskan untuk pergi dengan kaedah yang terakhir, jadi kami dapat dengan mudah mengawal versi alat -alat ini pada mesin tempatan kami sendiri serta pada Jenkins. Oleh itu, kita mulakan dengan menambahkan baris berikut ke fail komposer.json dan menjalankan kemas kini komposer.

"require-dev": {
    "squizlabs/php_codesniffer": "~1.5.*",
    "phpmd/phpmd": "~2.1.*",
    "sebastian/phpcpd": "~2.0.*",
    "pdepend/pdepend": "~2.0.*",
    "phploc/phploc": "~2.0.*",
    "phpunit/phpunit": "~4.3.*",
    "theseer/phpdox": "~0.7.*",
},

Jika anda ingin mengetahui lebih lanjut mengenai apa yang setiap pakej lakukan, lihat artikel Bruno mengenai alat PHP QA.

Sediakan Ant

Pada pelayan Jenkins kami, kami akan menggunakan ANT. Oleh itu, dalam kes Ant belum dipasang pada pelayan anda, pastikan ia dengan menjalankan perintah berikut.

"require-dev": {
    "squizlabs/php_codesniffer": "~1.5.*",
    "phpmd/phpmd": "~2.1.*",
    "sebastian/phpcpd": "~2.0.*",
    "pdepend/pdepend": "~2.0.*",
    "phploc/phploc": "~2.0.*",
    "phpunit/phpunit": "~4.3.*",
    "theseer/phpdox": "~0.7.*",
},

Ant membantu anda mengautomasikan proses membina perisian. Anda menentukan tugas, yang dipanggil sasaran, dalam fail konfigurasi. ANT akan membaca fail ini dan melakukan tindakan yang sesuai. Anda boleh menentukan kebergantungan untuk menunjukkan di mana perintah semut harus melaksanakan tugas -tugas ini. Fail konfigurasi adalah fail binaan.xml yang dipanggil. Kami akan menambah ini kepada projek kami, jadi Ant boleh melaksanakan tugas -tugas ini pada pelayan Jenkins kami. Kami akan menggunakan templat yang disediakan oleh Sebastian Bergmann yang boleh didapati di sini. Kami menambah ini ke akar projek kami.

untuk menjalankan semut, anda boleh memulakan pembentukan semut pada baris arahan. Ini bermakna semut akan menjalankan sasaran binaan. Sekiranya tiada parameter diberikan, ANT akan menjalankan sasaran seperti yang ditunjukkan dalam konfigurasi sebagai lalai, yang dalam kes ini juga dibina.

mari kita lihat lebih dekat pada sasaran binaan.

sudo apt-get install ant

Sasarannya kosong, bagaimanapun, ia bergantung kepada banyak sasaran lain. Ia akan mula -mula menjalankan sasaran Sediakan dan kemudian teruskan dengan sasaran serat sehingga setiap sasaran telah dijalankan. Mari kita lihat sasaran PhPLOC-CI sebagai contoh.

<span><span><span><target</span> name<span>="build"</span> depends<span>="prepare,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpunit,phpdox"</span> description<span>=""</span>/></span></span>

Sasaran ini agak mudah difahami. Anda akan melihatnya bergantung pada sasaran yang disediakan. Oleh kerana itu sudah dijalankan oleh sasaran binaan, ia tidak akan berjalan lagi. Kemudian kita mendapat executable, iaitu phploc, yang akan dilaksanakan oleh ANT. Anda memasang ini lebih awal dengan komposer. Akhir sekali, kita akan melihat hujah -hujah khusus PHPLOC. ANT akan menjalankan input baris arahan berikut berdasarkan konfigurasi sasaran ini.

<span><span><span><target</span> name<span>="phploc-ci"</span> depends<span>="prepare"</span> description<span>="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."</span>></span>
</span>    <span><span><span><exec</span> executable<span>="${toolsdir}phploc"</span>></span>
</span>        <span><span><span><arg</span> value<span>="--count-tests"</span>/></span>
</span>        <span><span><span><arg</span> value<span>="--log-csv"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.csv"</span>/></span>
</span>        <span><span><span><arg</span> value<span>="--log-xml"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.xml"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/src"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span>
</span>    <span><span><span></exec</span>></span>
</span><span><span><span></target</span>></span></span>

$ {toolsdir} dan $ {basedir} adalah 2 pembolehubah. Bergantung pada bagaimana mereka dikonfigurasikan, mereka mungkin memberi kesan kepada output baris perintah keseluruhan

Seperti yang ditunjukkan di atas, jika anda hanya mahu mencetuskan sasaran ini, anda harus menjalankan ant phploc-ci pada baris arahan.

Perhatikan bahawa arahan PHPLOC ini akan mengeluarkan fail phploc.csv dan fail phploc.xml. Plugin yang dipasang di Jenkins sebelum ini akan membaca fail -fail ini dan menukarnya kepada graf, sebagai contoh. Dalam artikel seterusnya kita akan menyelam lebih mendalam ke dalam topik ini.

Jika anda melihat melalui fail binaan.xml keseluruhan, anda akan melihat bahawa ia bergantung kepada 3 fail konfigurasi berasingan lain untuk alat tertentu; BUILD/PHPMD.XML, BUILD/PHPDOX.XML dan BUILD/PHPUNIT.XML. Fail konfigurasi ini diminta oleh alat sebenar. Untuk mengetahui lebih lanjut, lihat dokumen masing -masing.

Perhatikan bahawa phpunit.xml sangat diilhamkan oleh fail phpunit.xml.dist asal dari Symfony2 kerana kita berurusan dengan projek Symfony2. menukar fail build.xml

Jadi, adakah kita selesai? Malangnya, belum. Fail build.xml sangat generik dan tidak sesuai sepenuhnya untuk projek kami. Mula -mula kita perlu menentukan di mana alat seperti phpunit boleh didapati. Komposer kami memasangnya secara automatik dalam direktori bin dalam akar projek kami. Kita perlu menukar harta ToolSdir dengan nilai yang betul.

"require-dev": {
    "squizlabs/php_codesniffer": "~1.5.*",
    "phpmd/phpmd": "~2.1.*",
    "sebastian/phpcpd": "~2.0.*",
    "pdepend/pdepend": "~2.0.*",
    "phploc/phploc": "~2.0.*",
    "phpunit/phpunit": "~4.3.*",
    "theseer/phpdox": "~0.7.*",
},

kita juga boleh membersihkan beberapa arahan. Fail Build.xml semasa mendefinisikan bahawa kami di satu pihak mempunyai direktori Src dan sebaliknya direktori ujian. Oleh kerana Symfony2 termasuk ujian dalam direktori SRC, kita boleh mengeluarkan semua laluan ke direktori ujian seperti contoh ini.

sudo apt-get install ant

Walaupun tidak diperlukan, saya lebih suka menyimpan segala -galanya yang bersih sehingga ia sesuai dengan projek kami dengan betul.

Akhir sekali, konfigurasi semasa untuk phpDox seperti yang ditunjukkan dalam fail Build.xml semasa menulis artikel ini tidak berfungsi dengan versi terkini dalam kes saya. Saya menukar sasaran seperti di bawah, jadi ia betul membaca fail konfigurasi kami.

<span><span><span><target</span> name<span>="build"</span> depends<span>="prepare,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpunit,phpdox"</span> description<span>=""</span>/></span></span>

Membuat sasaran baru

Segala -galanya telah ditubuhkan untuk memastikan semua alat QA kami akan berjalan seperti yang diharapkan. Walau bagaimanapun, projek kami hanya sedikit lebih rumit. Jika anda menganalisis repositori, anda akan melihat bahawa kebergantungan dikawal oleh komposer dan bower. Oleh kerana ia adalah projek Symfony, kami juga memerlukan fail parameter.yml lalai. Kita perlu menangani keperluan ini untuk dapat menubuhkan projek dengan betul pada Jenkins.

mari kita mulakan dengan fail parameter.yml. Kami boleh bekerja dengan kandungan lalai parameter.yml.dist, jadi kami hanya akan menyalin fail itu. Kami mulakan dengan membuat sasaran baru bernama Copy-Parameter yang melaksanakan arahan CP.

<span><span><span><target</span> name<span>="phploc-ci"</span> depends<span>="prepare"</span> description<span>="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."</span>></span>
</span>    <span><span><span><exec</span> executable<span>="${toolsdir}phploc"</span>></span>
</span>        <span><span><span><arg</span> value<span>="--count-tests"</span>/></span>
</span>        <span><span><span><arg</span> value<span>="--log-csv"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.csv"</span>/></span>
</span>        <span><span><span><arg</span> value<span>="--log-xml"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.xml"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/src"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span>
</span>    <span><span><span></exec</span>></span>
</span><span><span><span></target</span>></span></span>

seterusnya adalah komposer dan bower. Saya memutuskan untuk memasang ini secara global di pelayan Jenkins dengan melaksanakan arahan berikut.

phploc --count-tests --log-csv /build/logs/phploc.csv --log-xml /build/logs/phploc.xml /src /tests

[ed: Perhatikan bahawa jika anda menjalankan semua ini dalam VM yang dihoskan pada Windows, BowerPhp akan menjadi pilihan yang lebih baik daripada Bower.]

sekarang mari buat sasaran untuk komposer.

<span><span><span><property</span> name<span>="toolsdir"</span> value<span>="bin/"</span> /></span></span>

Adalah penting untuk menetapkan symfony_env untuk menguji jadi Symfony tahu ia perlu membersihkan direktori cache ujiannya.

mari kita teruskan dengan Bower.

<span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span></span>

Perkara terakhir yang perlu kita lakukan, adalah untuk memastikan sasaran ini dilaksanakan. Oleh itu, kami menukar sasaran binaan dan menambah 3 sasaran yang baru dibuat mengikut urutan yang kami mahu melaksanakannya.

<span><span><span><target</span> name<span>="phpdox"</span> depends<span>="phploc-ci,phpcs-ci,phpmd-ci"</span> description<span>="Generate project documentation using phpDox"</span>></span>
</span>  <span><span><span><exec</span> executable<span>="${toolsdir}phpdox"</span>></span>
</span>   <span><span><span><arg</span> value<span>="--file"</span> /></span>
</span>   <span><span><span><arg</span> value<span>="${basedir}/build/phpdox.xml"</span> /></span>
</span>  <span><span><span></exec</span>></span>
</span> <span><span><span></target</span>></span></span>

git

Perkara terakhir yang perlu kita lakukan ialah menyediakan fail .gitignore kami. Sekiranya anda ingin menjalankan sasaran semut pada mesin tempatan anda, direktori binaan anda akan diisi dengan fail log yang anda tidak mahu komited ke repositori anda. Oleh itu, kami menambah baris berikut ke fail .gitignore.

<span><span><span><target</span> name<span>="copy-parameters"</span> description<span>="Copy parameters.yml file"</span>></span>
</span>  <span><span><span><exec</span> executable<span>="cp"</span> failonerror<span>="true"</span>></span>
</span>   <span><span><span><arg</span> path<span>="app/config/parameters.yml.dist"</span> /></span>
</span>   <span><span><span><arg</span> path<span>="app/config/parameters.yml"</span> /></span>
</span>  <span><span><span></exec</span>></span>
</span> <span><span><span></target</span>></span></span>

Mungkin anda mendapat sedikit keliru dengan semua perubahan yang kami buat. Untuk kemudahan anda, berikut adalah pautan langsung kepada komit dengan semua perubahan yang kami nyatakan di atas.

Buat projek di Jenkins

Projek kami sudah siap. Mari kembali ke Jenkins dan konfigurasikannya. Ini akan menjadi bahagian paling mudah dalam artikel ini.

Sejak projek kami terletak di GitHub, saya cadangkan anda memasang plugin GitHub dalam Jenkins. Jika anda menggunakan pelayan git anda sendiri, anda hanya boleh memasang plugin git biasa. Jika anda tidak pasti cara memasang plugin, periksa artikel sebelumnya.

Apabila anda kembali ke gambaran keseluruhan, anda perlu mengklik item baru di menu kiri. Sebagai nama item, kami mengisi jumph. Seterusnya, kami memilih pilihan salinan item sedia ada dan isi PHP-templat sebagai projek untuk disalin dari.

Menyediakan dan membina projek PHP di Jenkins

Kami akan segera dibawa ke halaman konfigurasi projek ini. Mula -mula kita hapus centang lumpuhkan binaan supaya binaan kami akan didayakan pada simpan. Di dalam medan input projek GitHub, kami mengisi URL ke projek GitHub.

Perkara terakhir yang perlu kita lakukan ialah memilih pengurusan sumber. Dalam kes kami, ini adalah git. Seterusnya, anda perlu mengisi pautan repositori. Jika anda menggunakan pautan HTTPS, anda tidak perlu memberikan sebarang kelayakan tambahan. Kita boleh menentukan cawangan mana yang harus dibina, tetapi kerana kita hanya mempunyai cawangan induk, kita akan meninggalkannya seperti itu.

Konfigurasi dilakukan - ia sangat mudah kerana kami menggunakan templat yang telah ditetapkan. Jika anda menatal ke bawah, anda akan melihat apa yang dikonfigurasikan templat untuk kami. Jangan lupa untuk menyimpan konfigurasi anda sebelum meneruskan.

Mulakan binaan

Jika anda mengikuti semua langkah setakat ini, anda kini boleh memulakan binaan. Anda boleh memulakan binaan dengan mengklik binaan sekarang di menu sebelah kiri projek. Anda akan melihat di meja kiri bawah yang binaan muncul.

Menyediakan dan membina projek PHP di Jenkins Jika anda mengklik binaan itu sendiri, anda akan mendapat menu sampingan baru dengan pilihan untuk membina khusus ini. Klik pada output konsol untuk melihat apa yang sedang berlaku. Dalam kes saya, binaan pertama gagal kerana kehilangan beberapa sambungan PHP.

output konsol datang sangat berguna untuk mengetahui mengapa projek anda gagal. Dalam kes saya, saya hanya perlu menjalankan SUDO APT-GET Pasang PhP5-CURL PhP5-XSL PhP5-SQLITE PhP5-XDEBUG untuk memasang beberapa pakej yang diperlukan. Saya mengambil beberapa binaan untuk mengetahui apa yang hilang, tetapi dengan output konsol, mudah untuk mengetahui apa yang salah. Akhirnya, inilah yang kelihatan seperti sejarah binaan saya. Menyediakan dan membina projek PHP di Jenkins

Merah bermaksud binaan telah gagal, di mana biru bermakna binaan berjaya. Kegagalan boleh bermakna sesuatu yang tidak kena dengan konfigurasi seperti yang kita lihat sebelum ini, tetapi ia juga bermakna bahawa ujian unit telah gagal. Jika anda membuka fail Build.xml anda sekali lagi, anda akan melihat bahawa beberapa sasaran mendapat atribut bernama FailonError yang ditetapkan untuk benar. Jika atas sebab tertentu, sasaran itu gagal, ANT akan berhenti secara automatik dan akan melaporkan binaan sebagai pecah.

Mungkin anda menjangkakan bola hijau dan bukan bola biru apabila binaan berjaya. Terdapat plugin yang tersedia untuk menunjukkan bola hijau dan bukannya biru.

Kesimpulan

Dalam artikel ini, kami berusaha untuk membina yang berjaya. Kami terpaksa menyediakan projek kami dan mewujudkan pekerjaan di Jenkins. Akhirnya kami terpaksa debug beberapa binaan pertama kami kerana kami terlupa memasang beberapa perpustakaan.

Di bahagian seterusnya, kita akan melihat semua keputusan Jenkins memberikan kembali.

Soalan Lazim (Soalan Lazim) Mengenai Membina Projek PHP Dengan Jenkins

Bagaimana saya boleh menyediakan Jenkins untuk projek PHP saya?

Menyediakan Jenkins untuk projek PHP anda melibatkan beberapa langkah. Pertama, anda perlu memasang Jenkins pada pelayan anda. Anda boleh memuat turunnya dari laman web rasmi Jenkins dan ikuti arahan pemasangan. Setelah dipasang, anda perlu mengkonfigurasi Jenkins untuk bekerja dengan PHP. Ini melibatkan memasang plugin yang diperlukan seperti plugin PHP, plugin Git, dan lain -lain bergantung pada keperluan projek anda. Selepas memasang plugin, anda boleh membuat kerja Jenkins baru dan mengkonfigurasinya untuk membina projek PHP anda. Anda perlu menentukan lokasi kod sumber projek anda, pencetus binaan, dan langkah -langkah membina. Projek PHP. Ia mengautomasikan proses membina, menguji, dan menggunakan aplikasi PHP anda, yang dapat menjimatkan banyak masa dan usaha. Ia juga membantu memastikan bahawa kod anda sentiasa berada dalam keadaan yang boleh digunakan, yang dapat meningkatkan kualiti perisian anda. Tambahan pula, Jenkins menyokong integrasi berterusan dan penghantaran berterusan, yang dapat membantu anda menyampaikan kemas kini kepada pengguna anda dengan lebih cepat dan kerap. Jenkins boleh digunakan untuk mengautomasikan ujian untuk projek PHP anda dengan mengintegrasikan dengan pelbagai alat ujian. Sebagai contoh, anda boleh menggunakan plugin phpunit untuk menjalankan ujian unit, atau plugin selenium untuk menjalankan ujian fungsi. Anda hanya perlu mengkonfigurasi plugin ini dalam pekerjaan Jenkins anda, dan mereka secara automatik akan menjalankan ujian anda setiap kali anda membina projek anda. Ini dapat membantu menangkap pepijat lebih awal dan memastikan kod anda sentiasa berada dalam keadaan yang baik. Bahasa pengaturcaraan selain PHP. Ini termasuk Java, Python, Ruby, C#, dan banyak lagi. Anda boleh menggunakan Jenkins untuk membina, menguji, dan menggunakan aplikasi yang ditulis dalam bahasa ini dengan memasang plugin yang sesuai dan mengkonfigurasi pekerjaan Jenkins anda dengan sewajarnya.

Bagaimana saya boleh menggunakan Jenkins untuk menggunakan aplikasi PHP saya? Sebagai contoh, anda boleh menggunakan plugin SSH untuk menggunakan aplikasi anda ke pelayan jauh, atau plugin Docker untuk menggunakan aplikasi anda sebagai bekas Docker. Anda hanya perlu mengkonfigurasi plugin ini dalam pekerjaan Jenkins anda, dan mereka secara automatik akan menggunakan aplikasi anda setiap kali anda membina projek anda. Integrasi adalah amalan pembangunan perisian di mana pemaju mengintegrasikan kod mereka ke dalam repositori bersama sering, biasanya beberapa kali sehari. Ini membantu menangkap isu integrasi lebih awal dan mengurangkan masa dan usaha yang diperlukan untuk menyampaikan kemas kini perisian. Jenkins menyokong integrasi berterusan dengan mengautomasikan proses membina, menguji, dan menggunakan perisian anda setiap kali anda melakukan perubahan pada repositori anda. Penghantaran adalah amalan pembangunan perisian di mana perubahan kod dibina secara automatik, diuji, dan disediakan untuk pembebasan untuk pengeluaran. Ia bertujuan untuk membuat siaran kurang berisiko dan lebih kerap. Jenkins menyokong penghantaran berterusan dengan mengautomasikan keseluruhan proses pelepasan perisian, dari integrasi dan ujian ke penghantaran dan penempatan. Ini membolehkan anda membina, menguji, dan menggunakan perisian anda secara automatik setiap kali anda menolak perubahan pada repositori Git anda. Anda boleh mengkonfigurasi ini dengan memasang plugin git dan menyediakan webhook di repositori git anda untuk mencetuskan Jenkins membina setiap kali perubahan ditolak. Jenkins menyediakan beberapa alat untuk membantu anda menyelesaikan masalah. Ini termasuk membina log, yang boleh memberikan maklumat terperinci tentang apa yang berlaku semasa binaan, dan log sistem, yang dapat memberikan maklumat mengenai operasi keseluruhan pelayan Jenkins anda. Anda juga boleh menggunakan Jenkins CLI atau REST API untuk berinteraksi dengan pelayan Jenkins anda dan mendiagnosis isu.

Bagaimana saya boleh mengamankan pelayan Jenkins saya? Pertama, anda harus memastikan bahawa pelayan Jenkins anda menjalankan versi terkini, kerana ini termasuk patch keselamatan terkini. Anda juga harus mengkonfigurasi Jenkins untuk menggunakan HTTPS, yang akan menyulitkan komunikasi antara pelayan Jenkins anda dan pengguna anda. Di samping itu, anda harus menyekat akses kepada pelayan Jenkins anda dengan menggunakan mekanisme pengesahan dan kebenaran, dan mengehadkan keizinan pengguna Jenkins untuk hanya apa yang mereka perlukan untuk melaksanakan tugas mereka.

Atas ialah kandungan terperinci Menyediakan dan membina projek PHP di Jenkins. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn