Docker image to export Godot Engine games and deploy to GitLab/GitHub Pages and Itch.io using GitLab CI and GitHub Actions.
https://hub.docker.com/r/barichello/godot-ci/
.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: GitHub | GitLab
- Deployed game examples: GitHub Pages | GitLab Pages | Itch.io
- GitLab CI Pipelines running
- GitHub Actions running
Here's a mapping between each supported CI service and the template jobs.
CI | Template |
---|---|
GitLab CI | Godot Exports / GitHub Pages / GitLab Pages / Itch.io |
GitHub Actions | Godot Exports |
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
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. |
artur@barichello.me |
GIT_USERNAME | Username of the account that will commit to the gh-pages branch. |
abarichello |
Others variables are set automatically by the gitlab-runner
, see the documentation for predefined variables.
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 |