{"id":13526320,"url":"https://github.com/aBARICHELLO/godot-ci","last_synced_at":"2025-04-01T07:31:56.418Z","repository":{"id":38224528,"uuid":"154517788","full_name":"abarichello/godot-ci","owner":"abarichello","description":"Docker image to export Godot Engine games. Templates for Gitlab CI and GitHub Actions to deploy to GitLab Pages/GitHub Pages/Itch.io.","archived":false,"fork":false,"pushed_at":"2025-03-26T23:38:38.000Z","size":20415,"stargazers_count":839,"open_issues_count":37,"forks_count":140,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-03-30T16:03:19.214Z","etag":null,"topics":["ci-cd","docker","dockerfile","github-actions","github-page","github-pages","gitlab","gitlab-ci","gitlab-pages","godot","godot-engine","hacktoberfest"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/barichello/godot-ci","language":"Dockerfile","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/abarichello.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-24T14:42:07.000Z","updated_at":"2025-03-26T17:58:11.000Z","dependencies_parsed_at":"2023-02-13T21:46:06.465Z","dependency_job_id":"bcb05fa7-118d-4fb2-a6e8-8d0a488684a9","html_url":"https://github.com/abarichello/godot-ci","commit_stats":{"total_commits":94,"total_committers":25,"mean_commits":3.76,"dds":0.574468085106383,"last_synced_commit":"bd9eea16d14bf71f5876b71b16955218df36266b"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abarichello%2Fgodot-ci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abarichello%2Fgodot-ci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abarichello%2Fgodot-ci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abarichello%2Fgodot-ci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abarichello","download_url":"https://codeload.github.com/abarichello/godot-ci/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246600749,"owners_count":20803476,"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":["ci-cd","docker","dockerfile","github-actions","github-page","github-pages","gitlab","gitlab-ci","gitlab-pages","godot","godot-engine","hacktoberfest"],"created_at":"2024-08-01T06:01:27.984Z","updated_at":"2025-04-01T07:31:55.996Z","avatar_url":"https://github.com/abarichello.png","language":"Dockerfile","funding_links":[],"categories":["Other","**资源与工具**"],"sub_categories":["3D","**辅助工具**"],"readme":"# godot-ci\nDocker image to export Godot Engine games and deploy to GitLab/GitHub Pages and Itch.io using GitLab CI and GitHub Actions.\n\n\u003cimg src=\"https://i.imgur.com/3z4Sxhd.png\" width=450\u003e\n\n## Docker Hub\nhttps://hub.docker.com/r/barichello/godot-ci/\n\n## How To Use\n\n`.gitlab-ci.yml` and `.github/workflows/godot-ci.yml` are included in this project as reference.\n\u003cbr\u003eFor live projects, examples and tutorials using this template check the list below:\u003cbr\u003e\n\n- [Video tutorial by Kyle Luce](https://www.youtube.com/watch?v=wbc1qut0vT4)\n- [Video tutorial series by David Snopek](https://www.youtube.com/watch?v=4oUs4IV_Mj4\u0026list=PLCBLMvLIundAOAiCvluBNuEA0-ea7_EDp)\n- Repository examples: [test-project](https://github.com/aBARICHELLO/godot-ci/tree/master/test-project) | [game-off](https://gitlab.com/BARICHELLO/game-off).\n- Test deploys using this tool: [GitHub Pages](http://barichello.me/godot-ci/) | [GitLab Pages](https://barichello.gitlab.io/godot-ci/) | [Itch.io](https://barichello.itch.io/test-project).\n\n### Mono/C#\n\nTo build a Godot project with Mono (C#) enabled, you must do two things for each job:\n1. Change the container's `image` tag from `barichello/godot-ci:VERSION` to `barichello/godot-ci:mono-VERSION` in `.gitlab-ci.yml` (Gitlab) or `godot-ci.yml` (Github). (e.g. `barichello/godot-ci:mono-3.2.1`).\n2. You will also need to change your \"Setup\" step's run commands (looks like `run: mv /root/.local ...`) from ending with `...${GODOT_VERSION}.stable` to ending with `...${GODOT_VERSION}.stable.mono`. You will need to do this for both directories in the command.\n```bash\nmv /root/.local/share/godot/export_templates/${GODOT_VERSION}.stable ~/.local/share/godot/export_templates/${GODOT_VERSION}.stable\n```\nbecomes:\n```bash\nmv /root/.local/share/godot/export_templates/${GODOT_VERSION}.stable.mono ~/.local/share/godot/export_templates/${GODOT_VERSION}.stable.mono\n```\n\n### Android\n\nTo build a debug release (debug.keystore), use the `android_debug` job example in the `gitlab-ci.yml` file.\n\nIf you want to export for Android with your own keystore, you can do this with the following steps:\n1. Take your generated keystore and convert it to Base64:\nLinux \u0026 macOS: `base64 release.keystore -w 0`\nWindows: `certutil -encodehex -f release.keystore encoded.txt 0x40000001`\n2. Go to **GitLab Project \u003e Settings \u003e CI/CD \u003e Variables** and copy the Base64-encoded keystore value in a new variable `SECRET_RELEASE_KEYSTORE_BASE64` as type variable.\n3. Create a second variable SECRET_RELEASE_KEYSTORE_USER as type variable with the alias of your keystore as value.\n4. Create a third variable SECRET_RELEASE_KEYSTORE_PASSWORD as type variable with the password of your keystore as value.\n5. Use the `android` job example in the `gitlab-ci.yml` file.\n\n### GDNative/C++\n\nSee [this repository](https://github.com/2shady4u/godot-cpp-ci) for automating GDNative C++ compilation, which is based off this repository.\n\n### Modules\n\nYou have to compile Godot with the modules included first. See [this excellent repository](https://gitlab.com/Calinou/godot-builds-ci) by Calinou for automating Godot builds.\n\nAfter that, you would use the custom build to export your project as usual. See [this guide](https://gitlab.com/greenfox/godot-build-automation/-/blob/master/advanced_topics.md#using-a-custom-build-of-godot) by Greenfox on how to use a custom Godot build for automated exports.\n\n### iOS\n\nNot available yet. Automating Xcode projects is doable but not trivial, and macOS runners only recently became available for GitHub actions, so it will happen eventually.\n\n## Platforms\n\nHere's a mapping between each supported CI service, the template jobs and a live example.\n\n|CI|Template|Example\n|-|-|-|\n|GitLab CI|[Godot Exports](https://github.com/aBARICHELLO/godot-ci/blob/master/.gitlab-ci.yml#L16-L58) / [GitHub Pages](https://github.com/aBARICHELLO/godot-ci/blob/master/.gitlab-ci.yml#L60-L76) / [GitLab Pages](https://github.com/aBARICHELLO/godot-ci/blob/master/.gitlab-ci.yml#L78-L91) / [Itch.io](https://github.com/aBARICHELLO/godot-ci/blob/master/.gitlab-ci.yml#L93-L113)|[GitLab CI Pipelines](https://gitlab.com/BARICHELLO/godot-ci/pipelines)\n|GitHub Actions|[Godot Exports](https://github.com/aBARICHELLO/godot-ci/blob/master/.github/workflows/godot-ci.yml#L8-99) | [GitHub Actions running](https://github.com/aBARICHELLO/godot-ci/actions)\n\n## Environment configuration\n\nFirst you need to remove unused jobs/stages from the `.yml` file you are using as a template(`.gitlab-ci.yml` or `.github/workflows/godot-ci.yml`).\u003cbr\u003e\nThen you have to add these environments to a configuration panel depending on the chosen CI and jobs:\n- **GitHub**: `https://github.com/\u003cusername\u003e/\u003cproject-name\u003e/settings/secrets`\n- **GitLab**: `https://gitlab.com/\u003cusername\u003e/\u003crepo-name\u003e/settings/ci_cd`\n\n### GitHub Pages\n\nSecrets needed for a GitHub Pages deploy via GitLab CI:\n\n|Variable|Description|Example|\n|-|-|-|\n| REMOTE_URL | The `git remote` where the web export will be hosted (in this case GitHub), it should contain your [deploy/personal access token](https://github.com/settings/tokens)|`https://\u003cgithub username\u003e:\u003cdeploy token\u003e@github.com/\u003cusername\u003e/\u003crepository\u003e.git`\n| GIT_EMAIL | Git email of the account that will commit to the `gh-pages` branch. | `email@example.com`\n| GIT_USERNAME | Username of the account that will commit to the `gh-pages` branch. | `username`\n\nOthers variables are set automatically by the `gitlab-runner`, see the documentation for [predefined variables](https://docs.gitlab.com/ee/ci/variables/predefined_variables.html).\u003cbr\u003e\n\n### Itch.io\n\nDeployment to Itch.io is done via [Butler](https://itch.io/docs/butler/).\u003cbr\u003e\nSecrets needed for a Itch.io deploy via GitLab CI:\n\n|Variable|Description|Example|\n|-|-|-|\n| ITCHIO_USERNAME | Your username on Itch.io, as in your personal page will be at `https://\u003cusername\u003e.itch.io` |`username`\n| ITCHIO_GAME | the name of your game on Itchio, as in your game will be available at `https://\u003cusername\u003e.itch.io/\u003cgame\u003e`  |`game`\n| BUTLER_API_KEY | An [Itch.io API key](https://itch.io/user/settings/api-keys) is necessary for Butler so that the CI can authenticate on Itch.io on your behalf. **Make that API key `Masked`(GitLab CI) to keep it secret** |`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`\n\n## Troubleshoot\n\n#### Problems while exporting\n\n- **Check that the export presets file (`export_presets.cfg`) is committed to version control.** In other words, `export_presets.cfg` must *not* be in `.gitignore`.\n  - Make sure you don't accidentally commit Android release keystore or Windows codesigning credentials. These credentials cannot be revoked if they are leaked!\n- Check that the export names on `export_presets.cfg` match the ones used in your CI script **(case-sensitive)**. Export preset names that contain spaces must be written within quotes (single or double).\n- Check the paths used in your CI script. Some commands may be running in the wrong place if you are keeping the project in a folder (like the `test-project` template) or not.\n\n#### Authentication errors with Butler\n- If using GitLab, check that the 'protected' tag is disabled in the [CI/CD variables panel](https://github.com/aBARICHELLO/godot-ci#environment-configuration).\n\n## Additional Resources\n\nGreenfox has an [excellent repo](https://gitlab.com/greenfox/godot-build-automation) that is also for automating Godot exports.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FaBARICHELLO%2Fgodot-ci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FaBARICHELLO%2Fgodot-ci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FaBARICHELLO%2Fgodot-ci/lists"}