FLAMEGPU/FLAMEGPU2

CI Matrix Syntax

Opened this issue · 0 comments

Our current (functional) matrix syntax is not technically correct according to the web editor:

Matrix options must only contain primitive values

I.e cudacxx is an object so not a primitive value.

This is currently functional, but given it is incorrect it could break if GitHub makes a change.

The matrix options are like this as they are dependent upon one another - i.e. the oldest gpu arch is cuda version specific.
Some Github support discussions do suggest using a list as a valid syntax however that doesn't sound like a primitive value to me.

We could potentially:

  • have a dictionary/map from a single value in the matrix which is used to lookup the currently nested compoents, storing the key in the matrix. This may increase the maintenance burden slightly, and might require reading from disk.
  • Switch to a dynamic build matrix (and reusable workflows), also allowing our CI to be more efficient or thorough depending on why it was triggered.
    • Reusable workflows would also allow a massive de-duplication of CI (i.e. the draft pr workflow duplicates the contents of 4 other workflow files currently.
    • a dynamic matrix would also mean we could react to say PR labels to perform thorough builds, or do lighter CI until a PR is marked as ready for review etc.
  • Something else.