


Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci?
Feb 10, 2025 pm 03:08 PM
- Semaphoreci, perkhidmatan integrasi dan penyampaian yang berterusan, boleh digunakan bersempena dengan Envoy Laravel atau Deployer untuk mengautomasikan proses penempatan selepas ujian yang berjaya.
- alat penyebaran seperti Envoy dan Deployer Laravel boleh ditubuhkan untuk bekerja dengan semaphoreci dengan menentukan pelayan dan membuat tugas untuk mengendalikan proses penempatan. Strategi penempatan boleh dikonfigurasikan pada halaman projek di Semaphoreci, dengan pilihan untuk penggunaan automatik atau manual.
- Proses integrasi dan penempatan dicetuskan dengan melakukan perubahan pada repositori. Sekiranya timbul masalah, Semaphoreci memberikan keupayaan untuk melihat log dan menyiasat masalah tersebut. Ia juga menawarkan pilihan untuk SSH ke dalam pelayan Build untuk menyelesaikan masalah selanjutnya.
Automasi ujian, integrasi berterusan, dan penghantaran berterusan agak meluas dalam komuniti sekarang. Ini membawa pelbagai perkhidmatan yang cuba membuat proses lebih menyeronokkan dan kurang menggembirakan pemaju, sehingga mereka dapat memberi tumpuan kepada penyampaian perisian dan bukannya membina/mengkonfigurasi alat untuk melakukannya. Salah satu daripada perkhidmatan tersebut adalah semaphoreci.
Dalam artikel ini, kami akan menutup cara menggunakan skrip dan alat kami sendiri untuk meneruskan proses penempatan selepas ujian yang berjaya.
kami akan menggunakan Semaphoreci untuk penghantaran berterusan dan penyebaran untuk menolak kod kami ke pelayan pengeluaran DigitalOcean. Jika anda tidak biasa dengan Deployer, kami mengesyorkan anda menyemak pengenalan ini.
Aplikasi Demo
Membuat skrip deployer
cara kerja Deployer adalah dengan kami mendefinisikan pelayan, dan kemudian membuat tugas yang mengendalikan proses mengerahkan aplikasi kepada pelayan tersebut. Skrip penyebaran.php kami kelihatan seperti ini:
Anda harus membaca artikel Deployer jika anda ingin mengetahui lebih lanjut mengenai skrip khusus ini. Langkah seterusnya adalah untuk menubuhkan projek semaphoreci. Sila baca artikel kursus Crash jika anda tidak pernah mencuba semaphoreci sebelum ini, dan lakukan itu.
<span><span><?php </span></span><span> </span><span><span>require_once "recipe/common.php"; </span></span><span> </span><span><span>set('ssh_type', 'native'); </span></span><span><span>set('default_stage', 'staging'); </span></span><span><span>env('deploy_path', '/var/www'); </span></span><span><span>env('composer_options', 'install --no-dev --prefer-dist --optimize-autoloader --no-progress --no-interaction'); </span></span><span><span>set('copy_dirs', [ </span></span><span> <span>'app/commands', </span></span><span> <span>'app/config', </span></span><span> <span>'app/controllers', </span></span><span> <span>'app/database', </span></span><span> <span>'app/lang', </span></span><span> <span>'app/models', </span></span><span> <span>'app/src', </span></span><span> <span>'app/start', </span></span><span> <span>'app/tests', </span></span><span> <span>'app/views', </span></span><span> <span>'app/filters.php', </span></span><span> <span>'app/routes.php', </span></span><span> <span>'bootstrap', </span></span><span> <span>'public', </span></span><span> <span>'composer.json', </span></span><span> <span>'composer.lock', </span></span><span> <span>'artisan', </span></span><span> <span>'.env', </span></span><span><span>]); </span></span><span> </span><span><span>set('shared_dirs', [ </span></span><span> <span>'app/storage/cache', </span></span><span> <span>'app/storage/logs', </span></span><span> <span>'app/storage/meta', </span></span><span> <span>'app/storage/sessions', </span></span><span> <span>'app/storage/views', </span></span><span><span>]); </span></span><span><span>set('writable_dirs', get('shared_dirs')); </span></span><span><span>set('http_user', 'www-data'); </span></span><span> </span><span><span>server('digitalocean', '174.138.78.215') </span></span><span> <span>->identityFile() </span></span><span> <span>->user('root') </span></span><span> <span>->stage('staging'); </span></span><span> </span><span><span>task('deploy:upload', function() { </span></span><span> <span>$files = get('copy_dirs'); </span></span><span> <span>$releasePath = env('release_path'); </span></span><span> </span><span> <span>foreach ($files as $file) </span></span><span> <span>{ </span></span><span> <span>upload($file, "<span><span>{$releasePath}</span>/<span>{$file}</span>"</span>); </span></span><span> <span>} </span></span><span><span>}); </span></span><span> </span><span><span>task('deploy:staging', [ </span></span><span> <span>'deploy:prepare', </span></span><span> <span>'deploy:release', </span></span><span> <span>'deploy:upload', </span></span><span> <span>'deploy:shared', </span></span><span> <span>'deploy:writable', </span></span><span> <span>'deploy:symlink', </span></span><span> <span>'deploy:vendors', </span></span><span> <span>'current',// print current release number </span></span><span><span>])->desc('Deploy application to staging.'); </span></span><span> </span><span><span>after('deploy:staging', 'success'); </span></span>Menyediakan penyebaran
Untuk mengkonfigurasi strategi penempatan, kita perlu pergi ke halaman projek dan klik disediakan penempatan.
Selepas memilih penggunaan automatik, Semaphoreci akan memberi kita keupayaan untuk menentukan arahan penempatan. Perbezaan antara manual dan automatik, adalah bahawa penggunaan automatik dicetuskan selepas setiap ujian yang berjaya, sementara manual akan membolehkan kita menggunakan apa -apa komit yang berjaya.
kita boleh memilih untuk memasukkan deployer.phar dalam repo kami sebagai fail phar atau memerlukannya menggunakan komposer. Sama ada cara, arahan akan sama.
Kunci akan tersedia di bawah ~/.ssh/id_rsa, jadi identitifile () boleh ditinggalkan pada lalai.
tolak untuk menggunakan
Sekarang bahawa segala -galanya ditubuhkan, kita perlu melakukan beberapa perubahan kepada repositori untuk mencetuskan proses integrasi dan penempatan.
<span><span><?php </span></span><span> </span><span><span>require_once "recipe/common.php"; </span></span><span> </span><span><span>set('ssh_type', 'native'); </span></span><span><span>set('default_stage', 'staging'); </span></span><span><span>env('deploy_path', '/var/www'); </span></span><span><span>env('composer_options', 'install --no-dev --prefer-dist --optimize-autoloader --no-progress --no-interaction'); </span></span><span><span>set('copy_dirs', [ </span></span><span> <span>'app/commands', </span></span><span> <span>'app/config', </span></span><span> <span>'app/controllers', </span></span><span> <span>'app/database', </span></span><span> <span>'app/lang', </span></span><span> <span>'app/models', </span></span><span> <span>'app/src', </span></span><span> <span>'app/start', </span></span><span> <span>'app/tests', </span></span><span> <span>'app/views', </span></span><span> <span>'app/filters.php', </span></span><span> <span>'app/routes.php', </span></span><span> <span>'bootstrap', </span></span><span> <span>'public', </span></span><span> <span>'composer.json', </span></span><span> <span>'composer.lock', </span></span><span> <span>'artisan', </span></span><span> <span>'.env', </span></span><span><span>]); </span></span><span> </span><span><span>set('shared_dirs', [ </span></span><span> <span>'app/storage/cache', </span></span><span> <span>'app/storage/logs', </span></span><span> <span>'app/storage/meta', </span></span><span> <span>'app/storage/sessions', </span></span><span> <span>'app/storage/views', </span></span><span><span>]); </span></span><span><span>set('writable_dirs', get('shared_dirs')); </span></span><span><span>set('http_user', 'www-data'); </span></span><span> </span><span><span>server('digitalocean', '174.138.78.215') </span></span><span> <span>->identityFile() </span></span><span> <span>->user('root') </span></span><span> <span>->stage('staging'); </span></span><span> </span><span><span>task('deploy:upload', function() { </span></span><span> <span>$files = get('copy_dirs'); </span></span><span> <span>$releasePath = env('release_path'); </span></span><span> </span><span> <span>foreach ($files as $file) </span></span><span> <span>{ </span></span><span> <span>upload($file, "<span><span>{$releasePath}</span>/<span>{$file}</span>"</span>); </span></span><span> <span>} </span></span><span><span>}); </span></span><span> </span><span><span>task('deploy:staging', [ </span></span><span> <span>'deploy:prepare', </span></span><span> <span>'deploy:release', </span></span><span> <span>'deploy:upload', </span></span><span> <span>'deploy:shared', </span></span><span> <span>'deploy:writable', </span></span><span> <span>'deploy:symlink', </span></span><span> <span>'deploy:vendors', </span></span><span> <span>'current',// print current release number </span></span><span><span>])->desc('Deploy application to staging.'); </span></span><span> </span><span><span>after('deploy:staging', 'success'); </span></span>
Nota: Satu lagi helah kemas yang disediakan semaphoreci adalah sshing ke pelayan binaan untuk melihat apa yang salah.
Alat Penyebaran Lain
Proses yang sama yang kami gunakan di sini boleh digunakan untuk mana -mana alat penempatan lain. Sebagai contoh, Laravel Envoy mungkin dikonfigurasikan seperti ini:
Dan dalam langkah perintah penempatan, kami akan memasang dan menjalankan utusan:
Itu sahaja! INSTIVE kini akan mengesahkan dengan kunci yang telah kami tambahkan dan jalankan arahan kemas kini yang kami tentukan.
Kesimpulan
// Edit something <span>git add . </span><span>git commit -am "Updated deploy" </span><span>git push origin master </span>
alat CI/CD adalah peningkatan yang hebat untuk aliran kerja pemaju, dan pastinya membantu pasukan mengintegrasikan kod baru ke dalam sistem pengeluaran. Semaphoreci adalah pilihan yang hebat yang saya cadangkan untuk mudah digunakan antara muka dan sokongan yang indah. Sekiranya anda mempunyai komen atau pertanyaan, sila hantarkannya di bawah!
Soalan Lazim (Soalan Lazim) di Envoy Laravel, Deployer dan Semaphoreci
Bagaimanakah saya dapat mengintegrasikan Envoy Laravel dengan semaphoreci untuk integrasi berterusan? Pertama, anda perlu menyediakan projek Laravel anda di Semaphoreci. Selepas itu, anda perlu memasang Envoy dalam projek anda menggunakan komposer. Setelah dipasang, anda boleh membuat fail envoy.blade.php dalam direktori root projek anda. Fail ini akan mengandungi semua tugas yang anda mahu mengautomasikan. Kemudian, anda boleh menambah arahan baru dalam saluran paip semaphoreci anda untuk menjalankan tugas -tugas utusan. Perintah ini akan kelihatan seperti ini: vendor/bin/envoy run deploy. , berfungsi dan sesuai untuk aplikasi PHP seperti Laravel. Ia menyediakan sokongan keluar kotak untuk Laravel, yang bermaksud anda tidak perlu menulis skrip tersuai untuk menggunakan aplikasi Laravel anda. Deployer menjaga semua tugas penempatan, seperti menarik kod terkini dari repositori anda, memasang komposer, migrasi, dan memulakan semula PHP-FPM. Ia juga menyokong penyebaran sifar-sifar, penyebaran atom, dan penyebaran selari, yang dapat mengurangkan masa penggunaan anda dengan ketara. Gitlab CI/CD dengan Laravel dan Envoy, anda perlu membuat fail .gitlab-ci.yml dalam direktori root projek anda. Fail ini akan menentukan peringkat saluran paip CI/CD anda. Anda boleh menentukan peringkat untuk menguji permohonan anda, peringkat untuk membina aplikasi anda, dan pentas untuk menggunakan aplikasi anda. Dalam peringkat penyebaran, anda boleh menggunakan utusan untuk mengautomasikan tugas penempatan. Anda hanya perlu menambah skrip dalam fail .gitlab-ci.yml anda untuk menjalankan tugas-tugas utusan, seperti ini: skrip: vendor php/bin/engsel run deploy /CD?
Mengkonfigurasi Laravel untuk CI/CD melibatkan menubuhkan persekitaran ujian anda, menulis ujian untuk permohonan anda, menyediakan proses binaan anda, dan menubuhkan proses penempatan anda. Anda boleh menggunakan PHPUnit untuk ujian, komposer untuk menguruskan kebergantungan, dan alat seperti Envoy Laravel atau Deployer untuk mengautomasikan tugas penempatan. Anda juga perlu memilih platform CI/CD, seperti Semaphoreci atau Gitlab CI/CD, dan konfigurasikannya untuk menjalankan ujian anda, membina aplikasi anda, dan menggunakan aplikasi anda.
Bagaimanakah saya boleh menggunakan aplikasi Laravel dengan CI/CD dan Envoy? Pada peringkat ini, anda boleh menggunakan utusan untuk mengautomasikan tugas penempatan. Anda hanya perlu membuat fail envoy.blade.php dalam direktori root projek anda dan tentukan tugas anda dalam fail ini. Kemudian, anda boleh menambah arahan dalam saluran paip CI/CD anda untuk menjalankan tugas -tugas utusan. Perintah ini akan kelihatan seperti ini: vendor/bin/envoy run yang digunakan. Proses ujian dan menggunakan aplikasi Laravel anda. Anda boleh menyediakan saluran paip di Semaphoreci untuk menjalankan ujian anda, membina aplikasi anda, dan menggunakan aplikasi anda. Semaphoreci menyokong pelbagai bahasa dan kerangka, termasuk PHP dan Laravel, dan ia mengintegrasikan dengan banyak alat popular, seperti Envoy dan Deployer Laravel. Envoy Laravel membolehkan anda menentukan tugas dalam sintaks bilah dan menjalankannya di pelayan jauh anda. Untuk menggunakan Envoy untuk penempatan, anda perlu memasangnya dalam projek anda menggunakan komposer. Kemudian, anda boleh membuat fail envoy.blade.php dalam direktori root projek anda dan tentukan tugas penempatan anda dalam fail ini. Sebaik sahaja tugas anda ditakrifkan, anda boleh menjalankannya menggunakan perintah run duta.
Bagaimana saya boleh menggunakan penyebaran untuk penyebaran Laravel? -Kop Kotak untuk Laravel. Untuk menggunakan Deployer untuk penggunaan Laravel, anda perlu memasangnya dalam projek anda menggunakan komposer. Kemudian, anda boleh membuat fail Deploy.php dalam direktori root projek anda dan tentukan tugas penempatan anda dalam fail ini. Sebaik sahaja tugas anda ditakrifkan, anda boleh menjalankannya menggunakan perintah DEP yang digunakan. mempunyai beberapa perbezaan. Envoy menggunakan sintaks bilah untuk menentukan tugas, sementara Deployer menggunakan sintaks PHP. Envoy lebih spesifik Laravel, sementara Deployer memberikan sokongan untuk banyak rangka kerja yang berbeza. Envoy lebih mudah dan mudah digunakan, tetapi Deployer menawarkan ciri-ciri yang lebih canggih, seperti penyebaran sifar-downtime, penyebaran atom, dan penyebaran selari.
Ya, anda boleh menggunakan kedua -dua Envoy dan Deployer Laravel dalam projek yang sama. Walau bagaimanapun, biasanya tidak perlu menggunakan kedua -dua alat, kerana mereka berfungsi dengan tujuan yang sama. Anda boleh memilih yang paling sesuai dengan keperluan anda. Jika anda lebih suka alat yang lebih mudah dengan sintaks bilah, anda boleh memilih utusan. Jika anda lebih suka alat yang lebih maju dengan sokongan untuk pelbagai rangka kerja yang berbeza, anda boleh memilih Deployer.Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

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

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech
