Episode ini membahas tooling modern untuk project Swift: manajemen Xcode project dan build settings, continuous integration dengan Xcode Cloud, GitHub Actions, dan Bitrise, code signing dengan provisioning profiles, serta Fastlane untuk otomasi build dan deployment.

Project yang sehat bukan hanya soal kode — tetapi juga tentang bagaimana kode dibangun, diuji, dan dirilis secara konsisten. Episode 18 membahas modern tooling dan build automation: mengelola Xcode project, membangun pipeline CI/CD dengan Xcode Cloud, GitHub Actions, dan Bitrise, menangani code signing, serta mengotomasi distribusi dengan Fastlane.
Build yang bisa dilakukan siapa pun, kapan pun, dengan hasil identik adalah fondasi release yang dapat dipercaya. Episode ini mengubah proses manual yang rapuh menjadi otomatisasi yang berulang.
Build settings Xcode adalah ratusan variabel yang mengontrol kompilasi. Yang paling sering diubah: SWIFT_VERSION, IPHONEOS_DEPLOYMENT_TARGET, dan PRODUCT_BUNDLE_IDENTIFIER. Manajemen modern memakai xcconfig — file konfigurasi teks yang versi-able, menggantikan pengaturan yang hanya bisa dilihat lewat GUI:
# Config/Release.xcconfig
SWIFT_VERSION = 6.0
IPHONEOS_DEPLOYMENT_TARGET = 16.0
PRODUCT_BUNDLE_IDENTIFIER = com.example.Aplikasi
CODE_SIGN_STYLE = AutomaticSWIFT_VERSION = 6.0 memilih versi bahasa — penting karena Swift 6 menegakkan concurrency. Memindahkan pengaturan ke xcconfig membuat perubahan build terdokumentasi dan bisa direview dalam pull request.
Segala sesuatu yang dilakukan Xcode GUI bisa dilakukan dari terminal lewat xcodebuild:
xcodebuild -project Aplikasi.xcodeproj \
-scheme Aplikasi \
-destination 'platform=iOS Simulator,name=iPhone 15' \
testxcodebuild ... -scheme Aplikasi ... test menjalankan build sekaligus test di simulator yang ditentukan. Perintah yang sama ini yang akan dijalankan pipeline CI — konsistensi antara build lokal dan build CI membuat debugging pipeline jauh lebih mudah.
Xcode Cloud adalah CI terintegrasi Apple: trigger pada branch dan tag, menjalankan test di simulator atau perangkat, lalu menandatangani dan mendistribusikan. Keunggulannya: integrasi penuh dengan App Store Connect dan TestFlight tanpa konfigurasi infrastruktur.
Untuk project open source dan server-side Swift, GitHub Actions adalah pilihan paling ringan. Workflow berjalan di runner Linux atau macOS:
name: iOS CI
on:
push:
branches: [main]
jobs:
build:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- run: xcodebuild test \
-scheme Aplikasi \
-destination 'platform=iOS Simulator,name=iPhone 15'runs-on: macos-14 menyediakan runner dengan Xcode. Workflow menjalankan xcodebuild test yang sama seperti lokal — satu set perintah untuk semua environment. Untuk package server-side, swift build dan swift test berjalan di ubuntu-latest.
Bitrise adalah CI/CD khusus mobile yang menyediakan step-step siap pakai: build IPA, upload ke TestFlight, sign cert otomasi, dan integrasi dengan App Store Connect. Ia berguna saat tim ingin pipeline mobile yang terdokumentasi tanpa menulis ulang workflow dari nol.
Code signing menandatangani binary dengan sertifikat Developer ID agar perangkat mempercayainya. Provisioning profile mengikat aplikasi ke perangkat atau akun tertentu dan berisi entitlements. Kombinasinya harus cocok: profile development untuk build dev, profile distribution untuk App Store dan ad-hoc.
Kesalahan signing adalah penyebab kegagalan build paling umum di CI. Otomasikan dengan mengelola certificate dan profile sebagai secret, dan gunakan signing otomatis Xcode dengan team ID untuk menghemat konfigurasi manual.
Build distribusi menandai konfigurasi Release dengan optimasi penuh:
xcodebuild archive \
-scheme Aplikasi \
-archivePath ./build/Aplikasi.xcarchive \
-configuration Releasexcodebuild archive -archivePath ... menghasilkan .xcarchive berisi aplikasi yang siap di-export. Dari sini, archive di-export ke format yang sesuai — .ipa untuk App Store atau ad-hoc — dan diunggah untuk distribusi (episode 20).
Fastlane adalah tool open source yang mengotomasi alur build, test, signing, dan upload. Definisi lane ditulis dalam Ruby Fastfile:
lane :beta do
match(type: "adhoc")
build_app(scheme: "Aplikasi")
upload_to_testflight
endlane :beta do ... end mendefinisikan alur bernama beta: mengambil signing via match, membangun aplikasi, lalu mengunggah ke TestFlight. Jalankan dengan bundle exec fastlane beta:
bundle exec fastlane betabundle exec fastlane beta mengeksekusi lane secara berurutan. Fastlane mendukung banyak platform dan menjadi standar de facto otomasi release iOS karena menggantikan puluhan langkah manual dengan satu perintah.
Tip
Mulai otomasi dari satu langkah yang paling sering dilakukan manual dan paling sering salah — biasanya code signing dan upload. Setelah pipeline pertama berjalan stabil, tambahkan test dan notifikasi.
Inti yang harus dibawa pulang:
xcodebuild memberi perintah CLI yang sama untuk lokal dan CI.xcodebuild archive menghasilkan artefak untuk release.Di episode 19 selanjutnya kita akan membahas cross-platform dan server-side Swift — penggunaan Swift di server dengan Vapor, Kitura, dan SwiftNIO, perbandingan use case dengan platform lain, package yang lintas platform, serta menjalankan Swift di Linux dan Docker. Swift akan keluar dari ekosistem Apple!