Skip to content

[3d] Add GitHub Actions CI workflow (build, test, artifact upload on tag) #29

@kalwalt

Description

@kalwalt

Summary

Add a GitHub Actions CI workflow covering submodule checkout, Emscripten build, test suite, and artifact upload on tag

Environment

  • Product/Service: FeatureSET-Display — CI/CD
  • File: .github/workflows/ci.yml (new)

Problem Description

No CI exists. Changes are merged without automated build or test validation. There is no way to verify that the wasm build succeeds or that the JS test suite passes on every pull request.

Expected Behavior

A GitHub Actions workflow runs on every push and pull request. It:

  • Checks out the repository including all submodules.
  • Sets up the Emscripten toolchain via mymindstorm/setup-emsdk.
  • Runs npm run build and npm run build-es6.
  • Runs the test suite from issue 3c (npm test).
  • On tag pushes, uploads build artifacts (dist/, build/).

README carries build/CI status badges.

Actual Behavior

No CI workflow. No automated build or test validation.

Tasks

  • Add .github/workflows/ci.yml with:
    • actions/checkout with submodules: recursive
    • mymindstorm/setup-emsdk for Emscripten
    • npm ci + npm run build + npm run build-es6
    • npm test (depends on issue 3c)
    • actions/upload-artifact step gated on github.ref_type == 'tag'
  • Add build and test status badges to README.md

Impact

High (long-term) — No CI means every merged PR is a potential silent regression. Essential for maintaining the codebase going forward.

Additional Context

Dependencies: Issue 3c (test system) must exist before the npm test step is meaningful. Issue 3b (Emscripten flag cleanup) should land first to ensure the build flags are correct. The mymindstorm/setup-emsdk action supports pinning a specific Emscripten version via the emscripten-version input — use the same version currently in use locally to avoid build drift.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions