mirror of
https://github.com/pkdawson/imgui-godot.git
synced 2026-09-15 19:24:18 +00:00
465 lines
12 KiB
YAML
465 lines
12 KiB
YAML
name: 🦕 C++ GDExtension
|
|
|
|
on:
|
|
push:
|
|
branches: "*"
|
|
tags: v*
|
|
|
|
|
|
env:
|
|
vcpkg_tag: 943c5ef1c8f6b5e6ced092b242c8299caae2ff01 # 2024.04.26
|
|
|
|
jobs:
|
|
windows:
|
|
name: 🪟Windows
|
|
runs-on: windows-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Setup Python 3.x
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: 3.12
|
|
|
|
- name: Install tools
|
|
run: |
|
|
python -m pip install "scons<4.8"
|
|
scons --version
|
|
pip install ply
|
|
|
|
- name: Setup vcpkg
|
|
uses: lukka/run-vcpkg@v11
|
|
with:
|
|
vcpkgGitCommitId: ${{ env.vcpkg_tag }}
|
|
|
|
- uses: actions/cache@v4
|
|
id: cache-godot-cpp
|
|
if: github.ref_type != 'tag'
|
|
with:
|
|
path: |
|
|
gdext/scons_cache
|
|
key: godot-cpp-${{ runner.os }}-${{ hashFiles('gdext/godot-cpp/gdextension/extension_api.json') }}
|
|
|
|
- name: Build
|
|
if: github.ref_type != 'tag'
|
|
run: |
|
|
cd gdext
|
|
scons godot-cpp
|
|
scons
|
|
scons target=template_release godot-cpp
|
|
scons target=template_release
|
|
|
|
- name: Build (with debug symbols)
|
|
if: github.ref_type == 'tag'
|
|
run: |
|
|
cd gdext
|
|
scons debug_symbols=yes godot-cpp
|
|
scons debug_symbols=yes
|
|
scons debug_symbols=yes target=template_release godot-cpp
|
|
scons debug_symbols=yes target=template_release
|
|
|
|
- name: Upload binaries
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: gdext-windows
|
|
path: addons/imgui-godot/bin
|
|
|
|
linux:
|
|
name: 🐧Linux
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Setup Python 3.x
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: 3.12
|
|
|
|
- name: Install tools
|
|
run: |
|
|
python -m pip install "scons<4.8"
|
|
scons --version
|
|
pip install ply
|
|
sudo apt install clang-format
|
|
|
|
- name: Setup vcpkg
|
|
uses: lukka/run-vcpkg@v11
|
|
with:
|
|
vcpkgGitCommitId: ${{ env.vcpkg_tag }}
|
|
|
|
- uses: actions/cache@v4
|
|
id: cache-godot-cpp
|
|
with:
|
|
path: |
|
|
gdext/scons_cache
|
|
key: godot-cpp-${{ runner.os }}-${{ hashFiles('gdext/godot-cpp/gdextension/extension_api.json') }}
|
|
|
|
- name: Build debug
|
|
run: |
|
|
cd gdext
|
|
scons godot-cpp
|
|
scons
|
|
|
|
- name: Build release
|
|
run: |
|
|
cd gdext
|
|
scons target=template_release godot-cpp
|
|
scons target=template_release
|
|
|
|
- name: Upload binaries
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: gdext-linux
|
|
path: addons/imgui-godot/bin
|
|
|
|
macos:
|
|
name: 🍎macOS
|
|
runs-on: macos-14
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Setup Python 3.x
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: 3.12
|
|
|
|
- name: Install tools
|
|
run: |
|
|
python -m pip install "scons<4.8"
|
|
scons --version
|
|
pip install ply
|
|
brew install clang-format ninja
|
|
|
|
- name: Setup vcpkg
|
|
uses: lukka/run-vcpkg@v11
|
|
with:
|
|
vcpkgGitCommitId: ${{ env.vcpkg_tag }}
|
|
|
|
- uses: actions/cache@v4
|
|
id: cache-godot-cpp
|
|
with:
|
|
path: |
|
|
gdext/scons_cache
|
|
key: godot-cpp-${{ runner.os }}-${{ hashFiles('gdext/godot-cpp/gdextension/extension_api.json') }}
|
|
|
|
- name: Build debug
|
|
run: |
|
|
export PATH="$(brew --prefix llvm@15)/bin:$PATH"
|
|
cd gdext
|
|
scons godot-cpp
|
|
scons
|
|
|
|
- name: Build release
|
|
run: |
|
|
export PATH="$(brew --prefix llvm@15)/bin:$PATH"
|
|
cd gdext
|
|
scons target=template_release godot-cpp
|
|
scons target=template_release
|
|
|
|
- name: Upload binaries
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: gdext-macos
|
|
path: addons/imgui-godot/bin
|
|
|
|
package:
|
|
name: 📦Package
|
|
runs-on: ubuntu-latest
|
|
needs: [windows, linux, macos]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
path: addons/imgui-godot/bin
|
|
pattern: gdext-*
|
|
|
|
- run: ls -R
|
|
working-directory: addons/imgui-godot/bin
|
|
|
|
- name: Extract
|
|
run: |
|
|
cd addons/imgui-godot/bin
|
|
mv gdext-*/* .
|
|
rmdir gdext-*
|
|
rm *.exp
|
|
rm *.lib
|
|
|
|
- name: Upload PDBs
|
|
if: github.ref_type == 'tag'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: pdbs
|
|
path: addons/imgui-godot/bin/*.pdb
|
|
|
|
- name: Prepare files
|
|
id: prep
|
|
run: |
|
|
set -x
|
|
ls -R
|
|
rm -f addons/imgui-godot/bin/*.pdb
|
|
mkdir addons/imgui-godot/include
|
|
cp -r gdext/include/*.h addons/imgui-godot/include/
|
|
touch addons/imgui-godot/include/.gdignore
|
|
cp gdext/imgui-godot-native.gdextension addons/imgui-godot/
|
|
ls -al gdext/imgui
|
|
|
|
git -C gdext/imgui fetch --tags
|
|
git -C gdext/imgui describe > addons/imgui-godot/include/imgui-version.txt
|
|
|
|
env
|
|
imgui_ver=$(grep -m 1 "^#define IMGUI_VERSION " < gdext/imgui/imgui.h | awk '{ print $3 }' | sed 's/"//g')
|
|
plugin_ver=$(grep -m 1 "version=" < addons/imgui-godot/plugin.cfg | sed 's/version=//' | sed 's/"//g')
|
|
pkgfn=imgui-godot-${plugin_ver}_imgui-${imgui_ver}
|
|
echo $pkgfn
|
|
echo "pkgfn=$pkgfn" >> $GITHUB_OUTPUT
|
|
rm -rf gdext
|
|
|
|
pkgdir=~/out/imgui-godot-${plugin_ver}
|
|
mkdir -p $pkgdir
|
|
mv * $pkgdir
|
|
echo "pkgdir=$pkgdir" >> $GITHUB_OUTPUT
|
|
|
|
- name: Upload package
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ steps.prep.outputs.pkgfn }}
|
|
path: |
|
|
~/out
|
|
|
|
- name: Prep asset
|
|
working-directory: ${{ steps.prep.outputs.pkgdir }}
|
|
run: |
|
|
rm * || true
|
|
rm -r data doc src
|
|
|
|
- name: Upload asset package
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: AssetLib-${{ steps.prep.outputs.pkgfn }}
|
|
path: ~/out
|
|
|
|
package_cs:
|
|
name: 📦Package (C# only)
|
|
runs-on: ubuntu-latest
|
|
needs: [windows, linux, macos]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Prepare files
|
|
id: prep_cs
|
|
run: |
|
|
ls -R
|
|
rm -rf doc/examples
|
|
rm -rf gdext
|
|
plugin_ver=$(grep -m 1 "version=" < addons/imgui-godot/plugin.cfg | sed 's/version=//' | sed 's/"//g')
|
|
pkgfn=imgui-godot-${plugin_ver}-csharp-only
|
|
echo $pkgfn
|
|
echo "pkgfn=$pkgfn" >> $GITHUB_OUTPUT
|
|
|
|
pkgdir=~/out/imgui-godot-${plugin_ver}
|
|
mkdir -p $pkgdir
|
|
mv * $pkgdir
|
|
|
|
- name: Upload package
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ steps.prep_cs.outputs.pkgfn }}
|
|
path: ~/out
|
|
|
|
gds_game:
|
|
needs: [package]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, macos-14, windows-latest]
|
|
gdver: ["4.2.2", "4.3.0-beta.3"]
|
|
include:
|
|
- os: ubuntu-latest
|
|
name: 🐧GdsGameProject
|
|
exe: GdsGameProject.x86_64
|
|
- os: macos-14
|
|
name: 🍎GdsGameProject
|
|
exe: GdsGameProject.app/Contents/MacOS/GdsGameProject
|
|
- os: windows-latest
|
|
name: 🪟GdsGameProject
|
|
exe: GdsGameProject.exe
|
|
exclude:
|
|
# frequently gets stuck on import despite workaround
|
|
- os: windows-latest
|
|
gdver: "4.2.2"
|
|
|
|
name: ${{ matrix.name }} (${{ matrix.gdver }})
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
pattern: imgui-godot-*_imgui*
|
|
|
|
- uses: chickensoft-games/setup-godot@v2
|
|
with:
|
|
version: ${{ matrix.gdver }}
|
|
use-dotnet: false
|
|
include-templates: true
|
|
cache: false
|
|
|
|
- name: Import
|
|
uses: ./.github/actions/import
|
|
with:
|
|
path: doc/examples/GdsGameProject
|
|
|
|
- name: Export Debug
|
|
shell: bash
|
|
run: |
|
|
cd $GAMEDIR
|
|
$GODOT --headless --export-debug $RUNNER_OS
|
|
|
|
# TODO: check output for unexpected errors
|
|
# Godot 4.2.2 exits with error code 1 on Mac/Win, this is fixed in 4.3
|
|
# https://github.com/godotengine/godot/pull/89229
|
|
- name: Run Debug (workaround)
|
|
if: runner.os != 'Linux' && matrix.gdver == '4.2.2'
|
|
shell: bash
|
|
run: |
|
|
cd $GAMEDIR/export
|
|
./${{ matrix.exe }} --headless --quit-after 10 || true
|
|
rm -rf *
|
|
|
|
- name: Run Debug
|
|
if: runner.os == 'Linux' || matrix.gdver != '4.2.2'
|
|
shell: bash
|
|
run: |
|
|
cd $GAMEDIR/export
|
|
./${{ matrix.exe }} --headless --quit-after 10
|
|
rm -rf *
|
|
|
|
- name: Export Release
|
|
shell: bash
|
|
run: |
|
|
cd $GAMEDIR
|
|
$GODOT --headless --export-release $RUNNER_OS
|
|
|
|
- name: Run Release (workaround)
|
|
shell: bash
|
|
run: |
|
|
cd $GAMEDIR/export
|
|
./${{ matrix.exe }} --headless --quit-after 10 || true
|
|
|
|
test_gdscript:
|
|
needs: [package]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, macos-14, windows-latest]
|
|
gdver: ["4.2.2", "4.3.0-beta.3"]
|
|
include:
|
|
- os: ubuntu-latest
|
|
name: 🐧🧪GDScript
|
|
exe: test.x86_64
|
|
- os: macos-14
|
|
name: 🍎🧪GDScript
|
|
exe: test.app/Contents/MacOS/test
|
|
- os: windows-latest
|
|
name: 🪟🧪GDScript
|
|
exe: test.exe
|
|
exclude:
|
|
# frequently gets stuck on import despite workaround
|
|
- os: windows-latest
|
|
gdver: "4.2.2"
|
|
|
|
name: ${{ matrix.name }} (${{ matrix.gdver }})
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
pattern: imgui-godot-*_imgui*
|
|
|
|
- uses: chickensoft-games/setup-godot@v2
|
|
with:
|
|
version: ${{ matrix.gdver }}
|
|
use-dotnet: false
|
|
include-templates: true
|
|
cache: false
|
|
|
|
- name: Import
|
|
uses: ./.github/actions/import
|
|
with:
|
|
path: doc/test/gdscript
|
|
|
|
- name: Run tests
|
|
uses: ./.github/actions/run-test-project
|
|
with:
|
|
exe: ${{ matrix.exe }}
|
|
|
|
test_csharp:
|
|
needs: [package]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, macos-14, windows-latest]
|
|
gdver: ["4.2.2", "4.3.0-beta.3"]
|
|
include:
|
|
- os: ubuntu-latest
|
|
name: 🐧🧪C#
|
|
exe: test.x86_64
|
|
- os: macos-14
|
|
name: 🍎🧪C#
|
|
exe: test.app/Contents/MacOS/test
|
|
- os: windows-latest
|
|
name: 🪟🧪C#
|
|
exe: test.exe
|
|
exclude:
|
|
# frequently gets stuck on import despite workaround
|
|
- os: windows-latest
|
|
gdver: "4.2.2"
|
|
|
|
name: ${{ matrix.name }} (${{ matrix.gdver }})
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
pattern: imgui-godot-*_imgui*
|
|
|
|
- uses: chickensoft-games/setup-godot@v2
|
|
with:
|
|
version: ${{ matrix.gdver }}
|
|
use-dotnet: true
|
|
include-templates: true
|
|
cache: false
|
|
|
|
- name: Import
|
|
uses: ./.github/actions/import
|
|
with:
|
|
path: doc/test/csharp
|
|
|
|
- name: Build
|
|
shell: bash
|
|
run: |
|
|
cd $GAMEDIR
|
|
dotnet build
|
|
|
|
- name: Run tests
|
|
uses: ./.github/actions/run-test-project
|
|
with:
|
|
exe: ${{ matrix.exe }}
|