A set of Docker Container usefull to automate build of Godot games with Woodpecker CI.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

README.md

GodotCI#

ghcr.io/bigaston/godotci:4.3-stable
ghcr.io/bigaston/godotci:4.4.1-stable
ghcr.io/bigaston/godotci:4.5-beta3
ghcr.io/bigaston/godotci:android-4.3-stable
ghcr.io/bigaston/godotci:android-4.4.1-stable
ghcr.io/bigaston/godotci:android-4.5-beta3

This is the big container. In this image, you will have everything you need to export Godot games for Windows/Linux/Web and Android (on the android version.)
It's an ubuntu based image where Godot is installed at /godot and can be accessed with godot in headless mode.
*/!\ With Godot version prior to 4.5, you may have some random build error when you are building games with custom fonts. /!*

You will have multiple variant of this image, for Godot 4.3, 4.4.1 and 4.5-beta3.
You can find the correct image with the image labels 4.3-stable, 4.4.1-stable and 4.5-beta3.

Random info that can be usefull. The file /usr/bin/godot.version will contain the Godot Version of this image.

Take a look at the Godot CLI to see every commands available and what you can do with it!

Android variant#

The android image is bigger because all the tools you will need to create and APK are also included (OpenJDK-17 and Android SDK). But it can be usefull for exporting APK and games for VR Headset like Meta Quest 2.
A debug.keystore is included, but please replace it by a new keystore that you will create!

Example#

Just basic build. The game must have export template called Windows, Linux and Web, with build folder .build/{TARGET}. But feel free to change it of course!

when:
  - event: push
    branch: main

matrix:
  TARGET:
    - Windows
    - Linux
    - Web

steps:
  - name: Build the game for ${TARGET}
    image: ghcr.io/bigaston/godotci:4.5-beta3 # You can change the Godot version here
    commands:
      - godot --version

      # This part is not required. But it will create a commit.txt file
      # that you can include on your game export, and read from it
      # to display your commit SHA inside of the menu
      - "> commit.txt"
      - short_commit=$(git rev-parse --short HEAD)
      - echo "$short_commit" > commit.txt

      # Maybe not required now
      - godot --headless --editor --import

      - mkdir -p .build/${TARGET}

      # You can replace --export-release with --export-debug
      - godot --headless --export-release ${TARGET}

A basic example with Android build.

when:
  - event: push
    branch: main

steps:
  - name: Build the game for Android
    image: ghcr.io/bigaston/godotci:android-4.5-beta3
    commands:
      - godot --version

      - godot --headless --editor --import

      - mkdir -p .build/Android

      # Because sometimes you will need the android folder when you have custom Java,
      # this is an example of the command you can use to create it from the export templates
      - cat /usr/bin/godot.version
      - mkdir -p android/build
      - unzip ~/.local/share/godot/export_templates/$(cat /usr/bin/godot.version)/android_source.zip -d android/build
      - touch android/build/.gdignore
      - cat /usr/bin/godot.version > android/.build_version
 
# TODO: Find a way to export as release and not debug :D
      - godot --headless --export-debug Android