# Guide Signed Build iOS AHSP

Guide ini melanjutkan workflow dasar:

- [`.github/workflows/ios-build.yml`](/d:/APP/LARAVEL_DEFAULT/AHSP/.github/workflows/ios-build.yml)

Workflow signed ada di:

- [`.github/workflows/ios-signed-build.yml`](/d:/APP/LARAVEL_DEFAULT/AHSP/.github/workflows/ios-signed-build.yml)

## Tujuan

Workflow signed dipakai saat:

- ingin menghasilkan `.ipa` yang sudah signed
- ingin siap untuk install ke device iPhone
- ingin naik ke distribusi internal / TestFlight tahap berikutnya

## Kondisi Project Saat Ini

Bundle ID iOS di project saat ini masih default:

```text
com.example.attendanceMobileClient
```

Saat build signed, workflow akan mengganti bundle ID itu memakai secret `IOS_BUNDLE_ID`.

## Secrets yang Wajib Disiapkan

Tambahkan di GitHub repository `Settings > Secrets and variables > Actions`:

1. `IOS_BUNDLE_ID`
   Contoh: `com.ahsp.attendance`

2. `IOS_KEYCHAIN_PASSWORD`
   Password sementara untuk keychain di runner macOS.

3. `IOS_CERTIFICATE_P12_BASE64`
   Isi file `.p12` signing certificate yang sudah di-encode base64.

4. `IOS_CERTIFICATE_PASSWORD`
   Password file `.p12`.

5. `IOS_PROVISIONING_PROFILE_BASE64`
   Isi file `.mobileprovision` yang sudah di-encode base64.

## Cara Encode File ke Base64

Di Windows PowerShell:

```powershell
[Convert]::ToBase64String([IO.File]::ReadAllBytes("D:\ios\dist-cert.p12")) | Set-Clipboard
[Convert]::ToBase64String([IO.File]::ReadAllBytes("D:\ios\profile.mobileprovision")) | Set-Clipboard
```

Hasil clipboard paste ke secret GitHub.

## Cara Menjalankan Workflow

1. Push branch yang berisi workflow baru.
2. Buka tab `Actions`.
3. Pilih `Build Signed iOS IPA AHSP`.
4. Klik `Run workflow`.
5. Isi:
   - `build_name`: misalnya `1.0.0`
   - `build_number`: misalnya `2`
   - `export_method`: pilih `app-store`, `ad-hoc`, atau `development`

## Output

Artifact yang dihasilkan:

- `ahsp-ios-signed-ipa`

Isi artifact:

- file `.ipa` signed dari aplikasi iOS

## Pilihan Export Method

- `app-store`
  Untuk jalur distribusi App Store / TestFlight

- `ad-hoc`
  Untuk distribusi terbatas ke device tertentu

- `development`
  Untuk testing internal development profile

## Catatan Aman

- Workflow signed ini belum otomatis upload ke TestFlight.
- Ini sengaja dibuat aman dulu: fokus menghasilkan `.ipa` signed.
- Setelah signed build stabil, tahap berikutnya bisa ditambah:
  - App Store Connect API key
  - upload otomatis ke TestFlight
  - lock versi iOS release per branch/tag

## Risiko yang Perlu Dicek

1. Bundle ID harus sama dengan provisioning profile.
2. Certificate harus cocok dengan profile.
3. Team Apple di profile harus valid.
4. Plugin Flutter iOS harus compatible saat build di macOS.

## Rekomendasi Langkah Berikutnya

Setelah workflow signed ini sukses, lanjutkan:

1. tambah workflow `release tag`
2. tambah upload otomatis ke TestFlight
3. bedakan `staging` dan `production` bundle ID bila perlu
