• Stars
    star
    663
  • Rank 67,991 (Top 2 %)
  • Language
    Dockerfile
  • License
    MIT License
  • Created about 6 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Docker image to export Godot Engine games. Templates for Gitlab CI and GitHub Actions to deploy to GitLab Pages/GitHub Pages/Itch.io.

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:

Mono/C#

To build a Godot project with Mono (C#) enabled, you must do two things for each job:

  1. 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).
  2. 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.
mv /root/.local/share/godot/templates/${GODOT_VERSION}.stable ~/.local/share/godot/templates/${GODOT_VERSION}.stable

becomes:

mv /root/.local/share/godot/templates/${GODOT_VERSION}.stable.mono ~/.local/share/godot/templates/${GODOT_VERSION}.stable.mono

Android

To build a debug release (debug.keystore), use the android_debug job example in the gitlab-ci.yml file.

If you want to export for Android with your own keystore, you can do this with the following steps:

  1. Take your generated keystore and convert it to Base64: Linux & macOS: base64 release.keystore -w 0 Windows: certutil -encodehex -f release.keystore encoded.txt 0x40000001
  2. Go to GitLab Project > Settings > CI/CD > Variables and copy the Base64-encoded keystore value in a new variable SECRET_RELEASE_KEYSTORE_BASE64 as type variable.
  3. Create a second variable SECRET_RELEASE_KEYSTORE_USER as type variable with the alias of your keystore as value.
  4. Create a third variable SECRET_RELEASE_KEYSTORE_PASSWORD as type variable with the password of your keystore as value.
  5. Use the android job example in the gitlab-ci.yml file.

GDNative/C++

See this repository for automating GDNative C++ compilation, which is based off this repository.

Modules

You have to compile Godot with the modules included first. See this excellent repository by Calinou for automating Godot builds.

After that, you would use the custom build to export your project as usual. See this guide by Greenfox on how to use a custom Godot build for automated exports.

iOS

Not 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.

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 protected]
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 presets file (export_presets.cfg) is committed to version control. In other words, export_presets.cfg must not be in .gitignore.
    • Make sure you don't accidentally commit Android release keystore or Windows codesigning credentials. These credentials cannot be revoked if they are leaked!
  • 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).
  • 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

Additional Resources

Greenfox has an excellent repo that is also for automating Godot exports.

More Repositories

1

cp-swf

Interactive archive of Club Penguin SWFs by year
Elm
37
star
2

inside-noclip

Script files for noclipping in Playdead's INSIDE game.
Lua
15
star
3

gamine

Mobile game recreating the Enigma Machine in the Wolfenstein II The New Order.
GDScript
9
star
4

Firewatch-noclip

Noclip mod for the game Firewatch
C#
8
star
5

RetroKitty

A cute mobile game where you hit color-coded balls.
GDScript
7
star
6

gamedev_channel_bot

RSS bot for Telegram channels. Configured to watch game development related feeds.
Python
7
star
7

receiver2-qol-fixes

Quality of Life fixes for the game Receiver 2
C#
3
star
8

shadow-tactics-debug

Enhanced 'Debug Mode' for Shadow Tacticts: Blades of The Shogun
C#
3
star
9

bfheroesFesl

Battlefield Heroes Go multi-thread backend server with TCP & UDP protocol used in GameSpy games.
Go
3
star
10

game-off

Used for testing godot-ci exports
GDScript
3
star
11

multicaster

Multiplayer raycasting game.
C++
3
star
12

Hug_Me_Bot

Send virtual hugs to your friends on Telegram with this inline bot.
Python
3
star
13

kotorrent

WIP torrent client for Kobo E-Readers
C++
2
star
14

hmm

Heavy Metal Machines game client decompiled
C#
2
star
15

AltitudeBot

@theAltitudeBot - Compete with your friends to see who gets the highest(or lowest) location on Earth!
Python
2
star
16

airport-simulator

Assignment for INE5410
C
1
star
17

TestDrive

Racing game in VHDL for EEL5105
VHDL
1
star
18

arbochelli

Bass guitar sheet music blog
Haxe
1
star
19

Dodge

Godot Engine tutorial
GDScript
1
star
20

minininjas-noclip

Mini Ninjas Hacking
Assembly
1
star
21

slimerancher-superjet

Exploration mod for Slime Rancher
C#
1
star
22

Amnesia-Brawl

Party game in SFML and Box2D
C++
1
star
23

INE5406

INE5406 - Digital Systems
VHDL
1
star
24

metro2033redux-noclip

Script files for noclipping in Metro 2033 Redux using Cheat Engine's API.
Lua
1
star
25

vida

Homebrew Game of Life on Nintendo 3DS
C++
1
star