abarichello / godot-ci

Docker image to export Godot Engine games. Templates for Gitlab CI and GitHub Actions to deploy to GitLab Pages/GitHub Pages/Itch.io.
https://hub.docker.com/r/barichello/godot-ci
MIT License
719 stars 127 forks source link

[Godot 4.3] Unable to load a project with addons/plugins #150

Open IAmBaguette opened 2 weeks ago

IAmBaguette commented 2 weeks ago

For those experiencing the same problem, see the Solution. It worked for me and might work for others too.

Issue description

I’m using the GitLab CI setup with self-hosted GitLab runners, and I’ve been using the barichello/godot-ci:4.3 image since the Godot 4.3 update. Before that, I used the 4.2.2 image for a few months without issues. Everything imports and exports fine as long as no plugins are enabled.

Please note, my repository organization is a bit different. The project is at the root of the repository, not within a folder. I’ve made a few changes to the yaml file to get it working:

# .gitlab-ci.yml
image: barichello/godot-ci:4.3

# Cache imported assets between runs
cache:
  key: dependencies
  paths:
  - .godot/imported/

stages:
  - setup
  - export

variables:
  EXPORT_NAME: "template"
  WINDOWS_PLATFORM_EXPORT_NAME: "Windows Desktop"

# Open the editor to import assets in case the cache was empty or outdated
import-assets:
  stage: setup
  script:
  - godot --headless --verbose --import

windows:
  stage: export
  script:
  - mkdir -v -p .build/windows
  - godot --headless --verbose --export-release "$WINDOWS_PLATFORM_EXPORT_NAME" ".build/windows/$EXPORT_NAME.exe"
  artifacts:
    name: "$EXPORT_NAME-$CI_JOB_NAME"
    paths:
      - .build/windows

The import-assets step from the .gitlab-ci.yml file fails whenever the project has a plugin enabled:

... (omitted for brevity)
EditorSettings: Save OK!
Unloading addon: res://addons/myplugin/plugin.cfg
Unloading addon: res://addons/myplugin/plugin.cfg
================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.3.stable.official (77dcf97d82cbfe4e4615475fa52ca03da645dbd8)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
ERROR: FATAL: Index p_index = 1 is out of bounds (size() = 0).
   at: get (./core/templates/cowdata.h:205)
/usr/bin/bash: line 145:    14 Illegal instruction     (core dumped) godot --headless --verbose --editor --quit

I’ve tested with shared runners and encountered the same issue. However, I tested a similar project in Godot 4.2.2 with self-hosted runners and shared runners, and it works fine with a plugin enabled

Steps to reproduce

  1. Push the attached project to a new repository.
  2. Run CI

Minimal reproduction project (MRP)

Solution

After many hours, I found a solution that worked for me. It might not work for everyone, but changing the import-assets command from godot --headless --verbose --editor --quit to godot --headless --verbose --import resolved my issue.

Calinou commented 2 weeks ago

--import is new in 4.3. It supersedes almost all uses of --editor --quit.