mirror of
https://github.com/love2d/love.git
synced 2026-08-12 16:40:57 +02:00
611 lines
25 KiB
YAML
611 lines
25 KiB
YAML
name: continuous-integration
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
Linux:
|
|
runs-on: ${{ matrix.runner }}
|
|
strategy:
|
|
matrix:
|
|
runner: [ubuntu-22.04, ubuntu-24.04-arm]
|
|
permissions:
|
|
checks: write
|
|
pull-requests: write
|
|
env:
|
|
ALSOFT_CONF: love2d-${{ github.sha }}/testing/resources/alsoft.conf
|
|
VK_LAYER_SETTINGS_PATH: love2d-${{ github.sha }}/testing/resources/vk_layer_settings.txt
|
|
DISPLAY: :99
|
|
steps:
|
|
- name: Update APT
|
|
run: sudo apt-get update
|
|
- name: Install Dependencies
|
|
run: |
|
|
sudo apt-get install --assume-yes build-essential git make cmake autoconf automake \
|
|
libtool pkg-config libasound2-dev libpulse-dev libaudio-dev \
|
|
libjack-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev \
|
|
libxfixes-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev \
|
|
libxtst-dev \
|
|
libgl1-mesa-dev libdbus-1-dev libudev-dev libgles2-mesa-dev \
|
|
libegl1-mesa-dev libibus-1.0-dev fcitx-libs-dev libsamplerate0-dev \
|
|
libsndio-dev libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev \
|
|
libcurl4-openssl-dev libfuse2 wmctrl openbox mesa-vulkan-drivers \
|
|
libpipewire-0.3-dev libwayland-dev libdecor-0-dev liburing-dev \
|
|
libvulkan1
|
|
- name: Install Vulkan SDK
|
|
if: ${{ runner.arch == 'X64' }}
|
|
run: |
|
|
set -e
|
|
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc
|
|
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.3.283-jammy.list https://packages.lunarg.com/vulkan/1.3.283/lunarg-vulkan-1.3.283-jammy.list
|
|
sudo apt-get update
|
|
sudo apt-get install --assume-yes vulkan-sdk
|
|
- name: Checkout love-appimage-source
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: love2d/love-appimage-source
|
|
ref: main
|
|
- name: Checkout LÖVE
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: love2d-${{ github.sha }}
|
|
- name: Get Dependencies for AppImage
|
|
shell: python
|
|
env:
|
|
LOVE_BRANCH: ${{ github.sha }}
|
|
run: |
|
|
import os
|
|
for i in range(250):
|
|
if os.system(f"make getdeps LOVE_BRANCH={os.environ['LOVE_BRANCH']}") == 0:
|
|
raise SystemExit(0)
|
|
raise Exception("make getdeps failed")
|
|
- name: Build AppImage
|
|
run: make LOVE_BRANCH=${{ github.sha }}
|
|
- name: Print LuaJIT branch
|
|
run: git -C LuaJIT-v2.1 branch -v
|
|
# start xvfb for test running
|
|
- name: Start xvfb and openbox
|
|
run: |
|
|
echo "Starting XVFB on $DISPLAY"
|
|
Xvfb $DISPLAY -screen 0, 360x240x24 &
|
|
echo "XVFBPID=$!" >> $GITHUB_ENV
|
|
# wait for xvfb to startup (3s is the same amount xvfb-run waits by default)
|
|
sleep 3
|
|
openbox &
|
|
echo "OPENBOXPID=$!" >> $GITHUB_ENV
|
|
# linux opengl tests
|
|
- name: Run Test Suite (opengl)
|
|
run: |
|
|
chmod a+x love-${{ github.sha }}.AppImage
|
|
./love-${{ github.sha }}.AppImage love2d-${{ github.sha }}/testing/main.lua --all --isRunner --renderers opengl
|
|
- name: Love Test Report (opengl)
|
|
id: report1
|
|
uses: ellraiser/love-test-report@main
|
|
with:
|
|
name: Love Testsuite Linux
|
|
title: test-report-linux-${{ runner.arch }}-opengl
|
|
path: love2d-${{ github.sha }}/testing/output/lovetest_all.md
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Zip Test Output (opengl)
|
|
run: |
|
|
7z a -tzip test-output-linux-opengl-${{ runner.arch }}.zip love2d-${{ github.sha }}/testing/output/
|
|
- name: Artifact Test Output (opengl)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-output-linux-${{ runner.arch }}-opengl-${{ steps.report1.outputs.conclusion }}
|
|
path: test-output-linux-${{ runner.arch }}-opengl.zip
|
|
# linux opengles tests
|
|
- name: Run Test Suite (opengles)
|
|
env:
|
|
LOVE_GRAPHICS_DEBUG: 1
|
|
run: |
|
|
export LOVE_GRAPHICS_USE_OPENGLES=1
|
|
./love-${{ github.sha }}.AppImage love2d-${{ github.sha }}/testing/main.lua --all --isRunner --renderers opengl
|
|
- name: Love Test Report (opengles)
|
|
uses: ellraiser/love-test-report@main
|
|
id: report2
|
|
with:
|
|
name: Love Testsuite Linux
|
|
title: test-report-linux-${{ runner.arch }}-opengles
|
|
path: love2d-${{ github.sha }}/testing/output/lovetest_all.md
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Zip Test Output (opengles)
|
|
run: |
|
|
7z a -tzip test-output-linux-opengles-${{ runner.arch }}.zip love2d-${{ github.sha }}/testing/output/
|
|
- name: Artifact Test Output (opengles)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-output-linux-${{ runner.arch }}-opengles-${{ steps.report2.outputs.conclusion }}
|
|
path: test-output-linux-${{ runner.arch }}-opengles.zip
|
|
# linux vulkan tests
|
|
- name: Run Test Suite (vulkan)
|
|
env:
|
|
LOVE_GRAPHICS_DEBUG: ${{ runner.arch == 'ARM64' && '0' || '1' }}
|
|
LOVE_GRAPHICS_VULKAN_ALLOW_SOFTWARE: 1
|
|
run: |
|
|
./love-${{ github.sha }}.AppImage love2d-${{ github.sha }}/testing/main.lua --all --isRunner --renderers vulkan
|
|
- name: Love Test Report (vulkan)
|
|
uses: ellraiser/love-test-report@main
|
|
id: report3
|
|
with:
|
|
name: Love Testsuite Linux
|
|
title: test-report-linux-${{ runner.arch }}-vulkan
|
|
path: love2d-${{ github.sha }}/testing/output/lovetest_all.md
|
|
- name: Zip Test Output (vulkan)
|
|
run: |
|
|
7z a -tzip test-output-linux-vulkan-${{ runner.arch }}.zip love2d-${{ github.sha }}/testing/output/
|
|
- name: Artifact Test Output (vulkan)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-output-linux-${{ runner.arch }}-vulkan-${{ steps.report3.outputs.conclusion }}
|
|
path: test-output-linux-${{ runner.arch }}-vulkan.zip
|
|
- name: Stop xvfb and openbox
|
|
# should always stop xvfb and openbox even if other steps failed
|
|
if: always()
|
|
run: |
|
|
kill $XVFBPID
|
|
kill $OPENBOXPID
|
|
- name: Artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-linux-${{ runner.arch }}.AppImage
|
|
path: love-${{ github.sha }}.AppImage
|
|
- name: Artifact Debug Symbols
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-${{ runner.arch }}-AppImage-debug
|
|
path: love-${{ github.sha }}.AppImage-debug.tar.gz
|
|
- name: Check Tests Passing
|
|
if: steps.report1.outputs.conclusion == 'failure' || steps.report2.outputs.conclusion == 'failure' || steps.report3.outputs.conclusion == 'failure'
|
|
run: |
|
|
echo "${{ steps.report1.outputs.failed }} opengl tests failed"
|
|
echo "${{ steps.report2.outputs.failed }} opengles tests failed"
|
|
echo "${{ steps.report3.outputs.failed }} vulkan tests failed"
|
|
exit 1
|
|
|
|
Windows:
|
|
runs-on: windows-2025
|
|
permissions:
|
|
checks: write
|
|
pull-requests: write
|
|
env:
|
|
ALSOFT_CONF: megasource/libs/love/testing/resources/alsoft.conf
|
|
VK_ICD_FILENAMES: ${{ github.workspace }}\mesa\x64\lvp_icd.x86_64.json
|
|
VULKAN_SDK: C:/VulkanSDK/1.3.231.1
|
|
strategy:
|
|
matrix:
|
|
platform: [x64, ARM64]
|
|
defaults:
|
|
run:
|
|
shell: cmd
|
|
continue-on-error: ${{ matrix.platform == 'ARM64' }}
|
|
steps:
|
|
- name: Define Variables
|
|
id: vars
|
|
run: |
|
|
rem JIT Modules
|
|
if "${{ matrix.platform }}" == "x64" (
|
|
(echo jitmodules=1)>> "%GITHUB_OUTPUT%"
|
|
) else (
|
|
(echo jitmodules=0)>> "%GITHUB_OUTPUT%"
|
|
)
|
|
|
|
rem Architecture-Specific Switch
|
|
goto ${{ matrix.platform }}
|
|
exit /b 1
|
|
|
|
:Win32
|
|
(echo arch=x86)>> "%GITHUB_OUTPUT%"
|
|
(echo angle=0)>> "%GITHUB_OUTPUT%"
|
|
echo nofiles=warn>> "%GITHUB_OUTPUT%"
|
|
exit /b 0
|
|
|
|
:x64
|
|
(echo arch=x64)>> "%GITHUB_OUTPUT%"
|
|
(echo angle=0)>> "%GITHUB_OUTPUT%"
|
|
echo nofiles=warn>> "%GITHUB_OUTPUT%"
|
|
exit /b 0
|
|
|
|
:ARM64
|
|
(echo arch=arm64)>> "%GITHUB_OUTPUT%"
|
|
(echo angle=1)>> "%GITHUB_OUTPUT%"
|
|
echo nofiles=ignore>> "%GITHUB_OUTPUT%"
|
|
echo moredef=-DLOVE_EXTRA_DLLS=%CD%\angle\libEGL.dll;%CD%\angle\libGLESv2.dll>> "%GITHUB_OUTPUT%"
|
|
exit /b 0
|
|
- name: Install NSIS
|
|
run: winget install nsis --disable-interactivity --accept-source-agreements --accept-package-agreements
|
|
- name: Download pdbstr
|
|
run: curl -Lfo pdbstr.nupkg https://www.nuget.org/api/v2/package/Microsoft.Debugging.Tools.PdbStr/20230731.1609.0
|
|
- name: Download srctool
|
|
run: curl -Lfo srctool.nupkg https://www.nuget.org/api/v2/package/Microsoft.Debugging.Tools.SrcTool/20230731.1609.0
|
|
- name: Extract Tools and Add to PATH
|
|
run: |
|
|
mkdir debugtools
|
|
cd debugtools
|
|
if errorlevel 1 exit /b 1
|
|
7z e ..\srctool.nupkg content/amd64/srctool.exe
|
|
if errorlevel 1 exit /b 1
|
|
7z e ..\pdbstr.nupkg content/amd64/pdbstr.exe
|
|
if errorlevel 1 exit /b 1
|
|
echo %CD%>>%GITHUB_PATH%
|
|
- name: Setup Python 3.10
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.10"
|
|
- name: Download source_index.py
|
|
run: curl -Lfo source_index.py https://gist.github.com/MikuAuahDark/d9c099f5714e09a765496471c2827a55/raw/df34956052035f3473c5f01861dfb53930d06843/source_index.py
|
|
- name: Clone Megasource
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: megasource
|
|
repository: love2d/megasource
|
|
ref: main
|
|
- id: megasource
|
|
name: Get Megasource Commit SHA
|
|
shell: python
|
|
run: |
|
|
import os
|
|
import subprocess
|
|
|
|
result = subprocess.run("git -C megasource rev-parse HEAD".split(), check=True, capture_output=True, encoding="UTF-8")
|
|
commit = result.stdout.split()[0]
|
|
with open(os.environ["GITHUB_OUTPUT"], "w", encoding="UTF-8") as f: f.write(f"commit={commit}")
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: megasource/libs/love
|
|
- name: Download ANGLE
|
|
uses: robinraju/release-downloader@v1.9
|
|
if: steps.vars.outputs.angle == '1'
|
|
with:
|
|
repository: MikuAuahDark/angle-winbuild
|
|
tag: cr_5249
|
|
fileName: angle-win-${{ steps.vars.outputs.arch }}.zip
|
|
tarBall: false
|
|
zipBall: false
|
|
out-file-path: angle
|
|
- name: Extract ANGLE
|
|
if: steps.vars.outputs.angle == '1'
|
|
working-directory: angle
|
|
run: 7z x angle-win-${{ steps.vars.outputs.arch }}.zip
|
|
- name: Remove Strawbery Perl From Path
|
|
# https://github.com/actions/runner-images/issues/6627
|
|
# In particular, this is not pretty, but even CMAKE_IGNORE_PREFIX_PATH
|
|
# cannot help in this case.
|
|
run: |
|
|
move /y C:\Strawberry C:\Strawberry_not_in_PATH
|
|
exit /b 0
|
|
- name: Configure
|
|
env:
|
|
CFLAGS: /Zi
|
|
CXXFLAGS: /Zi
|
|
LDFLAGS: /DEBUG:FULL /OPT:REF /OPT:ICF
|
|
run: cmake -Bbuild -Smegasource -T v145 -A ${{ matrix.platform }} --install-prefix %CD%\install -DCMAKE_PDB_OUTPUT_DIRECTORY=%CD%\pdb ${{ steps.vars.outputs.moredef }}
|
|
- name: Install
|
|
run: cmake --build build --target PACKAGE --config Release -j2
|
|
- name: Copy LuaJIT lua51.pdb
|
|
run: |
|
|
copy /Y build\libs\LuaJIT\src\lua51.pdb pdb\Release\lua51.pdb
|
|
exit /b 0
|
|
- name: Add srcsrv to PATH
|
|
run: |
|
|
echo C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv>>%GITHUB_PATH%
|
|
- name: Embed Source Index into PDBs
|
|
run: |
|
|
python source_index.py ^
|
|
--source %CD%\megasource\libs\love https://raw.githubusercontent.com/${{ github.repository }}/${{ github.sha }} ^
|
|
--source %CD%\megasource https://raw.githubusercontent.com/love2d/megasource/${{ steps.megasource.outputs.commit }} ^
|
|
--source %CD%\build\libs\LuaJIT https://raw.githubusercontent.com/love2d/megasource/${{ steps.megasource.outputs.commit }}/libs/LuaJIT ^
|
|
pdb\Release\*.pdb
|
|
- name: Artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-windows-${{ steps.vars.outputs.arch }}
|
|
path: |
|
|
build/*.zip
|
|
build/*.exe
|
|
if-no-files-found: ${{ steps.vars.outputs.nofiles }}
|
|
- name: Artifact JIT Modules
|
|
if: steps.vars.outputs.jitmodules == '1'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-windows-jitmodules
|
|
path: build/libs/LuaJIT/src/jit/*.lua
|
|
- name: Artifact PDB
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-windows-${{ steps.vars.outputs.arch }}-dbg
|
|
path: pdb/Release/*.pdb
|
|
# install mesa for graphic tests
|
|
- name: Install Mesa
|
|
if: steps.vars.outputs.arch != 'ARM64'
|
|
run: |
|
|
curl -L --output mesa.7z --url https://github.com/pal1000/mesa-dist-win/releases/download/24.2.4/mesa3d-24.2.4-release-msvc.7z
|
|
7z x mesa.7z -o*
|
|
powershell.exe mesa\systemwidedeploy.cmd 1
|
|
# build love to use for the tests
|
|
- name: Build Test Exe
|
|
if: steps.vars.outputs.arch != 'ARM64'
|
|
run: cmake --build build --config Release --target install
|
|
# windows opengl tests
|
|
- name: Run Tests (opengl)
|
|
if: steps.vars.outputs.arch != 'ARM64'
|
|
env:
|
|
LOVE_GRAPHICS_DEBUG: 1
|
|
run: |
|
|
echo 'check dir'
|
|
ls
|
|
powershell.exe ./install/lovec.exe ./megasource/libs/love/testing/main.lua --all --isRunner --renderers opengl
|
|
- name: Love Test Report (opengl)
|
|
id: report1
|
|
if: steps.vars.outputs.arch != 'ARM64'
|
|
uses: ellraiser/love-test-report@main
|
|
with:
|
|
name: Love Testsuite Windows ${{ steps.vars.outputs.arch }} (opengl)
|
|
title: test-report-windows-${{ steps.vars.outputs.arch }}-opengl
|
|
path: megasource/libs/love/testing/output/lovetest_all.md
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Zip Test Output (opengl)
|
|
if: steps.vars.outputs.arch != 'ARM64'
|
|
run: |
|
|
7z a -tzip test-output-windows-${{ steps.vars.outputs.arch }}-opengl.zip megasource/libs/love/testing/output/
|
|
- name: Artifact Test Output (opengl)
|
|
if: steps.vars.outputs.arch != 'ARM64'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-output-windows-${{ steps.vars.outputs.arch }}-opengl-${{ steps.report1.outputs.conclusion }}
|
|
path: test-output-windows-${{ steps.vars.outputs.arch }}-opengl.zip
|
|
# windows opengles tests
|
|
- name: Run Tests (opengles)
|
|
if: steps.vars.outputs.arch != 'ARM64'
|
|
env:
|
|
LOVE_GRAPHICS_DEBUG: 1
|
|
LOVE_GRAPHICS_USE_OPENGLES: 1
|
|
run: |
|
|
powershell.exe ./install/lovec.exe ./megasource/libs/love/testing/main.lua --all --isRunner --renderers opengl
|
|
- name: Love Test Report (opengles)
|
|
id: report2
|
|
if: steps.vars.outputs.arch != 'ARM64'
|
|
uses: ellraiser/love-test-report@main
|
|
with:
|
|
name: Love Testsuite Windows ${{ steps.vars.outputs.arch }} (opengles)
|
|
title: test-report-windows-${{ steps.vars.outputs.arch }}-opengles
|
|
path: megasource/libs/love/testing/output/lovetest_all.md
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Zip Test Output (opengles)
|
|
if: steps.vars.outputs.arch != 'ARM64'
|
|
run: |
|
|
7z a -tzip test-output-windows-${{ steps.vars.outputs.arch }}-opengles.zip megasource/libs/love/testing/output/
|
|
- name: Artifact Test Output (opengles)
|
|
if: steps.vars.outputs.arch != 'ARM64'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-output-windows-${{ steps.vars.outputs.arch }}-opengles-${{ steps.report2.outputs.conclusion }}
|
|
path: test-output-windows-${{ steps.vars.outputs.arch }}-opengles.zip
|
|
- name: Check Tests Passing
|
|
if: steps.report1.outputs.conclusion == 'failure' || steps.report2.outputs.conclusion == 'failure'
|
|
run: |
|
|
echo "${{ steps.report1.outputs.failed }} opengl tests failed"
|
|
echo "${{ steps.report2.outputs.failed }} opengles tests failed"
|
|
exit 1
|
|
# # install vulkan
|
|
# - name: Install Vulkan
|
|
# if: steps.vars.outputs.arch != 'ARM64'
|
|
# run: |
|
|
# curl -L --show-error --output VulkanSDK.exe https://sdk.lunarg.com/sdk/download/1.3.231.1/windows/VulkanSDK-1.3.231.1-Installer.exe
|
|
# ./VulkanSDK.exe --root C:/VulkanSDK/1.3.231.1 --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.core com.lunarg.vulkan.vma
|
|
# curl -L --show-error --output vulkan-runtime.zip https://sdk.lunarg.com/sdk/download/1.3.231.1/windows/vulkan-runtime-components.zip
|
|
# 7z e vulkan-runtime.zip -o"C:/VulkanSDK/1.3.231.1/runtime/x64" */x64
|
|
# copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "mesa/x64"
|
|
# copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "C:/Windows/System32"
|
|
# copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "love-12.0-win64/love-12.0-win64"
|
|
# reg add HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\Drivers /v "${{ github.workspace }}\mesa\x64\lvp_icd.x86_64.json" /t REG_DWORD /d 0
|
|
# powershell.exe C:/VulkanSDK/1.3.231.1/runtime/x64/vulkaninfo.exe --summary
|
|
# # windows vulkan tests
|
|
# - name: Run Tests (vulkan)
|
|
# if: steps.vars.outputs.arch != 'ARM64'
|
|
# env:
|
|
# LOVE_GRAPHICS_DEBUG: 1
|
|
# LOVE_GRAPHICS_VULKAN_ALLOW_SOFTWARE: 1
|
|
# run: |
|
|
# powershell.exe ./install/lovec.exe ./megasource/libs/love/testing/main.lua --all --isRunner --renderers vulkan
|
|
# - name: Love Test Report (vulkan)
|
|
# if: steps.vars.outputs.arch != 'ARM64'
|
|
# uses: ellraiser/love-test-report@main
|
|
# with:
|
|
# name: Love Testsuite Windows ${{ steps.vars.outputs.arch }} (vulkan)
|
|
# title: test-report-windows-${{ steps.vars.outputs.arch }}-vulkan
|
|
# path: megasource/libs/love/testing/output/lovetest_all.md
|
|
# - name: Zip Test Output (vulkan)
|
|
# if: steps.vars.outputs.arch != 'ARM64'
|
|
# run: |
|
|
# 7z a -tzip test-output-windows-${{ steps.vars.outputs.arch }}-vulkan.zip megasource/libs/love/testing/output/
|
|
# - name: Artifact Test Output (vulkan)
|
|
# if: steps.vars.outputs.arch != 'ARM64'
|
|
# uses: actions/upload-artifact@v4
|
|
# with:
|
|
# name: test-output-windows-${{ steps.vars.outputs.arch }}-vulkan
|
|
# path: test-output-windows-${{ steps.vars.outputs.arch }}-vulkan.zip
|
|
|
|
macOS:
|
|
runs-on: macos-latest
|
|
permissions:
|
|
checks: write
|
|
pull-requests: write
|
|
env:
|
|
ALSOFT_CONF: testing/resources/alsoft.conf
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Clone Dependencies
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: apple-dependencies
|
|
repository: love2d/love-apple-dependencies
|
|
ref: main
|
|
- name: Move Dependencies
|
|
run: |
|
|
mv apple-dependencies/macOS/Frameworks platform/xcode/macosx
|
|
mv apple-dependencies/shared platform/xcode
|
|
- name: Build
|
|
run:
|
|
xcodebuild clean archive -project platform/xcode/love.xcodeproj -scheme love-macosx -configuration Release -destination generic/platform=macOS -archivePath love-macos.xcarchive
|
|
- name: Export Archive
|
|
run:
|
|
xcodebuild -exportArchive -archivePath love-macos.xcarchive -exportPath love-macos -exportOptionsPlist platform/xcode/macosx/macos-copy-app.plist
|
|
- name: Zip Archive
|
|
run:
|
|
ditto -c -k --sequesterRsrc --keepParent love-macos/love.app love-macos.zip
|
|
- name: Artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-macos
|
|
path: love-macos.zip
|
|
# macos opengl tests
|
|
- name: Run Test Suite (OpenGL)
|
|
env:
|
|
LOVE_GRAPHICS_DEBUG: 1
|
|
run: |
|
|
ls
|
|
love-macos/love.app/Contents/MacOS/love ./testing/main.lua --all --isRunner --renderers opengl
|
|
- name: Love Test Report (OpenGL)
|
|
id: report1
|
|
uses: ellraiser/love-test-report@main
|
|
with:
|
|
name: Love Testsuite MacOS
|
|
title: test-report-macos-opengl
|
|
path: testing/output/lovetest_all.md
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Zip Test Output (OpenGL)
|
|
run: |
|
|
7z a -tzip test-output-macos-opengl.zip ./testing/output/
|
|
- name: Artifact Test Output (OpenGL)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-output-macos-opengl-${{ steps.report1.outputs.conclusion }}
|
|
path: test-output-macos-opengl.zip
|
|
- name: Check Tests Passing (OpenGL)
|
|
if: steps.report1.outputs.conclusion == 'failure'
|
|
run: |
|
|
echo "${{ steps.report1.outputs.failed }} opengl tests failed"
|
|
exit 1
|
|
# macos metal tests
|
|
- name: Run Test Suite (Metal)
|
|
env:
|
|
LOVE_GRAPHICS_DEBUG: 1
|
|
run: |
|
|
ls
|
|
love-macos/love.app/Contents/MacOS/love ./testing/main.lua --all --isRunner --renderers metal
|
|
- name: Love Test Report (Metal)
|
|
id: report2
|
|
uses: ellraiser/love-test-report@main
|
|
with:
|
|
name: Love Testsuite MacOS (Metal)
|
|
title: test-report-macos-metal
|
|
path: testing/output/lovetest_all.md
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Zip Test Output (Metal)
|
|
run: |
|
|
7z a -tzip test-output-macos-metal.zip ./testing/output/
|
|
- name: Artifact Test Output (Metal)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-output-macos-metal-${{ steps.report2.outputs.conclusion }}
|
|
path: test-output-macos-metal.zip
|
|
- name: Check Tests Passing (Metal)
|
|
if: steps.report2.outputs.conclusion == 'failure'
|
|
run: |
|
|
echo "${{ steps.report2.outputs.failed }} metal tests failed"
|
|
exit 1
|
|
|
|
iOS-Simulator:
|
|
runs-on: macos-14
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Clone Dependencies
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: apple-dependencies
|
|
repository: love2d/love-apple-dependencies
|
|
ref: main
|
|
- name: Move Dependencies
|
|
run: |
|
|
mv apple-dependencies/iOS/libraries platform/xcode/ios
|
|
mv apple-dependencies/shared platform/xcode
|
|
- name: Build
|
|
run:
|
|
xcodebuild -project platform/xcode/love.xcodeproj -scheme love-ios -configuration Release -destination 'platform=iOS Simulator,name=iPhone 15'
|
|
|
|
Android:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
build_type: [Debug, Release]
|
|
env:
|
|
GRADLE_OPTS: "-Dorg.gradle.jvmargs='-Xmx4G'"
|
|
steps:
|
|
- name: Prepare Environment
|
|
run: sudo apt-get update && curl -Lfo kitware-archive.sh https://apt.kitware.com/kitware-archive.sh && sudo bash ./kitware-archive.sh
|
|
- name: Install Dependencies
|
|
run: sudo apt-get install ninja-build cmake
|
|
- name: Checkout love-android
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: love2d/love-android
|
|
submodules: false
|
|
- name: Setup Java 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: adopt-hotspot
|
|
java-version: 17
|
|
cache: gradle
|
|
- name: Clone Megasource
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: app/src/main/cpp/megasource
|
|
repository: love2d/megasource
|
|
ref: main
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: app/src/main/cpp/love
|
|
- name: Build Normal Flavor
|
|
run: bash ./gradlew assembleNormalRecord${{ matrix.build_type }}
|
|
- name: Build Release-specific Binaries
|
|
if: ${{ matrix.build_type == 'Release' }}
|
|
run: bash ./gradlew bundleNormalNoRecordRelease bundleEmbedRecordRelease bundleEmbedNoRecordRelease
|
|
- name: Artifact (Normal debug APK)
|
|
if: ${{ matrix.build_type == 'Debug' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-android-debug.apk
|
|
path: app/build/outputs/apk/normalRecord/debug/app-normal-record-debug.apk
|
|
- name: Artifact (Normal unsigned APK)
|
|
if: ${{ matrix.build_type == 'Release' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-android.apk
|
|
path: app/build/outputs/apk/normalRecord/release/app-normal-record-release-unsigned.apk
|
|
- name: Artifact (Normal AAB w/o recording)
|
|
if: ${{ matrix.build_type == 'Release' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-android-ps.aab
|
|
path: app/build/outputs/bundle/normalNoRecordRelease/app-normal-noRecord-release.aab
|
|
- name: Artifact (Embed AAB)
|
|
if: ${{ matrix.build_type == 'Release' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-android-embed-record.aab
|
|
path: app/build/outputs/bundle/embedRecordRelease/app-embed-record-release.aab
|
|
- name: Artifact (Embed AAB w/o recording)
|
|
if: ${{ matrix.build_type == 'Release' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-android-embed.aab
|
|
path: app/build/outputs/bundle/embedNoRecordRelease/app-embed-noRecord-release.aab
|
|
- name: Artifact (Debug symbols)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: love-android-unstripped-debugsyms-${{ matrix.build_type }}
|
|
path: app/build/intermediates/cxx
|