Episode 32 membangun CI/CD untuk GraphQL: pipeline dengan GitHub Actions, automated testing, schema checks untuk memblokir breaking change, deployment automation dengan blue-green dan canary, code quality gates, hingga release management dengan semantic versioning.

CI/CD mengubah deployment dari acara menegangkan menjadi rutinitas otomatis. Episode 32 membangun pipeline Continuous Integration dan Continuous Deployment khusus untuk project GraphQL — dengan semua gate yang mencegah kesalahan masuk ke production.
Kita akan menyusun pipeline GitHub Actions, menjalankan automated testing, menerapkan schema checks untuk memblokir breaking change, mengotomasi deployment dengan blue-green dan canary, serta mengelola release dengan semantic versioning.
GitHub Actions menjalankan job pada setiap push atau pull request:
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- run: bun install --frozen-lockfile
- run: bun run lint
- run: bun run typecheck
- run: bun run test
- run: bun run buildAlternatif yang setara: GitLab CI dengan .gitlab-ci.yml, CircleCI, atau Jenkins — semuanya mengikuti pola yang sama: checkout, install, lint, test, build.
Jalankan seluruh piramida testing (episode 21) di CI: unit test, integration test dengan database in-memory, dan E2E test untuk alur kritis. Tambahkan juga coverage threshold agar kualitas tidak menurun diam-diam. Untuk project GraphQL, sertakan pula testing schema.
Perubahan schema yang merusak client adalah bug paling berbahaya — karena tidak akan terdeteksi test aplikasi biasa. Solusinya: schema check di CI:
- name: Check schema changes
env:
APOLLO_KEY: ${{ secrets.APOLLO_KEY }}
run: npx rover graph check kalian@current --schema schema.graphqlrover graph check membandingkan schema cabang dengan schema production dan memblokir perubahan yang breaking. Alternatif: GraphQL Inspector di CI:
- name: Schema diff
run: |
npx @graphql-inspector/cli diff \
schema/current.graphql schema/branch.graphqlDengan schema check otomatis, setiap PR yang mengubah schema wajib melewati review breaking change — mencegah kejutan bagi client di production.
Deployment otomatis perlu strategi yang aman:
deploy:
needs: [build, schema-check]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: bun install --frozen-lockfile
- run: bun run build
- name: Deploy ke staging
run: npx vercel deploy --prebuilt --token ${{ secrets.VERCEL_TOKEN }}Staging selalu di-deploy otomatis; production memerlukan persetujuan manual atau metrik canary yang hijau.
Pipeline CI sebaiknya memblokir kode yang tidak memenuhi standar:
--noEmit.npm audit dan Snyk.- run: bun run lint
- run: bun run typecheck
- run: npm audit --audit-level=high
- run: bun run test -- --coverageUntuk rilis yang rapi, terapkan semantic versioning (major.minor.patch) dan jaga changelog otomatis:
npx semantic-releaseAlat seperti semantic-release membaca conventional commits (episode 46) dan otomatis: menentukan versi, membuat changelog, menandai tag, dan memicu deploy. Ini membuat riwayat rilis konsisten dan dapat diaudit — penting saat user kalian bergantung pada perilaku API.
Inti yang harus dibawa pulang:
Di episode 33 selanjutnya kalian akan mempelajari GraphQL Gateway dan API Management — arsitektur gateway, Kong Gateway dengan plugins, AWS AppSync sebagai managed service, Hasura untuk instant GraphQL dari database, dan manajemen API dengan API keys serta developer portal. API kalian siap dikelola skala enterprise!