Skip to content

ci: split build per-arch ke native runner arm64 + merge manifest - #18

Merged
anwareset merged 1 commit into
mainfrom
chore/build-native-arm64
Aug 29, 2026
Merged

ci: split build per-arch ke native runner arm64 + merge manifest#18
anwareset merged 1 commit into
mainfrom
chore/build-native-arm64

Conversation

@anwareset

Copy link
Copy Markdown
Owner

Ringkasan

Percepat Build and push dari ~42s → estimasi ~25-30s dengan membangun arm64 di native arm64 runner (tanpa emulasi QEMU).

Data pendukung (dari run 0.1.0 & 0.1.1)

Komponen Durasi Catatan
pnpm install arm64 16.7–18.9s 🔴 Emulasi QEMU di runner amd64
pnpm install amd64 3.2–3.5s ✅ Native
Push ke GHCR ~12s Biaya tetap
Export image ~8s Biaya tetap

45% waktu build (19s) = pnpm install arm64 yang di-emulasikan (~5× lebih lambat dari native).

Repo ini publicubuntu-24.04-arm (arm64, 4 CPU, 16GB) tersedia gratis & unlimited (dikonfirmasi di docs GitHub-hosted runners).

Perubahan: split 4 job

validate (ubuntu-latest)
  ├─ SemVer valid + package.json cocok + tag belum ada (gate)
  ├─ build-amd64 (ubuntu-latest, native)        → push :0.1.1-amd64, :sha-*-amd64
  └─ build-arm64 (ubuntu-24.04-arm, native)     → push :0.1.1-arm64, :sha-*-arm64
       └─ merge (ubuntu-latest)                 → imagetools create :0.1.1 + :sha-<long>
  • QEMU dihapus total — tiap arch build di native runner-nya
  • Build amd64 ∥ arm64 paralel (sebelumnya serial dalam 1 job multi-arch)
  • Tag release final tidak berubah (:0.1.1 + :sha-<long>) — arcane-deploy.yml tetap kompatibel
  • Cache gha diberi scope per-arch agar dua job tidak bentrok menulis cache

Estimasi

  • Build and push: ~42s → ~25-30s (emulasi 19s hilang + paralel)
  • Total job release: ~68s → ~50s

Verifikasi

  • Perubahan 1 file: .github/workflows/docker-build.yml
  • Struktur 4 job + dependensi needs: benar
  • Pengukuran aktual perlu tag release berikutnya (0.1.2+)

Build and push sebelumnya 42s, di mana ~19s (45%) adalah pnpm install
arm64 yang di-emulasikan via QEMU di runner amd64 (native hanya 3.5s).
Repo public → ubuntu-24.04-arm (arm64, 4 CPU) gratis & unlimited.

Struktur baru (4 job):
- validate: validasi SemVer + package.json + reject tag duplikat (gate)
- build-amd64: ubuntu-latest native, push tag 0.1.1-amd64 + sha-*-amd64
- build-arm64: ubuntu-24.04-arm native (tanpa QEMU), push 0.1.1-arm64
- merge: docker buildx imagetools create → manifest multi-arch 0.1.1
  + sha-<long> (tag release final tidak berubah untuk arcane-deploy)

Cache gha diberi scope per-arch (amd64/arm64) agar tidak bentrok.
@vercel

vercel Bot commented Aug 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
toskd Ready Ready Preview Aug 29, 2026 4:03am

@anwareset
anwareset merged commit 3dddaf4 into main Aug 29, 2026
3 checks passed
@anwareset
anwareset deleted the chore/build-native-arm64 branch August 29, 2026 04:06
anwareset added a commit that referenced this pull request Aug 29, 2026
Membuka rilis 0.1.2 untuk mengukur efektivitas build arm64 native
(PR #18) pada pipeline release pararel per-arch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant