ponders/godot-cpp-ci

By ponders

Updated over 1 year ago

Docker image to compile Godot C++ GDExtension libraries.

Image
Developer tools
1

621

ponders/godot-cpp-ci repository overview

godot-cpp-ci

Docker image and Github Actions to automatically compile Godot C++ GDNative libraries.

Github Actions:

🏁 Windows Builds 🐧 Linux Builds 🍎 macOS Builds 🍏 iOS Builds 🤖 Android Builds 🌐 Javascript Builds

Exported HMTL5 build is deployed here.

Gitlab Runners:

Pipeline Status

Heavily inspired and based on both the CI/CD provided by godot-ci and the automated workflow of Godot itself.

Docker Hub

https://hub.docker.com/r/ponders/godot-cpp-ci/

Gitlab Mirror

This repository is mirrored to Gitlab here.

How To Use

.gitlab-ci.yml and .github/workflows/*.yml are included in this project as reference. In most cases, just copying them to your own repository does the job.

Android

For android compilation purposes, a special Android.mk-file as well as a jni/Application.mk-file are included in the gdnative_cpp_example-folder.

Again, those files need to be copied and modified for your own repository purposes.

Availability Matrix

GithubGitlab
windows:heavy_check_mark::heavy_check_mark:
x11:heavy_check_mark::heavy_check_mark:
osx:heavy_check_mark::x:
ios:heavy_check_mark::x:
android:heavy_check_mark::x:
html5:heavy_check_mark::x:

Frequently Asked Questions (FAQ)

1. Why does this repository export to the release-target by default?

Exporting to the debug-target gives potential dependency problems, especially on Windows, that might break your plugin for users that don't have any dev environment set up on their device.

In those cases, Godot will fail to load the library and print an error of following form (or similar):

Can't open dynamic library: bin/win64/libgdexample.dll, error: Error 126: The specified module could not be found.
.
modules/gdnative/gdnative.cpp:501 - No valid library handle, can't get symbol from GDNative object
modules/gdnative/nativescript/nativescript.cpp:1506 - No nativescript_init in "res://bin/win64/libgdexample.dll" found

These kind of errors might not be apparent on your development machine, so it's always a good idea to check for this kind of issues on a non-development machine!

Handy tool for checking for missing dependencies of any *.dll can be found here.

2. Why is the version of Emscripten set to 2.0.17 and not to the lastest one?

Later versions of Emscripten don't seem to create binaries that are compatible with the Godot API due to unknown reasons.
This issue might be fixed in upcoming versions of Godot (3.3.1+), but the current version is to remain at 2.0.17 until further information or developments arise on the nature of this issue.

Tag summary

Content type

Image

Digest

sha256:9639483ad

Size

407.5 MB

Last updated

over 1 year ago

Requires Docker Desktop 4.37.1 or later.