Enhances the `details-check` workflow to run more efficiently on pull requests.
This commit introduces logic to:
- Trigger the workflow on pull requests to the `develop` branch.
- Analyze changed files to determine the scope of the checks required:
- Run a full matrix if core `details`-related scripts are modified.
- Run a targeted matrix only for servers whose `config-lgsm` files are changed.
- Skip the check entirely if no relevant files are touched.
- Provide a concise summary of the `details`, `parse-game-details`, and `query-raw` outcomes directly in the GitHub Actions job summary.
This optimization significantly reduces CI/CD run times and resource consumption for pull requests by avoiding unnecessary checks across all game servers, improving developer efficiency.
The distro CSV file was being fetched with an absolute path
instead of a repository-relative path, causing malformed URLs
like /master//home/user/lgsm/data/debian-12.csv
Changed fn_fetch_file_github first parameter from "${datadir}"
to "lgsm/data" to match the correct repository path structure.
Fixes#4856: ERROR: Downloading debian-12.csv on update-lgsm
- Replace libncursesw5 with libncursesw6 (removed from Debian 13)
- Replace libxml2-utils with libxml2 (removed from Debian 13)
- Add Debian 13 to bug report and feature request distro options
Fixes#4847: libncursesw5 and libxml2-utils do not exist on Debian 13
Add comments explaining that GitHub Models access may not be available in all
environments and that 401 (Unauthorized) errors are expected and handled
gracefully. The workflow will skip AI triage silently but continue processing
the issue through other automation.
The GitHub Models API requires specialized authentication that is not available
through secrets.GITHUB_TOKEN. The workflow consistently fails with 401 Unauthorized.
The rule-based label automation (labeler.yml) continues to function correctly
and provides automated labeling based on structured template fields.
The v3 release does not exist for JasonEtco/is-sponsor-label-action.
Use v2 which is the latest stable release. The Node.js 24 compatibility
is handled by the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 environment variable.
- Add AI triage workflow that flags low-quality issues and requests missing info
- Add sync-game-labels script and workflow to maintain game labels from serverlist
- Add structured label rules for severity, reproducibility, priority, and scope
- Update labeler workflow to support both issues and PRs with dedicated config
- Add PR review guidance instructions for maintainers
* Changed `dotnet-runtime-8.0` to `dotnet-runtime-10.0` in dependency lists for Ubuntu and Debian.
* Enhanced the `check_deps.sh` script to dynamically check for the required .NET runtime version.
* Added a warning for users on older distributions regarding potential missing .NET runtimes.
* feat(bb): add BrainBread server update functionality
* Implemented `update_bb.sh` to handle updates for BrainBread servers.
* Integrated new update checks in `command_check_update.sh` and `command_update.sh`.
* Updated `install_server_files.sh` to include BrainBread server installation logic.
Co-authored-by: Copilot <[email protected]>
* feat(bb): enhance BrainBread update process
* Updated `fn_update_dl` to use `remotebuildhash` for file integrity.
* Added handling for missing `remotebuildhash` to default to "nohash".
* Included `update_steamcmd.sh` call to ensure both Steam app and GitHub package updates are performed.
Co-authored-by: Copilot <[email protected]>
* fix(steamcmd): ensure core HL1 files are present after appid 90 update
* Added checks to verify the presence of core HL1 files after updating appid 90.
* If files are missing, an update is forced and errors are logged.
* Exits the script if files are still missing after the retry.
* fix(steamcmd): update error messages for GoldSrc engine
* Changed appid 90 references to GoldSrc for clarity.
* Updated error messages to reflect the correct engine context.
* Ensures users are informed about missing core HL1 files after GoldSrc updates.
Co-authored-by: Copilot <[email protected]>
* feat(serverlist): add Military Conflict: Vietnam server entry
* Introduced new server entry for `Military Conflict: Vietnam` in `serverlist.csv`.
* Enhances the variety of game servers available for users.
---------
Co-authored-by: Copilot <[email protected]>
Dev builds of papermc will not work on older jre, albeit it's still in alpha/beta, some time in the future it will be the stable build. I have not noticed any issues running the stable build with jre-25.
* fix(workflows): support legacy game servers on older Ubuntu/Debian runners
Multiple game servers have glibc compatibility requirements that prevent
them from running on Ubuntu 24.04:
- bfv, bf1942: Require Ubuntu <= 22.04 or Debian <= 12 (glibc 2.31)
- btl, onset: Require Ubuntu <= 20.04 or Debian <= 11 (glibc 2.31)
Changes:
- Add runner field to details-check matrix generation
- Map legacy servers to appropriate ubuntu-XX.04 LTS runners
- Modern servers continue on ubuntu-latest (24.04)
- Update details-check.yml to use dynamic runner from matrix
This ensures all server tests pass in CI without breaking modern server
testing on current GitHub Actions runners.
* fix(workflows): run details-check on PRs and normalize ref resolution
Details Check was not running for PR #4903 because the workflow only
triggered on push to develop/workflow_dispatch. Also, pull_request refs
(refs/pull/*) are not valid raw-content refs for GitHub downloads.
Changes:
- Trigger Details Check on pull_request to develop
- Add LGSM_REF env resolved to PR head SHA or branch ref name
- Use LGSM_REF for linuxgsm.sh download and LGSM_GITHUBBRANCH usage
- Use LGSM_REF in matrix generation when fetching serverlist.csv
This ensures legacy server jobs (bfv, bf1942, btl, onset) are included
and executed during PR validation.
* fix(workflows): run update-check on PRs and normalize ref resolution
Apply the same PR-safe workflow behavior used in details-check:
- Trigger update-check on pull_request to develop
- Resolve LGSM_REF to PR head SHA or branch ref name
- Use LGSM_REF for linuxgsm.sh download and LGSM_GITHUBBRANCH calls
This ensures update-check validates PR changes instead of only running on
develop pushes.
* fix(check_deps): avoid false Debian version check on Ubuntu
Ubuntu reports ID_LIKE=debian, which caused Debian upper-version checks to
run on Ubuntu and incorrectly fail legacy titles on Ubuntu 22.04.x.
Use distroid==debian for Debian limits in legacy compatibility guards so:
- bf1942/bfv pass on Ubuntu 22.04.x as intended
- btl/onset limits still apply correctly
- Debian limits still apply on Debian only
* fix(workflows): add PR trigger to version-check; replace archived action in docker trigger
version-check.yml:
- Add pull_request trigger targeting develop so version format is
validated on PRs before merge
trigger-docker-build.yml:
- Replace archived convictional/[email protected] with
native gh CLI approach (trigger + watch run ID)
- Uses GH_TOKEN env var with PERSONAL_ACCESS_TOKEN secret
- gh workflow run dispatches the workflow; gh run watch polls for
completion and exits non-zero on failure, preserving job dependencies
* fix(workflows): use timestamp filter to reliably identify triggered run ID
Using --limit 1 to find the run ID is a race condition if another run
of the same workflow starts concurrently. Capture a timestamp before
dispatching and pass --created >=${before} to gh run list so we
always select the run we just triggered.
* remove pr check
Add support for the Military Conflict: Vietnam dedicated game server.
Supersedes #4594 (original WIP PR from @knoxed — completing the implementation).
Changes:
- Added mcvserver default configuration
- Added mcv to serverlist and all distro CSV files
- Added install_config handler for mcvserver
- Added dependency info for all distros
- Added game icons
- Fixed CI workflow issues
Co-authored-by: Knoxed <[email protected]>
* fix(steamcmd): add libtinfo.so.5 symlink fix for readline warning
On distros shipping libtinfo.so.6 but not libtinfo.so.5 (Ubuntu 22.04+,
Debian 12+), SteamCMD prints:
WARNING: Failed to load 32-bit libtinfo.so.5 or libncurses.so.5.
Please install (lib32tinfo5 / ncurses-libs.i686 / equivalent) to
enable readline.
lib32tinfo5 does not exist on Ubuntu 24.04. Creating a user-space
symlink inside the steamcmd directory resolves the warning without
requiring root or a missing package.
* fix(steamcmd): address Copilot review feedback on libtinfo symlink fix
- Iterate over all candidate steamcmd dirs (HOME/.steam/steamcmd,
steamcmddir, HOME/.local/share/Steam/steamcmd) matching the pattern
used for steamclient.so fixes elsewhere in the module
- Replace '! -f && ! -L' guard with '! -e' so broken/dangling symlinks
are also repaired rather than silently skipped
- Add mkdir -p before ln in case the directory does not exist yet
- Capture exitcode=$? after ln so fn_fix_msg_end reports failures
---------
Co-authored-by: LinuxGSM <[email protected]>
- Set DEFAULT_BRANCH to current branch to fix 'master not found' error
- Use fetch-depth: 0 so GITHUB_BEFORE_SHA can be resolved
- Set update_etl.sh executable bit (BASH_EXEC)
- Fix .codespellrc tab indentation (EDITORCONFIG)
- Add .gitleaks.toml allowlist for GA4 Measurement Protocol API secret (GITLEAKS)
- Fix .markdown-lint.yml: disable MD030/MD013/MD033/MD041/MD051 to match
existing repo style (MARKDOWN)
The API version lookup was setting remotebuildversion but all subsequent
jq queries used ${remotebuild}, which was never populated. This caused
'Unable to get remote build' on every install/update.
The 'section' block containing 'fields' and 'accessory' was missing its
closing '}' before EOF, producing malformed JSON and breaking all Slack
alerts silently (jq -c . would fail on the payload).
Also add missing ntfy alert settings to tf2cserver _default.cfg for
consistency with other server configs.
- Set DEFAULT_BRANCH to current branch to fix 'master not found' error
- Use fetch-depth: 0 so GITHUB_BEFORE_SHA can be resolved
- Set update_etl.sh executable bit (BASH_EXEC)
- Fix .codespellrc tab indentation (EDITORCONFIG)
- Add .gitleaks.toml allowlist for GA4 Measurement Protocol API secret (GITLEAKS)
- Fix .markdown-lint.yml: disable MD030/MD013/MD033/MD041/MD051 to match
existing repo style (MARKDOWN)
The API version lookup was setting remotebuildversion but all subsequent
jq queries used ${remotebuild}, which was never populated. This caused
'Unable to get remote build' on every install/update.
The 'section' block containing 'fields' and 'accessory' was missing its
closing '}' before EOF, producing malformed JSON and breaking all Slack
alerts silently (jq -c . would fail on the payload).
Also add missing ntfy alert settings to tf2cserver _default.cfg for
consistency with other server configs.
* fix(install_config): replace cp -nv with explicit file existence check
Newer coreutils (Ubuntu 24.04+, Debian 13+) emit a portability warning
when using cp -n: 'behavior of -n is non-portable and may change in future'.
Replace all cp -nv usages with an explicit [ ! -f dest ] guard, which is
portable across all distros and preserves the same OK/SKIP/FAIL behaviour.
* fix(install_config): use -e and -L checks to handle broken symlinks
Using only -f missed broken symlinks (-e returns false for them but
-L returns true). Use both checks to match the skip behaviour of cp -n.
* feat(etl): add downloader and update support for ET: Legacy
Refactors ET: Legacy to use a dedicated update module instead of hardcoded installation files. The new update_etl.sh module leverages the GitHub API to check for, download, and apply the latest builds from GameServerManagers/etlserver-build.
* feat(etl): add update_etl module to core modules
Registers the update_etl.sh module within the core modules to enable the fetching and execution of ET: Legacy updates.
* feat(etl): add update commands to core_getopt
Ensures that the update and check-update commands are available for ET: Legacy by including the etl shortname in the getopt command registration logic.
* feat(etl): improve local build detection
Updates the game log directory to the "legacy" folder and enhances local build detection by parsing etconsole.log for version information, falling back to build.txt if necessary.
* feat(etl): update glibc requirement and log path detection
Updates the minimum glibc requirement to 2.17 and switches the local build detection to use the gamelogdir variable instead of a hardcoded path.
* feat(etl): improve MD5 hash extraction
Updates the MD5 hash parsing to use a specific regex for 32-character hexadecimal strings, providing a more robust extraction from the release body than relying on the last field of the line.
* feat(xnt): add SHA512 hash extraction for remote builds
Updates the Xonotic update module to fetch the SHA512 hash from the remote download server, allowing for build verification and identification.
* fix(xnt): derive sha512 URL from remotebuildfilename not remotebuildtag
Tag format is xonotic-v0.8.6 but the sha512 file is named xonotic-0.8.6.sha512
(without the v). Using remotebuildtag directly produced a 404. Deriving from
remotebuildfilename (which already has the v stripped by tr -d v) gives the
correct URL.
* fix(core_dl): fix zip extraction with extractsrc across devices and non-empty dirs
Using mv to move extracted directories fails in two cases:
- Cross-device moves (e.g. tmp and serverfiles on different Docker volumes)
- Target directory already exists and is non-empty (update scenario)
Replace find+mv with cp -a which handles both cases by copying recursively
and merging into the destination. Also replace the hardcoded 'Xonotic'
temp_extractdir with ${extractsrc} to be generic.
* fix(core_dl): remove duplicate ellipsis in hash verification message
1.0 Changed binary paths, so these needs to be updated manually right now. Hopefully someone can merge this.
Co-authored-by: Daniel Gibbs <[email protected]>