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
-
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.
-
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
Aliran Penerapan Alam Sekitar
-
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.
-
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
-
Struktur Bendera:
- Simpan bendera ciri dalam fail konfigurasi (cth., config/feature-flags.json):
{
"feature_xyz": false,
"feature_abc": true
}
Salin selepas log masuk
-
Contoh Belakang:
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
-
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
-
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
-
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.
-
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
-
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.
-
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
-
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.
-
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:
-
Penghalaan Berasaskan Pengepala:
- QA menambahkan pengepala tersuai (cth., X-QA-Test: true) pada permintaan mereka.
- Nginx mengarahkan permintaan ini ke versi baharu untuk ujian.
-
Penghalaan Berasaskan IP:
- Hadkan trafik ke versi baharu berdasarkan alamat IP QA.
-
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!