Peta dunia

 

EN: Read in English

Dunia C1: Cara Fikir Pipeline

Bina sekali, naikkan melalui persekitaran

Anda akan belajar: kenapa build yang staging uji ialah build yang production dapat.

Teks BM belum disemak oleh penutur asli.

Disemak dengan GitHub Actions 2026-10 pada 31 Okt 2026

Masalahnya

Staging jalan dengan sempurna. Kemudian production rosak. Kod yang sama! Apa yang berubah?

Pilih satu jawapan.

Tengok

Ketik setiap titik pada garis masa.

Ketik setiap tempat. Setiap tempat aplikasi anda berjalan ialah environment (persekitaran) (environment): Tempat bernama untuk deploy, contohnya production, dengan rahsia dan peraturan sendiri. (persekitaran).

Cuba

Masak sekali dan tutup pek. Pek bertutup itu ialah artifact (artifak) (artifact): Fail yang larian workflow simpan, supaya anda boleh muat turun kemudian. (artifak). Susun perjalanannya.

Langkah pertama di atas. Susun ikut turutan. Guna anak panah, atau seret.

  • Hantar artifact yang sama ke production
  • Semak staging
  • Deploy ke staging
  • Build dan tutup artifact

Tengok

Pilih satu event. Tekan Run dan tengok tali sawat.

Apa yang berlaku di GitHub

Fail workflow .github/workflows/promote.yml

name: Promote
on:
push:
branches: [main]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: npm ci && npm test && npm run build
- uses: actions/upload-artifact@v7
with:
name: site
path: dist
staging:
needs: build
runs-on: ubuntu-latest
environment: staging
steps:
- uses: actions/checkout@v7
- uses: actions/download-artifact@v8
with:
name: site
path: dist
- run: npx wrangler deploy --env staging
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
- run: curl --fail --silent https://staging.example.com/health
production:
needs: staging
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v7
- uses: actions/download-artifact@v8
with:
name: site
path: dist
- run: npx wrangler deploy
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

Tali sawat

Push ke main · main

Tekan Run. Build berlaku sekali sahaja. Staging dan production dapat pek yang sama. Memindahkan pek ke tempat seterusnya dipanggil promote: Pindahkan build yang sama, yang dah diuji, ke persekitaran seterusnya. Contohnya dari staging ke production. (naikkan).

Teka

Kenapa tak buat build baru khas untuk production?

Pilih satu jawapan.

Teka

Semakan kesihatan staging jumpa masalah.

Stesen mana akan hentikan tali sawat? Tekan stesen itu, kemudian Run.

Apa yang berlaku di GitHub

Fail workflow .github/workflows/promote.yml

name: Promote
on:
push:
branches: [main]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: npm ci && npm test && npm run build
- uses: actions/upload-artifact@v7
with:
name: site
path: dist
staging:
needs: build
runs-on: ubuntu-latest
environment: staging
steps:
- uses: actions/checkout@v7
- uses: actions/download-artifact@v8
with:
name: site
path: dist
- run: npx wrangler deploy --env staging
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
- run: curl --fail --silent https://staging.example.com/health
production:
needs: staging
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v7
- uses: actions/download-artifact@v8
with:
name: site
path: dist
- run: npx wrangler deploy
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

Tali sawat

Push ke main · main

Semak

Tabiat baik, atau perlu dibaiki? Leret setiap satu.

Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.

1 / 4

Build sekali, kemudian deploy artifact yang sama ke semua tempat

Build sekali, kemudian deploy artifact yang sama ke semua tempat

Anda berjaya!

Kini anda boleh build sekali dan promote artifact yang sama.

Nak tahu lebih (pilihan)

Alamat web dan kunci berbeza ikut tempat. Ia masuk semasa deploy. Dalam GitHub, environment: pada job pilih secret dan peraturan tempat itu. Image container buat ini senang: satu image, banyak tempat (Dunia C2).

Latihan sebenar (pilihan): cari di mana repo anda build. Ada job deploy yang build lagi? Hantar build itu dengan actions/upload-artifact dan actions/download-artifact.