- Set up to use App Store Connect API authentication
- Created development and distribution certificates
- Configured certificates repository on
mainbranch - Successfully tested certificate generation and synchronization
- Modified
ios-rapid-loop.ymlto use Match - Modified
ios-release-loop.ymlto use Match - Created
regenerate-certificates.ymlfor monthly certificate renewal - Created
regenerate-certs-now.ymlfor on-demand certificate regeneration - Removed manual certificate/profile handling
- Created reusable
sync-matchaction for certificate synchronization - Fixed Ruby version compatibility in CI cache
- Configured proper environment variables for API authentication
- Created
.env.examplewith configuration - Created GitHub secrets setup documentation
- Updated Matchfile for CI compatibility
The following secrets have been successfully configured:
- APP_STORE_CONNECT_API_KEY - The private key content (base64 encoded)
- APP_STORE_CONNECT_API_KEY_ID -
V9NW6ZGUK3 - APP_STORE_CONNECT_API_KEY_ISSUER_ID -
c195f569-ff16-40fa-aaff-4fe94e8139ad - MATCH_PASSWORD - Match encryption password (special characters removed)
- MATCH_GIT_URL -
https://github.com/JovieInc/certificates.git - MATCH_GIT_BASIC_AUTHORIZATION - Base64 encoded auth header
- MATCH_GIT_BRANCH -
main - APPLE_TEAM_ID -
G24T327LXT
- CI uses App Store Connect API for authentication (no 2FA issues)
- Match downloads certificates from the git repository
- Match decrypts them using MATCH_PASSWORD
- Certificates are installed in the CI keychain
- Build proceeds with proper signing
The Match setup has been successfully tested on CI:
- Certificates properly sync and decrypt
- Provisioning profiles are correctly installed
- Build workflow can access signing identities
- Certificate regeneration workflow tested and functional
- Certificates are automatically regenerated on the 1st of each month
- Workflow:
.github/workflows/regenerate-certificates.yml
- Trigger manually via GitHub Actions UI
- Workflow:
.github/workflows/regenerate-certs-now.yml - Steps: Nuke existing → Clean repository → Regenerate → Verify
- API key authentication (more secure than username/password)
- No 2FA prompts or session expiration issues
- Certificates encrypted with AES-256 in git repository
- Match password should be kept secure
- All sensitive data stored in GitHub secrets