Skip to content

lua: testing the cause of gc crashing in traces containing userdata #3563

lua: testing the cause of gc crashing in traces containing userdata

lua: testing the cause of gc crashing in traces containing userdata #3563

Workflow file for this run

name: Build Plugin
on:
push:
paths:
- '.github/workflows/compile.yml'
- 'source/**'
- 'gluatests/**'
- 'libs/**'
- 'premake5.lua'
- '!source/public/README.md'
pull_request:
workflow_dispatch:
env:
LOKI_PUBLIC: https://loki-public.raphaelit7.com # A completely seperate public loki server with bare minimum resources exposed for forks to use. (Yes anyone could abuse it but fk em, it doesn't have resources for any useful shit other than this.)
jobs:
build_plugin_windows:
name: "Build Plugin"
uses: RaphaelIT7/gmod-common-module-base/.github/workflows/compile.yml@workflow
with:
PROJECT_NAME: "holylib"
BUILD_64x: "true"
REALM: "sv"
LINUX_FILEEXTENTION: "so"
BUILD_WINDOWS: "true"
BUILD_LINUX: "false"
ARTIFACT_EXPIRE: "7"
SOURCESDK_MINIMAL: "RaphaelIT7/sourcesdk-minimal"
SOURCESDK_MINIMAL_BRANCH: "patch-7"
SOURCESDK_MINIMAL_64XBRANCH: "x86-64-patch-3"
GARRYSMOD_COMMON: "RaphaelIT7/garrysmod_common"
BUILD_CACHE: "true"
UPLOAD_PDB: "true"
build_plugin_linux:
name: "Build Plugin"
uses: RaphaelIT7/gmod-common-module-base/.github/workflows/compile.yml@workflow
with:
PROJECT_NAME: "holylib"
BUILD_64x: "true"
REALM: "sv"
LINUX_FILEEXTENTION: "so"
BUILD_WINDOWS: "false"
ARTIFACT_EXPIRE: "7"
SOURCESDK_MINIMAL: "RaphaelIT7/sourcesdk-minimal"
SOURCESDK_MINIMAL_BRANCH: "patch-7"
SOURCESDK_MINIMAL_64XBRANCH: "x86-64-patch-3"
GARRYSMOD_COMMON: "RaphaelIT7/garrysmod_common"
BUILD_CACHE: "true"
build_testingarea:
name: "Build 32x (Testing Area - Dev)"
if: ${{ (github.event_name == 'push' || github.event_name == 'workflow_dispatch') }}
uses: RaphaelIT7/gmod-common-module-base/.github/workflows/compile.yml@workflow
secrets:
PTERODACTYL_KEY: ${{ secrets.PTERODACTYL_KEY }}
PTERODACTYL_SERVER: ${{ secrets.PTERODACTYL_SERVER }}
PTERODACTYL_URL: ${{ secrets.PTERODACTYL_URL }}
with:
PROJECT_NAME: "holylib"
BUILD_64x: "false"
REALM: "sv"
LINUX_FILEEXTENTION: "so"
BUILD_WINDOWS: "false"
UPLOAD: "pterodactyl"
SOURCESDK_MINIMAL: "RaphaelIT7/sourcesdk-minimal"
SOURCESDK_MINIMAL_BRANCH: "patch-7"
SOURCESDK_MINIMAL_64XBRANCH: "x86-64-patch-3"
GARRYSMOD_COMMON: "RaphaelIT7/garrysmod_common"
PTERODACTYL_RESTART_SLEEPTIME: "0"
PTERODACTYL_RESTART: "true"
BUILD_CACHE: "true"
build_testingarea_dev2: # Could make this use the already created artifact but I'm too lazy rn
name: "Build 32x (Testing Area - Public)"
if: ${{ (github.event_name == 'push' || github.event_name == 'workflow_dispatch') }}
uses: RaphaelIT7/gmod-common-module-base/.github/workflows/compile.yml@workflow
secrets:
PTERODACTYL_KEY: ${{ secrets.PTERODACTYL_KEY }}
PTERODACTYL_SERVER: ${{ secrets.PTERODACTYL_SERVER_PUBLIC }}
PTERODACTYL_URL: ${{ secrets.PTERODACTYL_URL }}
with:
PROJECT_NAME: "holylib"
BUILD_64x: "false"
REALM: "sv"
LINUX_FILEEXTENTION: "so"
BUILD_WINDOWS: "false"
UPLOAD: "pterodactyl"
SOURCESDK_MINIMAL: "RaphaelIT7/sourcesdk-minimal"
SOURCESDK_MINIMAL_BRANCH: "patch-7"
SOURCESDK_MINIMAL_64XBRANCH: "x86-64-patch-3"
GARRYSMOD_COMMON: "RaphaelIT7/garrysmod_common"
PTERODACTYL_RESTART_SLEEPTIME: "0"
PTERODACTYL_RESTART: "true"
BUILD_CACHE: "true"
build_testingarea_64x:
name: "Build 64x (Testing Area - 64x)"
if: ${{ (github.event_name == 'push' || github.event_name == 'workflow_dispatch') }}
uses: RaphaelIT7/gmod-common-module-base/.github/workflows/compile.yml@workflow
secrets:
PTERODACTYL_KEY: ${{ secrets.PTERODACTYL_KEY }}
PTERODACTYL_SERVER: ${{ secrets.PTERODACTYL_SERVER_X64 }}
PTERODACTYL_URL: ${{ secrets.PTERODACTYL_URL }}
with:
PROJECT_NAME: "holylib"
BUILD_64x: "true"
BUILD_32x: "false"
REALM: "sv"
LINUX_FILEEXTENTION: "so"
BUILD_WINDOWS: "false"
UPLOAD: "pterodactyl"
SOURCESDK_MINIMAL: "RaphaelIT7/sourcesdk-minimal"
SOURCESDK_MINIMAL_BRANCH: "patch-7"
SOURCESDK_MINIMAL_64XBRANCH: "x86-64-patch-3"
GARRYSMOD_COMMON: "RaphaelIT7/garrysmod_common"
PTERODACTYL_RESTART_SLEEPTIME: "0"
PTERODACTYL_RESTART: "true"
BUILD_CACHE: "true"
build_ghostinj:
name: "Build GhostInj"
uses: RaphaelIT7/gmod-common-module-base/.github/workflows/compile.yml@workflow
with:
PROJECT_PATH: "ghostinj-dll/"
PROJECT_NAME: "ghostinj"
BUILD_64x: "true"
LINUX_FILEEXTENTION: "dll"
BUILD_WINDOWS: "false"
USE_PREFIX: "false"
ARTIFACT_EXPIRE: "1"
SOURCESDK_MINIMAL: "RaphaelIT7/sourcesdk-minimal"
SOURCESDK_MINIMAL_BRANCH: "patch-7"
SOURCESDK_MINIMAL_64XBRANCH: "x86-64-patch-3"
GARRYSMOD_COMMON: "RaphaelIT7/garrysmod_common"
BUILD_CACHE: "true"
setup_artifacts: # Having this as a matrix won't hurt concurrency since both 32x & 64x finish around the same time
name: "Setup ${{ matrix.arch }} Artifact"
needs: [build_plugin_linux, build_ghostinj]
runs-on: ubuntu-latest
container: debian:bullseye
strategy:
matrix:
include:
- arch: 32x
plugin: gmsv_holylib_linux.so
plugin_artifact: gmsv_holylib_linux.so
vdf: holylib.vdf
ghostinj: ghostinj.dll
ghostinj_artifact: ghostinj.dll
- arch: 64x
plugin: gmsv_holylib_linux64.so
plugin_artifact: gmsv_holylib_linux64.so (64x)
vdf: holylib_64.vdf
ghostinj: ghostinj.dll
ghostinj_artifact: ghostinj.dll (64x)
steps:
- uses: actions/checkout@v4
name: "Checkout required files"
with:
sparse-checkout: |
${{ matrix.vdf }}
gluatests
- uses: actions/download-artifact@v4
name: "Download plugin"
with:
name: "${{ matrix.plugin_artifact }}"
- uses: actions/download-artifact@v4
name: "Download ghostinj"
with:
name: "${{ matrix.ghostinj_artifact }}"
- name: "Create structure"
run: |
mkdir -p garrysmod/lua/bin
mv ${{ matrix.plugin }} garrysmod/lua/bin/
mkdir -p garrysmod/addons
mv ${{ matrix.vdf }} garrysmod/addons
mv gluatests/binaries/*.dll garrysmod/lua/bin/
mv gluatests garrysmod/addons
tar -czf gluatest.tar.gz ${{ matrix.ghostinj }} garrysmod/
tar -czf gluatest_no_ghostinj.tar.gz garrysmod/
- uses: actions/upload-artifact@v4
name: "Upload tar"
with:
name: gluatest_${{ matrix.arch }}
path: gluatest.tar.gz
compression-level: 9
retention-days: 1
- uses: actions/upload-artifact@v4
name: "Upload tar"
with:
name: gluatest_no_ghostinj_${{ matrix.arch }}
path: gluatest_no_ghostinj.tar.gz
compression-level: 9
retention-days: 1
test_32bit:
name: "Test 32x branches"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
branch:
- public
- dev
- prerelease
with:
extra-startup-args: "-usegh"
download-artifact: "gluatest_32x"
no-checkout: "true"
branch: ${{ matrix.branch }}
secrets:
secret-additional-setup: "mkdir -p garrysmod/ && mkdir -p garrysmod/_workflow/ && echo https://loki-public.raphaelit7.com > garrysmod/_workflow/loki_public_host.txt && echo ${{ github.repository }} > garrysmod/_workflow/github_repo.txt && echo ${{ secrets.LOKI_HOST }} > garrysmod/_workflow/loki_host.txt && echo ${{ secrets.LOKI_APIKEY }} > garrysmod/_workflow/loki_api.txt && tar -czf gluatest/docker/_gluatest_artifacts/gm_secrets.tar.gz -C . garrysmod && rm -rf garrysmod"
test_32bit_noghostinj:
name: "Test 32x branches (No GhostInj)"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
branch:
- public
- dev
- prerelease
with:
download-artifact: "gluatest_no_ghostinj_32x"
no-checkout: "true"
branch: ${{ matrix.branch }}
secrets:
secret-additional-setup: "mkdir -p garrysmod/ && mkdir -p garrysmod/_workflow/ && echo https://loki-public.raphaelit7.com > garrysmod/_workflow/loki_public_host.txt && echo ${{ github.repository }} > garrysmod/_workflow/github_repo.txt && echo ${{ secrets.LOKI_HOST }} > garrysmod/_workflow/loki_host.txt && echo ${{ secrets.LOKI_APIKEY }} > garrysmod/_workflow/loki_api.txt && tar -czf gluatest/docker/_gluatest_artifacts/gm_secrets.tar.gz -C . garrysmod && rm -rf garrysmod"
test_64bit:
name: "Test x86-64 branch"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
with:
branch: x86-64
extra-startup-args: "-usegh"
download-artifact: "gluatest_64x"
no-checkout: "true"
secrets:
secret-additional-setup: "mkdir -p garrysmod/ && mkdir -p garrysmod/_workflow/ && echo https://loki-public.raphaelit7.com > garrysmod/_workflow/loki_public_host.txt && echo ${{ github.repository }} > garrysmod/_workflow/github_repo.txt && echo ${{ secrets.LOKI_HOST }} > garrysmod/_workflow/loki_host.txt && echo ${{ secrets.LOKI_APIKEY }} > garrysmod/_workflow/loki_api.txt && tar -czf gluatest/docker/_gluatest_artifacts/gm_secrets.tar.gz -C . garrysmod && rm -rf garrysmod"
test_64bit_noghostinj:
name: "Test x86-64 branch (No GhostInj)"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
with:
branch: x86-64
download-artifact: "gluatest_no_ghostinj_64x"
no-checkout: "true"
secrets:
secret-additional-setup: "mkdir -p garrysmod/ && mkdir -p garrysmod/_workflow/ && echo https://loki-public.raphaelit7.com > garrysmod/_workflow/loki_public_host.txt && echo ${{ github.repository }} > garrysmod/_workflow/github_repo.txt && echo ${{ secrets.LOKI_HOST }} > garrysmod/_workflow/loki_host.txt && echo ${{ secrets.LOKI_APIKEY }} > garrysmod/_workflow/loki_api.txt && tar -czf gluatest/docker/_gluatest_artifacts/gm_secrets.tar.gz -C . garrysmod && rm -rf garrysmod"
test_32x_holylua:
name: "Test 32x branches (HolyLua)"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
branch:
- public
- dev
- prerelease
with:
extra-startup-args: "-usegh -holylib_lua +holylib_module_debug 0"
download-artifact: "gluatest_32x"
no-checkout: "true"
branch: ${{ matrix.branch }}
secrets:
secret-additional-setup: "mkdir -p garrysmod/ && mkdir -p garrysmod/_workflow/ && echo https://loki-public.raphaelit7.com > garrysmod/_workflow/loki_public_host.txt && echo ${{ github.repository }} > garrysmod/_workflow/github_repo.txt && echo ${{ secrets.LOKI_HOST }} > garrysmod/_workflow/loki_host.txt && echo ${{ secrets.LOKI_APIKEY }} > garrysmod/_workflow/loki_api.txt && tar -czf gluatest/docker/_gluatest_artifacts/gm_secrets.tar.gz -C . garrysmod && rm -rf garrysmod"
test_32x_holylua_noghostinj:
name: "Test 32x branches (HolyLua, No GhostInj)"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
branch:
- public
- dev
- prerelease
with:
extra-startup-args: "-holylib_lua +holylib_module_debug 0"
download-artifact: "gluatest_no_ghostinj_32x"
no-checkout: "true"
branch: ${{ matrix.branch }}
secrets:
secret-additional-setup: "mkdir -p garrysmod/ && mkdir -p garrysmod/_workflow/ && echo https://loki-public.raphaelit7.com > garrysmod/_workflow/loki_public_host.txt && echo ${{ github.repository }} > garrysmod/_workflow/github_repo.txt && echo ${{ secrets.LOKI_HOST }} > garrysmod/_workflow/loki_host.txt && echo ${{ secrets.LOKI_APIKEY }} > garrysmod/_workflow/loki_api.txt && tar -czf gluatest/docker/_gluatest_artifacts/gm_secrets.tar.gz -C . garrysmod && rm -rf garrysmod"
test_64bit_holylua:
name: "Test x86-64 branch (HolyLua)"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
with:
branch: x86-64
extra-startup-args: "-usegh -holylib_lua +holylib_module_debug 0"
download-artifact: "gluatest_64x"
no-checkout: "true"
secrets:
secret-additional-setup: "mkdir -p garrysmod/ && mkdir -p garrysmod/_workflow/ && echo https://loki-public.raphaelit7.com > garrysmod/_workflow/loki_public_host.txt && echo ${{ github.repository }} > garrysmod/_workflow/github_repo.txt && echo ${{ secrets.LOKI_HOST }} > garrysmod/_workflow/loki_host.txt && echo ${{ secrets.LOKI_APIKEY }} > garrysmod/_workflow/loki_api.txt && tar -czf gluatest/docker/_gluatest_artifacts/gm_secrets.tar.gz -C . garrysmod && rm -rf garrysmod"
test_64bit_holylua_noghostinj:
name: "Test x86-64 branch (HolyLua, No GhostInj)"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
with:
branch: x86-64
extra-startup-args: "-holylib_lua +holylib_module_debug 0"
download-artifact: "gluatest_no_ghostinj_64x"
no-checkout: "true"
secrets:
secret-additional-setup: "mkdir -p garrysmod/ && mkdir -p garrysmod/_workflow/ && echo https://loki-public.raphaelit7.com > garrysmod/_workflow/loki_public_host.txt && echo ${{ github.repository }} > garrysmod/_workflow/github_repo.txt && echo ${{ secrets.LOKI_HOST }} > garrysmod/_workflow/loki_host.txt && echo ${{ secrets.LOKI_APIKEY }} > garrysmod/_workflow/loki_api.txt && tar -czf gluatest/docker/_gluatest_artifacts/gm_secrets.tar.gz -C . garrysmod && rm -rf garrysmod"
test_32x_luajit:
name: "Test 32x branches (LuaJIT)"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
branch:
- public
- dev
- prerelease
with:
extra-startup-args: "-usegh -holylib_enable_luajit 1 +holylib_module_debug 0"
download-artifact: "gluatest_32x"
no-checkout: "true"
branch: ${{ matrix.branch }}
secrets:
secret-additional-setup: "mkdir -p garrysmod/ && mkdir -p garrysmod/_workflow/ && echo https://loki-public.raphaelit7.com > garrysmod/_workflow/loki_public_host.txt && echo ${{ github.repository }} > garrysmod/_workflow/github_repo.txt && echo ${{ secrets.LOKI_HOST }} > garrysmod/_workflow/loki_host.txt && echo ${{ secrets.LOKI_APIKEY }} > garrysmod/_workflow/loki_api.txt && tar -czf gluatest/docker/_gluatest_artifacts/gm_secrets.tar.gz -C . garrysmod && rm -rf garrysmod"
test_64bit_luajit:
name: "Test x86-64 branch (LuaJIT)"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
with:
branch: x86-64
extra-startup-args: "-usegh -holylib_enable_luajit 1 +holylib_module_debug 0"
download-artifact: "gluatest_64x"
no-checkout: "true"
secrets:
secret-additional-setup: "mkdir -p garrysmod/ && mkdir -p garrysmod/_workflow/ && echo https://loki-public.raphaelit7.com > garrysmod/_workflow/loki_public_host.txt && echo ${{ github.repository }} > garrysmod/_workflow/github_repo.txt && echo ${{ secrets.LOKI_HOST }} > garrysmod/_workflow/loki_host.txt && echo ${{ secrets.LOKI_APIKEY }} > garrysmod/_workflow/loki_api.txt && tar -czf gluatest/docker/_gluatest_artifacts/gm_secrets.tar.gz -C . garrysmod && rm -rf garrysmod"
# -------
# HolyLib Build summary DLL jobs
# -------
generate_test_summary:
name: "Generate Summary"
needs: [test_32bit, test_32bit_noghostinj, test_64bit, test_64bit_noghostinj, test_32x_holylua, test_32x_holylua_noghostinj, test_64bit_holylua, test_64bit_holylua_noghostinj, test_32x_luajit, test_64bit_luajit]
runs-on: ubuntu-latest
container: raphaelit7/gmod-builder:latest_64x
steps:
- uses: actions/checkout@v4
name: "Checkout build tool files"
with:
sparse-checkout: source/_prebuildtools
- name: "Generate Summary"
run: |
cd source/_prebuildtools
chmod +x luajit_64
./luajit_64 _workflow_summary.lua "${{github.repository}}" "${{env.LOKI_PUBLIC}}" "${{secrets.LOKI_HOST}}" "${{secrets.LOKI_APIKEY}}" "${{github.run_number}}"
echo "$(cat generated_summary.md)" > $GITHUB_STEP_SUMMARY
# --------------------
# HolyLib - gmod_tests
# We run gmod_tests repo to ensure that we didn't break any gmod functions unknowingly.
# --------------------
setup_gmod_tests_artifacts:
name: "Setup gmod_tests ${{ matrix.arch }} Artifact"
needs: setup_artifacts
runs-on: ubuntu-latest
container: debian:bullseye
strategy:
matrix:
arch: [32x, 64x]
steps:
- uses: actions/checkout@v4
name: "Checkout gmod_tests repo"
with:
sparse-checkout: lua
repository: 'RaphaelIT7/gmod_tests'
path: 'gmod_tests'
- uses: actions/download-artifact@v4
name: "Download ${{ matrix.arch }} artifact"
with:
name: "gluatest_${{ matrix.arch }}"
- name: "Setup structure"
run: |
mkdir -p garrysmod/lua/bin
mkdir -p garrysmod/addons
tar -xzf gluatest.tar.gz
mv gmod_tests garrysmod/addons
mv ghostinj.dll ghostinj2.dll
mkdir -p garrysmod/lua/bin/gmod_tests/maps
mv garrysmod/addons/gluatests/maps garrysmod/addons/gmod_tests/maps
rm -rf garrysmod/addons/gluatests
tar -czf gmod_tests.tar.gz ghostinj2.dll garrysmod/
tar -czf gmod_tests_no_ghostinj.tar.gz garrysmod/
- uses: actions/upload-artifact@v4
name: "Upload tar"
with:
name: gmod_tests_${{ matrix.arch }}
path: gmod_tests.tar.gz
compression-level: 9
retention-days: 1
- uses: actions/upload-artifact@v4
name: "Upload tar"
with:
name: gmod_tests_no_ghostinj_${{ matrix.arch }}
path: gmod_tests_no_ghostinj.tar.gz
compression-level: 9
retention-days: 1
test_gmod_tests_32bit:
name: "Test 32x branches (gmod_tests)"
needs: setup_gmod_tests_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
branch:
- public
- dev
- prerelease
artifact:
- gmod_tests_32x
- gmod_tests_no_ghostinj_32x
with:
branch: ${{ matrix.branch }}
extra-startup-args: "-usegh -maxplayers 64"
download-artifact: ${{ matrix.artifact }}
no-checkout: "true"
additional-setup: "wget -q https://github.com/RaphaelIT7/gmod-holytest/releases/latest/download/linux32.tar.gz -O gluatest/docker/_gluatest_artifacts/linux32.tar.gz"
map: gm_glua_tests
test_gmod_tests_64bit:
name: "Test x86-64 branch (gmod_tests)"
needs: setup_gmod_tests_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
artifact:
- gmod_tests_64x
- gmod_tests_no_ghostinj_64x
with:
branch: x86-64
extra-startup-args: "-usegh -maxplayers 64"
download-artifact: ${{ matrix.artifact }}
no-checkout: "true"
additional-setup: "wget -q https://github.com/RaphaelIT7/gmod-holytest/releases/latest/download/linux64.tar.gz -O gluatest/docker/_gluatest_artifacts/linux64.tar.gz"
map: gm_glua_tests
test_gmod_tests_32bit_with_ivpreplacement:
name: "Test 32x branches (gmod_tests & VPhysics replacement)"
needs: setup_gmod_tests_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
branch:
- public
- dev
- prerelease
artifact:
- gmod_tests_32x
- gmod_tests_no_ghostinj_32x
with:
branch: ${{ matrix.branch }}
extra-startup-args: "-usegh -maxplayers 64 -holylib_replaceivp"
download-artifact: ${{ matrix.artifact }}
no-checkout: "true"
additional-setup: "wget -q https://github.com/RaphaelIT7/gmod-holytest/releases/latest/download/linux32.tar.gz -O gluatest/docker/_gluatest_artifacts/linux32.tar.gz"
map: gm_glua_tests
test_gmod_tests_64bit_with_ivpreplacement:
name: "Test x86-64 branch (gmod_tests & VPhysics replacement)"
needs: setup_gmod_tests_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
artifact:
- gmod_tests_64x
- gmod_tests_no_ghostinj_64x
with:
branch: x86-64
extra-startup-args: "-usegh -maxplayers 64 -holylib_replaceivp"
download-artifact: ${{ matrix.artifact }}
no-checkout: "true"
additional-setup: "wget -q https://github.com/RaphaelIT7/gmod-holytest/releases/latest/download/linux64.tar.gz -O gluatest/docker/_gluatest_artifacts/linux64.tar.gz"
map: gm_glua_tests
test_gmod_tests_32bit_with_luajit:
if: false
name: "Test 32x branches (gmod_tests & VPhLuaJITysics replacement)"
needs: setup_gmod_tests_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
branch:
- public
- dev
- prerelease
artifact:
- gmod_tests_32x
- gmod_tests_no_ghostinj_32x
with:
branch: ${{ matrix.branch }}
extra-startup-args: "-usegh -maxplayers 64 -holylib_enable_luajit 1"
download-artifact: ${{ matrix.artifact }}
no-checkout: "true"
additional-setup: "wget -q https://github.com/RaphaelIT7/gmod-holytest/releases/latest/download/linux32.tar.gz -O gluatest/docker/_gluatest_artifacts/linux32.tar.gz"
map: gm_glua_tests
test_gmod_tests_64bit_with_luajit:
if: false
name: "Test x86-64 branch (gmod_tests & LuaJIT replacement)"
needs: setup_gmod_tests_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
artifact:
- gmod_tests_64x
- gmod_tests_no_ghostinj_64x
with:
branch: x86-64
extra-startup-args: "-usegh -maxplayers 64 -holylib_enable_luajit 1"
download-artifact: ${{ matrix.artifact }}
no-checkout: "true"
additional-setup: "wget -q https://github.com/RaphaelIT7/gmod-holytest/releases/latest/download/linux64.tar.gz -O gluatest/docker/_gluatest_artifacts/linux64.tar.gz"
map: gm_glua_tests
test_32bit_find_crash:
if: false # always() Enable it if a unknown crash is happening. We'll test every single module.
name: "Find the crash cause"
needs: setup_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
fail-fast: false
matrix:
module:
- holylib
- gameevent
- serverplugin
- sourcetv
- threadpoolfix
- stringtable
- precachefix
- pvs
- surffix
- filesystem
- util
- concommand
- vprof
- cvars
- bitbuf
- networking
- steamworks
- pas
- bass
- systimer
- voicechat
- physenv
- net
- entitylist
- httpserver
- gameserver
- soundscape
- luajit
with:
branch: dev
extra-startup-args: "-usegh -holylib_startdisabled -holylib_enable_${{ matrix.module }} 1"
download-artifact: "gluatest_32x"
no-checkout: "true"
# -------
# HolyLib Example DLL jobs
# -------
build_exampledll_linux:
name: "Build Plugin"
uses: RaphaelIT7/gmod-common-module-base/.github/workflows/compile.yml@workflow
with:
PROJECT_PATH: "example-module-dll/"
PROJECT_NAME: "exampledll"
BUILD_64x: "true"
REALM: "sv"
BUILD_WINDOWS: "false"
ARTIFACT_EXPIRE: "1"
BUILD_CACHE: "true"
setup_exampledll_artifacts:
name: "Setup exampledll ${{ matrix.arch }} Artifact"
needs: [setup_artifacts, build_exampledll_linux]
runs-on: ubuntu-latest
container: debian:bullseye
strategy:
matrix:
include:
- arch: 32x
dll: gmsv_exampledll_linux.dll
dll_artifact: gmsv_exampledll_linux.dll
- arch: 64x
dll: gmsv_exampledll_linux64.dll
dll_artifact: gmsv_exampledll_linux64.dll (64x)
steps:
- uses: actions/download-artifact@v4
name: "Download ${{ matrix.arch }} artifact"
with:
name: "gluatest_${{ matrix.arch }}"
- uses: actions/download-artifact@v4
name: "Download module"
with:
name: "${{ matrix.dll_artifact }}"
- name: "Setup structure"
run: |
mkdir -p garrysmod/lua/bin
mkdir -p garrysmod/addons
mkdir -p garrysmod/holylib/cfg/
mv ${{ matrix.dll }} garrysmod/lua/bin/
cat <<EOF > garrysmod/holylib/cfg/dlls.json
[
{
"path": "garrysmod/lua/bin/${{ matrix.dll }}",
"name": "ExampleDLL"
}
]
EOF
tar -xzf gluatest.tar.gz
tar -czf gluatest_exampledll.tar.gz ghostinj.dll garrysmod/
tar -czf gluatest_exampledll_no_ghostinj.tar.gz garrysmod/
- uses: actions/upload-artifact@v4
name: "Upload tar"
with:
name: gluatest_exampledll_${{ matrix.arch }}
path: gluatest_exampledll.tar.gz
compression-level: 9
retention-days: 1
- uses: actions/upload-artifact@v4
name: "Upload tar"
with:
name: gluatest_exampledll_no_ghostinj_${{ matrix.arch }}
path: gluatest_exampledll_no_ghostinj.tar.gz
compression-level: 9
retention-days: 1
test_exampledll_32bit:
name: "Test ExampleDLL 32x branches"
needs: setup_exampledll_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
branch:
- public
- dev
- prerelease
with:
branch: ${{ matrix.branch }}
extra-startup-args: "-usegh"
download-artifact: "gluatest_exampledll_32x"
no-checkout: "true"
test_exampledll_32bit_noghostinj:
name: "Test ExampleDLL 32x branches (No GhostInj)"
needs: setup_exampledll_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
strategy:
matrix:
branch:
- public
- dev
- prerelease
with:
branch: ${{ matrix.branch }}
download-artifact: "gluatest_exampledll_no_ghostinj_32x"
no-checkout: "true"
test_exampledll_64bit:
name: "Test ExampleDLL x86-64 branch"
needs: setup_exampledll_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
with:
branch: x86-64
extra-startup-args: "-usegh"
download-artifact: "gluatest_exampledll_64x"
no-checkout: "true"
test_exampledll_64bit_noghostinj:
name: "Test ExampleDLL x86-64 branch (No GhostInj)"
needs: setup_exampledll_artifacts
uses: RaphaelIT7/GLuaTest/.github/workflows/run_tests.yml@holylib_v2
with:
branch: x86-64
download-artifact: "gluatest_exampledll_no_ghostinj_64x"
no-checkout: "true"