Kenapa manual doang
Semua pipeline di sini dideklarasikan sebagaiworkflow_dispatch, event workflow yang di-trigger manual punya GitHub. Mereka gak pernah jalan pas push dan gak pernah dijadwalin. Alasannya keamanan biaya: action yang menarik (apply, up, destroy) bikin order beneran di akun Biznet GIO beneran, jadi mereka gak boleh ke-trigger gara-gara commit. destroy yang ke-trigger dari push itu resep insiden; pilihan manual dari tab Actions itu resep gladi resik.
Action default di tiap workflow itu yang aman: validate buat Terraform, build buat Pulumi. Dua-duanya gak butuh credential sama sekali.
Pipeline Terraform
File lengkapnya ada di ci.yml di biznetgio-example-terraform. Dari atas ke bawah:- Trigger dan input. Dua dropdown pilihan:
example(satu folder, atauall) danaction(validate,plan,apply,destroy). File workflow itu sendiri dokumentasinya; deskripsi tiap input ngejelasin mana yang butuh credential dan mana yang bikin order beneran. - Permissions.
contents: read, minimum yang dibutuhin checkout. Workflow-nya gak bisa nulis ke repo. - Job
discover. Ngubah pilihanalljadi daftar konkret dari enam folder dan nge-publish sebagai job output, yang jadi matrix di job berikutnya. Ini script shell kecil, karena matrix GitHub harus berupa daftar konkret. - Job
run. Matrix di atas folder yang dipilih denganfail-fast: false, biar satu contoh yang rusak gak ngebatalin yang lain. Steps:actions/checkout@v4ngambil kodenya.hashicorp/setup-terraform@v3nginstall Terraform.terraform fmt -checkbikin job gagal kalau ada file yang formatnya gak kanonik. Ini gerbang formatting dari Conventions.terraform initdownload provider yang di-pin dari registry.terraform validatenge-type-check seluruh folder tanpa credential atau panggilan API.terraform plancuma jalan pas action-nyaplan,apply, ataudestroy, dengan secretBIZNETGIO_API_KEYdan console password yang di-expose sebagai environment variableTF_VAR_console_password. Buatdestroydia plan dengan-destroy.terraform apply -auto-approveatauterraform destroy -auto-approvecuma jalan pas dipilih secara eksplisit.
BIZNETGIO_API_KEY buat action mana pun di luar validate, dan EXAMPLE_CONSOLE_PASSWORD (di-map ke TF_VAR_console_password, konvensi Terraform buat set variabel dari environment) buat folder yang butuh console password.
Pipeline Pulumi
File lengkapnya di ci.yml di biznetgio-example-pulumi. Filosofi yang sama, cuma satu dimensi lagi:- Trigger dan input. Tiga dropdown:
language,example, danaction(build,preview,up,destroy). - Job
discover. Nge-cross-product bahasa dan contoh yang dipilih jadi matrix pasangan{language, example}pakaijq -nc. Ini trik ekspansiallyang sama kayak workflow Terraform, tapi karena cross product,allkaliallmelebar jadi 36 job. - Job
run. Matrix di atas pasangan-pasangan itu,fail-fast: false, dengan working directory diset ke<language>/<example>. Steps:actions/checkout@v4.- Toolchain dan build per bahasa, di-gate dengan
if:pada bahasa:setup-node@v4dengan Node 20 plusnpm install && npx tsc --noEmitbuat TypeScript;setup-python@v5dengan Python 3.11 pluspip install -r requirements.txt;setup-go@v5di-pin ke1.25.xplusgo build ./...;setup-dotnet@v4dengan .NET 8 plusdotnet build;setup-java@v4dengan Temurin 17 plusmvn -q compile; dan parse YAML satu baris buat bahasayaml. pulumi/actions@v7jalanin command yang dipilih (preview,up, ataudestroy) ke stackdevdi folder contoh, cuma pas action-nya bukanbuild. Dia butuhPULUMI_ACCESS_TOKEN(auth Pulumi Cloud) danBIZNETGIO_API_KEY(provider baca dari environment).
1.25.x ada karena go.mod Go SDK butuh toolchain yang terbaru; komen di workflow bilang buat jaga tetap sinkron sama repo provider. Kalau lu naikin Go di contoh, naikin juga di situ.
Nambahin contoh atau bahasa baru
Daftar matrix di-hardcode di file workflow, jadi nge-extend matrix artinya ngubah workflow di PR yang sama dengan folder barunya:
Dua workflow itu YAML biasa yang ngikutin sintaks workflow GitHub Actions. Pattern job
discover (hitung matrix di satu job, konsumsi di job berikutnya lewat fromJson) adalah resep dynamic matrix resmi dari dokumentasi Actions.
Pipeline situs docs
Beda dari dua repo contoh,.github/workflows/ci.yml repo docs bukan manual-dispatch doang - dia jalan otomatis tiap push ke main dan tiap pull request, soalnya gak ada apa-apa yang destruktif buat digate di sini, cuma build check:
mint validate nangkep docs.json yang rusak atau halaman yang gak bisa dibuild Mintlify; mint broken-links nangkep link atau anchor internal yang gak resolve, persis jenis bug yang rawan muncul di docs site penuh cross-reference kayak ini. Kedua step itu gak deploy apapun - deployment itu terpisah dan ditangani sama GitHub app Mintlify, yang build dan publish ke biznetgio.creations.ren setiap ada commit yang landing di main, ke-track di deployments repo. Jalanin mint validate dan mint broken-links lokal dulu sebelum buka PR - liat Local setup - biar CI itu konfirmasi, bukan pertama kalinya lu tau ada yang rusak. Kalau deploy pernah keliatan basi, halaman riwayat deployment nunjukin commit hash dari situs yang lagi live.