{"id":15174039,"url":"https://github.com/rageagainstthepixel/unity-xcode-builder","last_synced_at":"2025-09-06T22:38:30.559Z","repository":{"id":253975104,"uuid":"844734278","full_name":"RageAgainstThePixel/unity-xcode-builder","owner":"RageAgainstThePixel","description":"A GitHub Action to build, archive, and upload Unity exported Xcode projects.","archived":false,"fork":false,"pushed_at":"2025-05-18T21:59:37.000Z","size":3377,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-18T22:43:32.384Z","etag":null,"topics":["action","app-store-connect","build-automation","game-ci","github","github-action","ios","macos","test-flight","unity","unity-3d","visionos","xcode","xcode-signing"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RageAgainstThePixel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"StephenHodgson","patreon":"RageAgainstThePixel"}},"created_at":"2024-08-19T21:37:47.000Z","updated_at":"2025-03-31T02:11:51.000Z","dependencies_parsed_at":"2024-10-19T02:28:21.551Z","dependency_job_id":"c9097cea-4eaf-4e01-a940-11c6541f7017","html_url":"https://github.com/RageAgainstThePixel/unity-xcode-builder","commit_stats":{"total_commits":6,"total_committers":1,"mean_commits":6.0,"dds":0.0,"last_synced_commit":"e84ed1a51761f74a1f278af44ce854f7360d06a7"},"previous_names":["rageagainstthepixel/unity-xcode-builder"],"tags_count":14,"template":false,"template_full_name":"RageAgainstThePixel/github-action-template","purl":"pkg:github/RageAgainstThePixel/unity-xcode-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RageAgainstThePixel%2Funity-xcode-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RageAgainstThePixel%2Funity-xcode-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RageAgainstThePixel%2Funity-xcode-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RageAgainstThePixel%2Funity-xcode-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RageAgainstThePixel","download_url":"https://codeload.github.com/RageAgainstThePixel/unity-xcode-builder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RageAgainstThePixel%2Funity-xcode-builder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273973976,"owners_count":25200579,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["action","app-store-connect","build-automation","game-ci","github","github-action","ios","macos","test-flight","unity","unity-3d","visionos","xcode","xcode-signing"],"created_at":"2024-09-27T11:23:17.835Z","updated_at":"2025-09-06T22:38:30.550Z","avatar_url":"https://github.com/RageAgainstThePixel.png","language":"TypeScript","readme":"# unity-xcode-builder\n\nA GitHub Action to take Unity exported Xcode projects and automate the process of building, signing, archiving, notarizing, and uploading to Apple App Store Connect or Steam.\n\n\u003e [!NOTE]\n\u003e Steam uploads require an additional action step: [`upload-steam`](https://github.com/RageAgainstThePixel/upload-steam)\n\n## How to use\n\n### workflow\n\nTo archive, export, and upload directly to Apple App Store Connect, use the following workflow configuration:\n\n```yaml\nsteps:\n  - uses: buildalon/unity-xcode-builder@v1\n    id: xcode-build\n    with:\n      project-path: '/path/to/your/build/output/directory'\n      app-store-connect-key: ${{ secrets.APP_STORE_CONNECT_KEY }}\n      app-store-connect-key-id: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}\n      app-store-connect-issuer-id: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}\n      team-id: ${{ secrets.APPLE_TEAM_ID }}\n\n  - run: |\n      echo ${{ steps.xcode-build.outputs.executable }}\n      ls -al ${{ steps.xcode-build.outputs.output-directory }}\n```\n\n### inputs\n\nThis action requires several secrets that need to be setup in the repository or organization's action secret store.\n\n- `APP_STORE_CONNECT_KEY`: The App Store Connect API AuthKey_*.p8 key encoded as base64 string.\n- `APP_STORE_CONNECT_KEY_ID`: The App Store Connect API key id.\n- `APP_STORE_CONNECT_ISSUER_ID`: The issuer ID of the App Store Connect API key.\n\n\u003e [!TIP]\n\u003e You can easily encode a file to base64 using the following command in linux, mac, or windows bash terminal:\n\u003e\n\u003e ```bash\n\u003e openssl base64 -in ./AuthKey_*.p8 -out ./AuthKey_*.txt\n\u003e ```\n\n| name | description | required |\n| ---- | ----------- | -------- |\n| `xcode-version` | The version of Xcode to use for building the Xcode project. | Defaults to the [latest version of Xcode on the runner](https://github.com/actions/runner-images#available-images). |\n| `project-path` | The directory that contains the exported xcode project from Unity. | Defaults to searching the workspace for `.xcodeproj` |\n| `app-store-connect-key` | The App Store Connect API AuthKey_*.p8 key encoded as base64 string. | true |\n| `app-store-connect-key-id` | The App Store Connect API key id. | true |\n| `app-store-connect-issuer-id` | The issuer ID of the App Store Connect API key. | true |\n| `manual-signing-certificate` | Exported signing certificate.p12 encoded as base64 string. Overrides the automatic signing in Xcode. | Defaults to Automatic signing. |\n| `manual-signing-certificate-password` | The password for the exported certificate. | Required if `manual-signing-certificate` is provided. |\n| `manual-signing-identity` | The signing identity to use for signing the Xcode project. | Parsed from the `manual-signing-certificate` if not provided. |\n| `provisioning-profile` | The provisioning profile to use as base64 string. Use when manually signing the Xcode project. | Defaults to Automatic signing. |\n| `provisioning-profile-name` | The name of the provisioning profile file, including the type to use for signing the Xcode project. Must end with either `.mobileprovision` or `.provisionprofile`. | Required if `provisioning-profile` is provided. |\n| `team-id` | The team ID to use for signing the Xcode project. | Defaults to parsing team ID from `manual-signing-certificate` if provided. |\n| `bundle-id` | The bundle ID of the Xcode project. Overrides the value in the exported Unity project. | Defaults to parsing bundle ID from `.xcodeproj`. |\n| `configuration` | The configuration to build the Xcode project with. | Defaults to `Release`. |\n| `scheme` | The scheme to use when building the xcode project. | false |\n| `destination` | The destination to use when building the xcode project. | Defaults to `generic/platform={platform}`. |\n| `platform` | The platform to build for. Can be one of `iOS`, `macOS`, `tvOS`, `visionOS`. | Defaults to parsing platform from `.xcodeproj`. |\n| `platform-sdk-version` | The version of the platform SDK to use for building the Xcode project. | Defaults to the latest version of the platform SDK defined in the `.xcodeproj`. |\n| `export-option` | The export option to use for exporting the Xcode project. Can be one of `app-store-connect`, `steam`, `release-testing`, `enterprise`, `debugging`, `developer-id`, `mac-application`. | Defaults to `development` |\n| `export-option-plist` | The path to custom export option plist file to use when exporting the Xcode project. | Overrides `export-option`. |\n| `entitlements-plist` | The path to custom entitlements plist file. | Generates [default hardened runtime entitlements](https://developer.apple.com/documentation/security/hardened-runtime) if not provided. |\n| `notarize` | Whether to notarize the exported Xcode project. | Defaults to `true` if `export-option !== app-store-connect`. |\n| `archive-type` | The archive type to use when exporting macOS applications when not uploading to the App Store. Can be one of `app` or `pkg`. | Defaults to `app`. Forces `app` if `export-option === steam`. |\n| `upload` | Whether to upload the exported Xcode project to App Store Connect. | Defaults to `true` if `export-option === app-store-connect`. |\n| `whats-new` | When `uploading === true`, Let your testers know what you would like them to test in this build. This information will be available to testers in all groups who have access to this build. | Defaults to the last git commit sha, current branch name, and commit message up to 4000 characters. |\n| `auto-increment-build-number` | Whether to automatically increment the `CFBundleVersion` in the Xcode project. | Defaults to `true` if `export-option === app-store-connect`. |\n| `test-groups` | One or more test groups to automatically add to the build when uploading to TestFlight. When using multiple groups, separate them with commas. | None by default. |\n| `submit-for-review` | Whether to submit the build for review when uploading to App Store Connect. | Defaults to `false`. |\n| `developer-id-application-certificate` | The `Developer ID Application` certificate encoded as base64 string. | Required if `export-option === steam` or `export-option === developer-id` or `notarize === true`. |\n| `developer-id-application-certificate-password` | The password for the `Developer ID Application` certificate. | Required if `developer-id-application-certificate` is provided. |\n| `developer-id-installer-certificate` | The `Developer ID Installer` certificate encoded as base64 string. | Required when creating an installer package for macOS application. |\n| `developer-id-installer-certificate-password` | The password for the `Developer ID Installer` certificate. | Required if `developer-id-installer-certificate` is provided. |\n\n### outputs\n\n- `executable`: Path to the exported archive executable.\n- `output-directory`: The path to the export output directory.\n","funding_links":["https://github.com/sponsors/StephenHodgson","https://patreon.com/RageAgainstThePixel"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frageagainstthepixel%2Funity-xcode-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frageagainstthepixel%2Funity-xcode-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frageagainstthepixel%2Funity-xcode-builder/lists"}