{"id":15486102,"url":"https://github.com/dulvui/godot-ios-upload","last_synced_at":"2025-04-15T22:51:39.777Z","repository":{"id":56739083,"uuid":"523795405","full_name":"dulvui/godot-ios-upload","owner":"dulvui","description":"Github Action to upload a Godot 3.x and 4.x iOS game to Test Flight ","archived":false,"fork":false,"pushed_at":"2024-09-29T21:26:21.000Z","size":57,"stargazers_count":21,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-19T07:05:05.503Z","etag":null,"topics":["cicd","githubaction","godot","ios","testflight"],"latest_commit_sha":null,"homepage":"","language":null,"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/dulvui.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"dulvui","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":"dulvui","issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":"simondalvai.org/donate"}},"created_at":"2022-08-11T16:32:41.000Z","updated_at":"2024-09-29T21:26:25.000Z","dependencies_parsed_at":"2023-12-09T17:24:49.276Z","dependency_job_id":"e0a2f78e-4057-4399-b61f-4f2d1abc13e1","html_url":"https://github.com/dulvui/godot-ios-upload","commit_stats":{"total_commits":111,"total_committers":4,"mean_commits":27.75,"dds":"0.39639639639639634","last_synced_commit":"ca75d331edfc94b35ce4c79edf524ed14fa67cdd"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dulvui%2Fgodot-ios-upload","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dulvui%2Fgodot-ios-upload/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dulvui%2Fgodot-ios-upload/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dulvui%2Fgodot-ios-upload/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dulvui","download_url":"https://codeload.github.com/dulvui/godot-ios-upload/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249167434,"owners_count":21223505,"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","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":["cicd","githubaction","godot","ios","testflight"],"created_at":"2024-10-02T06:06:30.504Z","updated_at":"2025-04-15T22:51:39.763Z","avatar_url":"https://github.com/dulvui.png","language":null,"funding_links":["https://github.com/sponsors/dulvui","https://liberapay.com/dulvui","simondalvai.org/donate"],"categories":[],"sub_categories":[],"readme":"# godot-ios-upload\nGithub Action to export a Godot 3.x and 4.x game to iOS and upload it on App Store.  \nIf you are facing problems with the action or this README feels incomplete, pull requests are welcome or open an issue.\n\n**For Godot 4.3 please check [github.com/dulvui/godot4-ios-export](https://github.com/dulvui/godot4-ios-export)**\nIn Godot 4.3 you can decide in the exports_preset.cfg iOS configuration, if Godot should do all the archiving and signing of the app.\nSo many steps of this action are no longer needed.\n\n## Table of contents\n- [godot-ios-upload](#godot-ios-upload)\n  - [Table of contents](#table-of-contents)\n  - [Godot 4.x](#godot-4x)\n    - [Requirements](#requirements)\n    - [Parameters](#parameters)\n    - [How to use](#how-to-use)\n  - [Godot 3.x](#godot-3x)\n    - [Parameters](#parameters-1)\n    - [Working examples](#working-examples)\n    - [Parameters](#parameters-2)\n    - [Working examples](#working-examples-1)\n  - [App-specific password](#app-specific-password)\n  - [Certificate Request without a Mac](#certificate-request-without-a-mac)\n  - [Github Actions pricing](#github-actions-pricing)\n  - [License](#license)\n\n## Godot 4.x\nGodot 4.x is the current active stable version and will be actively maintained.\nYou can find the code in the `main` branch.\n\n### Requirements\n - Apple Developer Account\n - App-specific password\n - Godot Project with a iOS Export\n - Certificate and Provision Profile\n\n### Parameters\n| key | required | default | description |\n| ----|----------|---------|-------------|\n| project-name | true |  | Name used in xcodebuild |\n| apple-id-username | true |   | Apple ID email |\n| apple-id-password | true |   | App specific password |\n| godot-version | true | . | Godot Engine version. Supported are 4.x versions. Check versions [here](https://github.com/godotengine/godot-builds/releases) |\n| godot-channel | false | stable | Godot Engine release channel (stable, beta, rc1, rc2, rc3...). Defaults to 'stable' Check release channels [here](https://github.com/godotengine/godot-builds/releases) |\n| working-directory | false | . | Path to .project file |\n\n\n### How to use\nUse the 4.x tag\n```\n- name: Export and upload to Testflight\n  uses: dulvui/godot-ios-upload@v4\n  with:\n    project-name: FutsalManager\n    godot-version: 4.2.2\n    provision-profile-path: ~/Library/MobileDevice/Provisioning\\ Profiles/build_pp.mobileprovision\n    apple-id-username: ${{ secrets.IOS_APPLE_ID_USERNAME }}\n    apple-id-password: ${{ secrets.IOS_APPLE_ID_PASSWORD }}\n```\n\n## Godot 3.x\nGodot 3.x is the current LTS version and will be less actively maintained.\nYou can find the code in the `godot-3` branch.\n\n### Parameters\n| key | required | default | description |\n| ----|----------|---------|-------------|\n| project-name | true |  | Name used in xcodebuild |\n| apple-id-username | true |   | Apple ID email |\n| apple-id-password | true |   | App specific password |\n| working-directory | false | . | Path to .project file |\n| godot-version | false | 3.5.3 | Check versions [here](https://github.com/dulvui/godot-headless-mac/releases) |\n\n### Working examples\nYou an find a working examples here:  \nhttps://github.com/dulvui/pocket-broomball/blob/main/.github/workflows/upload-ios.yml  \nhttps://github.com/dulvui/ball2box/blob/main/.github/workflows/upload-ios.yml\n\n\n### Parameters\n| key | required | default | description |\n| ----|----------|---------|-------------|\n| project-name | true |  | Name used in xcodebuild |\n| apple-id-username | true |   | Apple ID email |\n| apple-id-password | true |   | App specific password |\n| working-directory | false | . | Path to .project file |\n| godot-version | false | 4.2.1 | Check versions [here](https://downloads.tuxfamily.org/godotengine/) |\n\n### Working examples\nYou an find a working examples here:  \nhttps://github.com/dulvui/99managers-futsal-edition/blob/ad492d029537519dd34eef19122d72a8a1eeb197/.github/workflows/upload-ios.yml\n\n\n## App-specific password\nTo upload the app you can use your account login credentials.  \nBut for security reasons it is not recommended to do that, so prefer to use an app-specific password, by following this steps:\n1. Sign in to appleid.apple.com.\n2. In the Sign-In and Security section, select App-Specific Passwords.\n3. Select Generate an app-specific password or select the Add button, then follow the steps on your screen.\n4. Enter or paste the app-specific to the Action secrets.\n\nFind here the official instructions on how to create an app-specific password:\n[support.apple.com/en-us/HT204397](https://support.apple.com/en-us/HT204397)\n\nNote: An API key generated from [appstoreconnect.apple.com/access/api](https://appstoreconnect.apple.com/access/api) site would also work, but is not implemented yet. Open an issue, if you need to use an API key and I'll implement it asap.\n\n## Certificate Request without a Mac\nTo upload a game to the App Store, you need to create a Developer Certificate.\nThe official Apple guide shows you how to do it easily with a Mac device in its official [documentation](https://developer.apple.com/help/account/create-certificates/create-a-certificate-signing-request).\n\nBut it can be done also without a Mac, using a Linux System, following [this guide](https://gist.github.com/jcward/d08b33fc3e6c5f90c18437956e5ccc35) of a Github user.\n\nHere you can find the needed steps, but since this might change over time, please always check the comments of the guide above.\n\n1. Generate a private key and certificate signing request:\nChange \"info@simondalvai.org\" and \"Simon Dalvai\" with your values.\n```sh\nopenssl genrsa -out distribution.key 2048\nopenssl req -new -key distribution.key -out distribution.csr -subj '/emailAddress=info@simondalvai.org, CN=Simon Dalvai, C=IT'\n```\n2. Upload CSR to apple at: https://developer.apple.com/account/ios/certificate/create\nChoose Production -\u003e App Store and Ad Hoc\n3. Download the resulting distribution.cer, and convert it to .pem format:\n```sh\nopenssl x509 -inform der -in distribution.cer -out distribution.pem\n```\n4. Download Apple's Worldwide developer cert from portal and convert it to pem:  \n   https://www.apple.com/certificateauthority/ - Worldwide Developer Relations - G4 (Expiring 12/10/2030 00:00:00 UTC\n\n```sh\nopenssl x509 -in AppleWWDRCAG4.cer -inform DER -out AppleWWDRCAG4.pem -outform PEM\n```\n5. Convert your cert plus Apple's cert to p12 format (choose a password for the .p12):\n\nNote: use -legacy if using opensssl v3.x https://stackoverflow.com/questions/70431528/mac-verification-failed-during-pkcs12-import-wrong-password-azure-devops\n```sh\nopenssl pkcs12 -export -legacy -out distribution.p12 -inkey distribution.key -in distribution.pem -certfile AppleWWDRCAG4.pem \n```\nFinally, update any provisioning profiles with the new cert, and download from dev portal.\n6. Create base64 of distribution.p12 for github actions\nNow you can prepare it for the Github Action\n```sh\nbase64 distribution.p12 -w 0 \u003e distribution.base64\n```\n7. Add distribution.base64 and the previous created p12 password to the Github Action secrets in your repository settings\n\n## Github Actions pricing\nGithub Actions are always free only for Open Source repositories.\nOn private you get 2000 to 3000 run minutes per month, depending on the type of your account.\nAdditionally, MacOS actions consume 10x times the minutes of a Linux machine, so you actually get 200 to 300 minutes per month.\n\nHere the detailed documentation about pricing https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions\n\n## License\nThis software is licensed under the [MIT license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdulvui%2Fgodot-ios-upload","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdulvui%2Fgodot-ios-upload","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdulvui%2Fgodot-ios-upload/lists"}