Skip to content

ci: add multi-platform compilation pipeline for arcade games#253

Open
seventhback777 wants to merge 1 commit into
thoth-tech:mainfrom
seventhback777:ci/arcade-games-pipeline
Open

ci: add multi-platform compilation pipeline for arcade games#253
seventhback777 wants to merge 1 commit into
thoth-tech:mainfrom
seventhback777:ci/arcade-games-pipeline

Conversation

@seventhback777
Copy link
Copy Markdown

Summary

  • compile-games.yml: GitHub Actions workflow for automated multi-platform builds (Windows x86, Linux x86, Linux ARM/RPi) with incremental compile detection and GitHub Release publishing
  • compile-game.sh: improved script with ARM target handling, asset bundling into platform tarballs, C# runtime injection
  • games/*/config.txt: compile commands for 2dRacer, HomemadePong, Pingpong, Runner_Dash, SkySurge, VentureAdventure, car-race
  • .github/workflows/about.md, advanced-game-design-team/about.md, scripts/about.md: documentation

Test plan

  • Workflow triggers on PR merge to main
  • Changed games are detected and compiled
  • Artifacts published to GitHub Release
  • ARM build completes on RPi target

Add GitHub Actions workflow for automated compilation and release:
- compile-games.yml: multi-platform builds (Windows x86, Linux x86,
  Linux ARM/RPi) with artifact management and GitHub Release publishing;
  incremental compile detection based on changed games per merge
- compile-game.sh: improved compilation logic with ARM target handling,
  asset bundling into platform tarballs, C# runtime injection
- games/*/config.txt: add compile commands and CI configuration for
  2dRacer, HomemadePong, Pingpong, Runner_Dash, SkySurge,
  VentureAdventure, car-race
- .github/workflows/about.md: workflow documentation
- advanced-game-design-team/about.md, scripts/about.md: team docs
Copy link
Copy Markdown

@RealH4D35 RealH4D35 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review for PR #253 (CI Pipeline)

Tested on: Arch Linux

Required fixes (add these upstream):

  • Critical: scripts/compile-game.sh – Remove eval $command (critical security vulnerability).
    The compile-command from config.txt is executed as arbitrary shell code. This permits full command injection (RCE) during both local builds and CI, especially dangerous in pull_request_target workflows.
    Recommended fix: use safe execution (e.g. bash -c "$command" with strict parsing, or array‑based execution with whitelisting).

  • Stability: scripts/compile-game.sh – Replace mkdir published with mkdir -p published to ensure idempotent builds and avoid errors on repeated runs.

Features work as expected:

  • Multi‑platform compilation flow executes correctly on Arch Linux.
  • C# projects correctly publish via skm dotnet publish with ARM64 handling.
  • Asset bundling into compiled/ works as intended – assets are included in the final tarball.
  • Explicit .csproj targeting resolves ambiguity in multi‑project games (e.g. SkySurge, 2dRacer).
  • ARM runtime adjustment to linux-arm64 is functional and produces valid output.
  • Release artifact generation pipeline successfully produces structured tar.gz outputs.

Minor issues (non‑blocking):

  • Several config files contain Windows CRLF (^M) line endings.
  • Some workflow steps suppress failures with warnings, which may allow silent build issues.
  • CI logic is complex and could benefit from simplification for maintainability.

Architectural note:

  • This PR significantly restructures the release system, moving from “commit binaries” to “GitHub release artifacts + reuse strategy”. The change is a meaningful improvement and appears functionally correct after local testing.

Relationship to PR #254:

  • PR #254 fixes real C++ build failures in BelowTheSurface, HomemadePong, Pingpong, and car-race. Without those fixes, the new CI pipeline would fail immediately for these games. Merge PR #254 first, then rebase and merge this PR after the eval vulnerability is resolved.

Not ready to merge – the eval security issue is a blocker. Approve after a safe command execution method is implemented.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants