# TestFlight Release CI Gitea Actions publishes iOS releases from tags that match: ```sh release/vN.N.N ``` For example: ```sh git tag release/v1.10.0 git push origin release/v1.10.0 ``` The release job runs on the `xcode` runner label, imports the signing p12 with `Apple-Actions/import-codesign-certs`, builds and uploads the app with fastlane, then creates or updates the matching Gitea release with the generated IPA as an asset. The job deletes the temporary signing keychain in an `always()` cleanup step. Required repository secrets: ```text APPSTORE_CERTIFICATES_FILE_BASE64 APPSTORE_CERTIFICATES_PASSWORD FASTLANE_USER FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD ``` The workflow uses Gitea's built-in `GITEA_TOKEN` for release creation and asset upload, with `contents: write` permissions. In Gitea this covers release asset publication.