bass: enable this again after figuring out I was a fucking idiot #4004
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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" | |
| NO_SAVE_CACHE: "true" # Cache will only be updated by main compiles in build_plugin_linux job | |
| 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" | |
| NO_SAVE_CACHE: "true" # Cache will only be updated by main compiles in build_plugin_linux job | |
| 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" | |
| NO_SAVE_CACHE: "true" # Cache will only be updated by main compiles in build_plugin_linux job | |
| 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" | |
| build_stripped_module: | |
| # This saves us useless compiles when it would already fail | |
| # + This way we always use the newest cache reducing compile time. | |
| # Update: NEVERMIND, this turned out to slow down the entire build process simply because we hit the runner limit | |
| # And less stuff could run in parallel. | |
| # Doing this paralle to the main builds gives us at minimim 1min time with ~34 runners available to run parallel | |
| # needs: build_plugin_linux | |
| name: "Build Stripped modules" | |
| uses: RaphaelIT7/gmod-common-module-base/.github/workflows/compile.yml@workflow | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| module: | |
| - autorefresh | |
| - holylib | |
| - gameevent | |
| - serverplugin | |
| - sourcetv | |
| - stringtable | |
| - precachefix | |
| - pvs | |
| - surffix | |
| - filesystem | |
| - util | |
| - concommand | |
| - vprof | |
| - cvars | |
| - bitbuf | |
| - networking | |
| - steamworks | |
| - pas | |
| - bass | |
| - systimer | |
| - voicechat | |
| - physenv | |
| - net | |
| - entitylist | |
| - httpserver | |
| - gameserver | |
| - soundscape | |
| - luajit | |
| - holylua | |
| with: | |
| PROJECT_NAME: "holylib" | |
| BUILD_64x: "true" | |
| REALM: "sv" | |
| LINUX_FILEEXTENTION: "so" | |
| BUILD_WINDOWS: "false" | |
| ARTIFACT_EXPIRE: "7" | |
| UPLOAD: "none" | |
| BUILD_CACHE: "true" | |
| NO_SAVE_CACHE: "true" | |
| SOURCESDK_MINIMAL: "RaphaelIT7/sourcesdk-minimal" | |
| SOURCESDK_MINIMAL_BRANCH: "patch-7" | |
| SOURCESDK_MINIMAL_64XBRANCH: "x86-64-patch-3" | |
| GARRYSMOD_COMMON: "RaphaelIT7/garrysmod_common" | |
| ADDITIONAL_LINUX_32_SETUP: 'rm -rf source/ivp && cd source/modules/ && ls | grep -xvF ${{ matrix.module }}.cpp | xargs rm -f -- && cd ../../' | |
| ADDITIONAL_LINUX_64_SETUP: 'rm -rf source/ivp && cd source/modules/ && ls | grep -xvF ${{ matrix.module }}.cpp | xargs rm -f -- && cd ../../' | |
| 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}}" "0" "${{github.event_name}}" | |
| 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: | |
| if: false | |
| 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: | |
| if: false | |
| 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: | |
| - autorefresh | |
| - holylib | |
| - gameevent | |
| - serverplugin | |
| - sourcetv | |
| - 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 ExampleDLL" | |
| 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" |