godot-ci
Docker image to export Godot Engine games and deploy to GitLab/GitHub Pages and Itch.io using GitLab CI and GitHub Actions.
Docker Hub
https://hub.docker.com/r/barichello/godot-ci/
How To Use
.gitlab-ci.yml
and .github/workflows/godot-ci.yml
are included in this project as reference.
For live projects, examples and tutorials using this template check the list below:
- Video tutorial by Kyle Luce
- Repository examples: test-project | game-off.
- Test deploys using this tool: GitHub Pages | GitLab Pages | Itch.io.
Mono/C#
To build a godot project with Mono enabled, change the 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
.
Platforms
Here's a mapping between each supported CI service, the template jobs and a live example.
CI | Template | Example |
---|---|---|
GitLab CI | Godot Exports / GitHub Pages / GitLab Pages / Itch.io | GitLab CI Pipelines |
GitHub Actions | Godot Exports | GitHub Actions running |
Environment configuration
First 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
).
Then you have to add these environments to a configuration panel depending on the chosen CI and jobs:
- GitHub:
https://github.com/<username>/<project-name>/settings/secrets
- GitLab:
https://gitlab.com/<username>/<repo-name>/settings/ci_cd
GitHub Pages
Secrets needed for a GitHub Pages deploy via GitLab CI:
Variable | Description | Example |
---|---|---|
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 username>:<deploy token>@github.com/<username>/<repository>.git |
GIT_EMAIL | Git email of the account that will commit to the gh-pages branch. |
email@example.com |
GIT_USERNAME | Username of the account that will commit to the gh-pages branch. |
username |
Others variables are set automatically by the gitlab-runner
, see the documentation for predefined variables.
Itch.io
Deployment to Itch.io is done via Butler.
Secrets needed for a Itch.io deploy via GitLab CI:
Variable | Description | Example |
---|---|---|
ITCHIO_USERNAME | Your username on Itch.io, as in your personal page will be at https://<username>.itch.io |
username |
ITCHIO_GAME | the name of your game on Itchio, as in your game will be available at https://<username>.itch.io/<game> |
game |
BUTLER_API_KEY | An Itch.io API key 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 |
Troubleshoot
Problems while exporting
- Check that the export names on
export_presets.cfg
match the ones used in your CI script. - 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.
Authentication errors with Butler
- If using GitLab check that the 'protected' tag is disabled in the CI/CD variables panel.