Rumah hujung hadapan web tutorial js Proses Keluaran Diperkemas untuk Aplikasi Web: Pembangunan Berasaskan Batang dengan Bendera Ciri

Proses Keluaran Diperkemas untuk Aplikasi Web: Pembangunan Berasaskan Batang dengan Bendera Ciri

Dec 23, 2024 pm 09:26 PM

Dalam artikel ini, kami akan menggariskan proses keluaran yang mantap dan cekap untuk aplikasi web, dibina di sekitar pembangunan berasaskan batang dan bendera ciri berasaskan persekitaran. Metodologi ini memastikan penyepaduan berterusan, ujian mudah dalam pengeluaran, dan laluan yang lancar dari pembangunan ke pelepasan sambil mengekalkan standard kualiti tinggi.


Prinsip Teras

  1. Pembangunan Berasaskan Batang:

    • Cawangan batang berfungsi sebagai sumber tunggal kebenaran untuk semua kerja pembangunan.
    • Pembangun membuat cawangan ciri (cth., feature/xyz) daripada trunk untuk ciri baharu atau tiket Jira.
    • Permintaan tarik (PR) diserahkan daripada cawangan ciri ini ke batang untuk semakan dan penggabungan selepas ujian berjaya.
  2. Bendera Ciri Berasaskan Alam Sekitar:

    • Bendera ciri digunakan untuk mengawal pengaktifan ciri merentas persekitaran.
    • Bendera disimpan dalam fail konfigurasi khusus persekitaran atau sebagai sebahagian daripada konfigurasi saluran paip CI/CD.
    • Dalam cawangan batang, semua bendera ciri ditetapkan kepada MATI secara lalai.
    • Bendera boleh ditogol HIDUP dalam persekitaran tertentu (cth., kotak pasir, pementasan atau pengeluaran) mengikut keperluan.

Versi JIRA dalam Sprint

Streamlined Release Process for a Web Application: Trunk-Based Development with Feature Flags


Aliran Penerapan Alam Sekitar

  1. Persekitaran Kotak Pasir atau Pementasan:

    • Untuk ujian QA dan penyepaduan, pasukan boleh membuat cawangan yang diawali dengan kotak pasir/ (cth., kotak pasir/xyz) daripada batang.
    • Cawangan ini digunakan untuk kotak pasir atau persekitaran pementasan khusus menggunakan saluran paip CI/CD.
    • Pasukan QA boleh mengesahkan ciri baharu dan ujian penyepaduan boleh memastikan keserasian.
    • Bendera ciri ditogol HIDUP dalam persekitaran ini untuk menguji ciri tertentu.
  2. Persediaan Keluaran Pengeluaran:

    • Untuk menyediakan keluaran, buat cawangan keluaran/xyz daripada batang.
    • Cawangan keluaran/xyz berfungsi sebagai calon keluaran dan pada mulanya digunakan untuk 5% daripada trafik pengeluaran untuk ujian beta.
    • Bendera ciri untuk ciri baharu ditogol HIDUP dalam cawangan ini untuk membolehkan ujian dalam pengeluaran.
    • Nginx atau pengimbang beban yang serupa boleh mengendalikan pemisahan trafik ini, memastikan hanya subset pengguna melihat perubahan.

Bendera Ciri: Contoh dan Penggunaan

  1. Struktur Bendera:

    • Simpan bendera ciri dalam fail konfigurasi (cth., config/feature-flags.json):
     {
       "feature_xyz": false,
       "feature_abc": true
     }
    
    Salin selepas log masuk
  • Gunakan pembolehubah persekitaran untuk mengawal bendera semasa masa jalan:

     FEATURE_XYZ=true FEATURE_ABC=false npm start
    
    Salin selepas log masuk
  1. Contoh Belakang:

    • Togol bendera dalam kod:
     const featureFlags = require('./config/feature-flags');
    
     if (featureFlags.feature_xyz) {
         console.log('Feature XYZ is enabled!');
     } else {
         console.log('Feature XYZ is disabled.');
     }
    
    Salin selepas log masuk
  2. Contoh Depan:

    • Gunakan bendera untuk memaparkan komponen UI secara bersyarat:
     if (process.env.REACT_APP_FEATURE_XYZ === 'true') {
         render(<NewFeatureComponent />);
     } else {
         render(<OldFeatureComponent />);
     }
    
    Salin selepas log masuk
  3. Menogol Bendera Semasa Pengujian:

    • Untuk menogol bendera untuk ujian, kemas kini konfigurasi atau pembolehubah persekitaran dan mulakan semula perkhidmatan yang berkaitan (bahagian hadapan atau bahagian belakang):
     FEATURE_XYZ=true npm start
    
    Salin selepas log masuk
  • Untuk saluran paip CI/CD, pastikan nilai bendera yang sesuai disuntik ke dalam persekitaran semasa penggunaan.

Ujian dalam Pengeluaran

  1. Penghalaan Trafik untuk Ujian Beta:

    • Gunakan konfigurasi Nginx untuk mengawal peruntukan trafik:
     http {
         upstream stable_backend {
             server stable_backend_1;
             server stable_backend_2;
         }
    
         upstream canary_backend {
             server canary_backend_1;
             server canary_backend_2;
         }
    
         upstream mixed_backend {
             server stable_backend_1 weight=45;
             server stable_backend_2 weight=45;
             server canary_backend_1 weight=5;
             server canary_backend_2 weight=5;
         }
    
         server {
             listen 80;
             server_name my-app.example.com;
    
             location / {
                 if ($http_x_qa_test = "true") {
                     proxy_pass http://canary_backend;
                     break;
                 }
    
                 proxy_pass http://mixed_backend;
             }
         }
     }
    
    Salin selepas log masuk
  • Hantar 5% trafik pengeluaran ke pelayan yang menjalankan versi baharu dengan melaraskan berat pengimbang beban.
  1. Ujian QA khusus dalam Pengeluaran:
    • Pasukan QA boleh melampirkan kuki tersuai (mis., qa-test=true) pada permintaan mereka.
    • Nginx menyemak kuki ini dan mengarahkan permintaan ini ke versi baharu 100% pada setiap masa, memastikan ujian disasarkan dalam pengeluaran.

Menstabilkan Pelepasan

  1. Membetulkan Isu:

    • Pembangun membetulkan sebarang isu yang dikenal pasti semasa ujian beta dengan membuka PR ke cawangan trunk.
    • Setelah digabungkan, pembaikan ini dipilih dengan ceri ke dalam cawangan keluaran/xyz.
  2. Memuktamadkan Keluaran:

    • Selepas semua isu diselesaikan dan cawangan stabil, cawangan keluaran ditandakan dengan versi semantik (cth., v1.2.0), mencetuskan penggunaan ke bahagian belakang yang stabil.
    • Nota keluaran dijana untuk dokumentasi dan dikongsi dengan pihak berkepentingan.

Proses Pembetulan Terkini

  1. Mewujudkan Cawangan Pembetulan Terkini:

    • Untuk pembetulan segera, buat cawangan hotfix/xyz terus daripada teg pengeluaran terkini.
    • Cawangan hotfix mengikut proses penstabilan dan penandaan yang sama seperti cawangan keluaran.
  2. Versi:

    • Pembetulan terkini meningkatkan versi tampung (cth., daripada v1.2.0 kepada v1.2.1) mengikut piawaian Penversian Semantik (SemVer).

Pembersihan Cawangan

  • Padamkan cawangan yang digabungkan secara rutin untuk mengelakkan kekacauan.
  • Alih keluar bendera ciri yang tidak digunakan secara berkala untuk mengekalkan organisasi.
  • Automasikan pemadaman cawangan selepas cantuman menggunakan Tindakan GitHub atau alatan yang serupa.

QA Alternatif dan Strategi Pengujian

Daripada kuki, strategi tambahan untuk menghala trafik QA dalam pengeluaran termasuk:

  1. Penghalaan Berasaskan Pengepala:

    • QA menambahkan pengepala tersuai (cth., X-QA-Test: true) pada permintaan mereka.
    • Nginx mengarahkan permintaan ini ke versi baharu untuk ujian.
  2. Penghalaan Berasaskan IP:

    • Hadkan trafik ke versi baharu berdasarkan alamat IP QA.
  3. Penghalaan Berasaskan Token Pengesahan:

    • QA log masuk dengan akaun ujian tertentu yang terikat pada peranan atau token yang memastikan permintaan dihalakan ke versi baharu.

Kesimpulan

Proses keluaran ini memanfaatkan pembangunan berasaskan batang dan bendera ciri berasaskan persekitaran untuk mencipta aliran kerja penggunaan berskala, boleh diuji dan selamat pengeluaran. Dengan menggunakan persekitaran kotak pasir, penghalaan lalu lintas dan strategi ujian khusus, pasukan boleh menyampaikan ciri berkualiti tinggi sambil meminimumkan risiko. Pendekatan ini memastikan bahawa isu ditangkap lebih awal dan ditangani dengan cekap, membuka jalan untuk pelancaran ciri dan pembaikan terkini yang lancar.

Atas ialah kandungan terperinci Proses Keluaran Diperkemas untuk Aplikasi Web: Pembangunan Berasaskan Batang dengan Bendera Ciri. 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1664
14
Tutorial PHP
1269
29
Tutorial C#
1249
24
Enjin JavaScript: Membandingkan Pelaksanaan Enjin JavaScript: Membandingkan Pelaksanaan Apr 13, 2025 am 12:05 AM

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Apr 14, 2025 am 12:05 AM

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

JavaScript dan Web: Fungsi teras dan kes penggunaan JavaScript dan Web: Fungsi teras dan kes penggunaan Apr 18, 2025 am 12:19 AM

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

JavaScript in Action: Contoh dan projek dunia nyata JavaScript in Action: Contoh dan projek dunia nyata Apr 19, 2025 am 12:13 AM

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Memahami Enjin JavaScript: Butiran Pelaksanaan Memahami Enjin JavaScript: Butiran Pelaksanaan Apr 17, 2025 am 12:05 AM

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Apr 15, 2025 am 12:16 AM

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Python vs JavaScript: Persekitaran dan Alat Pembangunan Python vs JavaScript: Persekitaran dan Alat Pembangunan Apr 26, 2025 am 12:09 AM

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

See all articles