cari
Rumahhujung hadapan webtutorial jsProses Keluaran Diperkemas untuk Aplikasi Web: Pembangunan Berasaskan Batang dengan Bendera Ciri

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
     }
    
  • Gunakan pembolehubah persekitaran untuk mengawal bendera semasa masa jalan:

     FEATURE_XYZ=true FEATURE_ABC=false npm start
    
  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.');
     }
    
  2. Contoh Depan:

    • Gunakan bendera untuk memaparkan komponen UI secara bersyarat:
     if (process.env.REACT_APP_FEATURE_XYZ === 'true') {
         render(<newfeaturecomponent></newfeaturecomponent>);
     } else {
         render(<oldfeaturecomponent></oldfeaturecomponent>);
     }
    
  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
    
  • 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;
             }
         }
     }
    
  • 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
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
Python dan javascript: memahami kekuatan masing -masingPython dan javascript: memahami kekuatan masing -masingMay 06, 2025 am 12:15 AM

Python dan JavaScript masing -masing mempunyai kelebihan mereka sendiri, dan pilihan bergantung kepada keperluan projek dan keutamaan peribadi. 1. Python mudah dipelajari, dengan sintaks ringkas, sesuai untuk sains data dan pembangunan back-end, tetapi mempunyai kelajuan pelaksanaan yang perlahan. 2. JavaScript berada di mana-mana dalam pembangunan front-end dan mempunyai keupayaan pengaturcaraan tak segerak yang kuat. Node.js menjadikannya sesuai untuk pembangunan penuh, tetapi sintaks mungkin rumit dan rawan kesilapan.

Inti JavaScript: Adakah ia dibina di atas C atau C?Inti JavaScript: Adakah ia dibina di atas C atau C?May 05, 2025 am 12:07 AM

Javascriptisnotbuiltoncorc; it'saninterpretedlanguagethatrunsonenginesoftenwritteninc .1) javascriptwasdesignedasalightweight, interpratedlanguageforwebbrowsers.2)

Aplikasi JavaScript: Dari Front-End ke Back-EndAplikasi JavaScript: Dari Front-End ke Back-EndMay 04, 2025 am 12:12 AM

JavaScript boleh digunakan untuk pembangunan front-end dan back-end. Bahagian depan meningkatkan pengalaman pengguna melalui operasi DOM, dan back-end mengendalikan tugas pelayan melalui Node.js. 1. Contoh front-end: Tukar kandungan teks laman web. 2. Contoh backend: Buat pelayan Node.js.

Python vs JavaScript: Bahasa mana yang harus anda pelajari?Python vs JavaScript: Bahasa mana yang harus anda pelajari?May 03, 2025 am 12:10 AM

Memilih Python atau JavaScript harus berdasarkan perkembangan kerjaya, keluk pembelajaran dan ekosistem: 1) Pembangunan Kerjaya: Python sesuai untuk sains data dan pembangunan back-end, sementara JavaScript sesuai untuk pembangunan depan dan penuh. 2) Kurva Pembelajaran: Sintaks Python adalah ringkas dan sesuai untuk pemula; Sintaks JavaScript adalah fleksibel. 3) Ekosistem: Python mempunyai perpustakaan pengkomputeran saintifik yang kaya, dan JavaScript mempunyai rangka kerja front-end yang kuat.

Rangka Kerja JavaScript: Menguasai Pembangunan Web ModenRangka Kerja JavaScript: Menguasai Pembangunan Web ModenMay 02, 2025 am 12:04 AM

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.

Hubungan antara JavaScript, C, dan penyemak imbasHubungan antara JavaScript, C, dan penyemak imbasMay 01, 2025 am 12:06 AM

Pengenalan Saya tahu anda mungkin merasa pelik, apa sebenarnya yang perlu dilakukan oleh JavaScript, C dan penyemak imbas? Mereka seolah -olah tidak berkaitan, tetapi sebenarnya, mereka memainkan peranan yang sangat penting dalam pembangunan web moden. Hari ini kita akan membincangkan hubungan rapat antara ketiga -tiga ini. Melalui artikel ini, anda akan mempelajari bagaimana JavaScript berjalan dalam penyemak imbas, peranan C dalam enjin pelayar, dan bagaimana mereka bekerjasama untuk memacu rendering dan interaksi laman web. Kita semua tahu hubungan antara JavaScript dan penyemak imbas. JavaScript adalah bahasa utama pembangunan front-end. Ia berjalan secara langsung di penyemak imbas, menjadikan laman web jelas dan menarik. Adakah anda pernah tertanya -tanya mengapa Javascr

Aliran node.js dengan typescriptAliran node.js dengan typescriptApr 30, 2025 am 08:22 AM

Node.js cemerlang pada I/O yang cekap, sebahagian besarnya terima kasih kepada aliran. Aliran memproses data secara berperingkat, mengelakkan beban memori-ideal untuk fail besar, tugas rangkaian, dan aplikasi masa nyata. Menggabungkan sungai dengan keselamatan jenis typescript mencipta powe

Python vs JavaScript: Pertimbangan Prestasi dan KecekapanPython vs JavaScript: Pertimbangan Prestasi dan KecekapanApr 30, 2025 am 12:08 AM

Perbezaan prestasi dan kecekapan antara Python dan JavaScript terutamanya dicerminkan dalam: 1) sebagai bahasa yang ditafsirkan, Python berjalan perlahan tetapi mempunyai kecekapan pembangunan yang tinggi dan sesuai untuk pembangunan prototaip pesat; 2) JavaScript adalah terhad kepada benang tunggal dalam penyemak imbas, tetapi I/O multi-threading dan asynchronous boleh digunakan untuk meningkatkan prestasi dalam node.js, dan kedua-duanya mempunyai kelebihan dalam projek sebenar.

See all articles

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!

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular