EN: Read in English
Dunia C3: Lancar & Deploy · Cabaran bos
Jumaat malang
Anda akan belajar: hantar canary, kesan lonjakan ralat, dan rollback sebelum ramai pengguna perasan.
Teks BM belum disemak oleh penutur asli.
Disemak dengan GitHub Actions 2026-10 pada 31 Okt 2026
Masalahnya
Jumaat, 4:55 petang. Versi 2.3.0 kedai dah ditag. Ketua anda dalam kapal terbang, dan anda bertugas. Misi bos: hantar dengan selamat, atau undur dengan pantas. Macam mana anda hantar?
Pilih satu jawapan.
Cuba
Bilik 1: tag itu mulakan workflow canary. Ia hantar 5% pengguna ke versi 2.3.0, kemudian rasa /health. Run.
Pilih satu event. Tekan Run dan tengok tali sawat.
Tag v2.3.0 deploy canary kepada 5% pengguna, kemudian smoke test semak /health.
Fail workflow .github/workflows/canary.yml
name: Canary on: push: tags: ['v*'] permissions: contents: read jobs: canary: runs-on: ubuntu-latest environment: production steps: - uses: actions/checkout@v7 - run: npm ci - run: npm run deploy:canary env: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} - run: curl --fail --silent https://shop.example.com/health
Tali sawat
Push tag v2.3.0 · v2.3.0
Petunjuk
Pilih tag itu, kemudian tekan Run.Cuba
Bilik 2: canary dah live pada 5%. Perhati graf. Naik hanya bila garis versi 2 tenang. Rollback sebelum 150 pengguna kena bug.
Hantar sedikit pengguna ke v2. Tengok graf. Roll back jika ralat melonjak.
Pengguna sekarang: 100% di v1 (lama), 0% di v2 (baharu).
v1 (lama) v2 (baharu)
Minit 0
Pengguna yang kena ralat v2: 0 (had 150)
Nombor, minit demi minit
Belum ada trafik.
Petunjuk
Garis merah melonjak atas garis amaran? Tekan Roll back serta-merta.Semak
Smoke test lulus, tapi pengguna kena ralat. Kenapa?
Pilih satu jawapan.
Cuba
Bilik 3: kekalkan undur itu. Workflow rollback, yang dijalankan secara manual, jadi merah. Baca ralat sebenar. Baiki baris kuning.
Tali sawat merah. Betulkan baris kuning, kemudian run semula.
Fail workflow .github/workflows/rollback.yml
name: Rollback on: workflow_dispatch: permissions: contents: read jobs: rollback: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - run: npm ci - run: npx wrangler rollback --message "Bad Friday" env: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} - run: curl --fail --silent https://shop.example.com/health
Kuning: baris 8–8. Anda boleh ubah baris ini.
Tali sawat
Run secara manual · main
Petunjuk
Ingat pelajaran 7: secret hanya sampai kepada job yang sebut environment-nya.Semak
Tulis pelan untuk lain kali. Susun apa yang pipeline buat.
Langkah pertama di atas. Susun ikut turutan. Guna anak panah, atau seret.
- Tag hantar canary kepada 5% pengguna
- Smoke test rasa /health dan checkout
- Perhati kadar ralat selama 15 minit
- Satu makluman dibuka, dengan pautan ke larian
- Ralat melonjak: job rollback berjalan
Anda berjaya!
Kini anda boleh hantar pada hari Jumaat dan undur dalam beberapa minit.
Nak tahu lebih (pilihan)
Di Cloudflare, canary ialah gradual deployment. Arahan ini buatnya secara manual. Wrangler cetak id setiap versi bila anda muat naik.
Latihan sebenar (pilihan): berlatih pada Worker ujian percuma, bukan milik pasukan anda.
English
Friday, 4:55 pm. Version 2.3.0 of the shop is tagged. Your lead is on a plane, and you are on call. Boss mission: ship it safely, or undo it fast. How do you ship it?
Room 1: the tag starts the canary workflow. It sends 5% of users to version 2.3.0, then tastes /health. Run it.
Room 2: the canary is live at 5%. Watch the graph. Move up only while the version 2 line stays calm. Roll back before 150 users hit a bug.
The smoke test passed, yet users hit errors. Why?
Room 3: make the undo stick. The rollback workflow, run by hand, is red. Read the real error. Fix the yellow line.
Write the plan for next time. Put what the pipeline does in order.
You can now ship on a Friday and undo it in minutes.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Cloudflare: gradual deployments · Cloudflare: rollbacks · Deployments and environments
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?