Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci?

Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci?

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2025-02-10 15:08:30
asal
242 orang telah melayarinya

Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci?

Takeaways Key

Artikel ini dikaji semula oleh Wern Ancheta dan Viraj Khatavkar. Terima kasih kepada semua pengulas rakan sebaya SitePoint untuk membuat kandungan SitePoint yang terbaik boleh!

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 Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci?

Kami akan menggunakan aplikasi 500px yang memuat foto dari pasaran. Ia dibina menggunakan Laravel dan anda boleh membaca artikel penuh mengenai proses bangunannya di sini, dan mencari repo di GitHub.

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>
Salin selepas log masuk
Salin selepas log masuk
Menyediakan penyebaran

Untuk mengkonfigurasi strategi penempatan, kita perlu pergi ke halaman projek dan klik disediakan penempatan.

Seterusnya, kami memilih pilihan penempatan generik, supaya semaphoreci memberi kita kebebasan untuk menambah konfigurasi manual.

Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci?

Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci? 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. Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci?

Jika kami memilih untuk menggunakan aplikasi menggunakan SSH, Semaphoreci memberi kami keupayaan untuk menyimpan kunci peribadi SSH kami di pelayan mereka dan menjadikannya tersedia dalam fasa penempatan.

Nota: Semaphoreci mengesyorkan bahawa kami membuat kunci SSH baru khusus untuk proses penempatan. Sekiranya seseorang mencuri kunci atau sesuatu, kita boleh membatalkannya dengan mudah. Kuncinya juga akan disulitkan sebelum menyimpannya pada akhirnya.

Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci? 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.

Jika ada yang salah, kita boleh mengklik pada proses penggunaan yang gagal dan melihat log untuk menyiasat masalah lagi.
<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>
Salin selepas log masuk
Salin selepas log masuk

Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci?

Tangkapan skrin di atas adalah komit yang gagal kerana arahan PHP Artisan Clear-Compiled mengembalikan kesilapan kerana lanjutan MCRYPT tidak diaktifkan.

Nota: Satu lagi helah kemas yang disediakan semaphoreci adalah sshing ke pelayan binaan untuk melihat apa yang salah.

Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci?

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:

Bagaimanakah saya boleh menggunakan Envoy Laravel atau Deployer dengan Semaphoreci? 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>
Salin selepas log masuk

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!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan