typelevel / typelevel/sbt-typelevel
Use separate jobs for JVM/JS/Native?
Nobody has claimed this yet.
- Dominant language
- Scala
- Stars
- 185
- Forks
- 62
- PR merge metrics
- No merged PRs in 30d
Description
This is another good idea h/t @bblfish.
The reason for this change is that the matrix axes for the different platforms are fundamentally different:
- JVM projects generally want to test different on different JVMs and occasionally different OSes
- JS projects only need one JVM, but then there is Node.js, browsers, etc. to test against
- Native projects also only need one JVM, but I presume that testing again different OSes may be a bigger deal here
Furthermore, these platforms require different setups e.g. installing Node.js or browsers or native libraries.
Currently we use a single job with a matrix with axes for each of these things. Then we add a bunch of exclusions and conditional steps to remove all the combinations that don't make sense. But we still end up with confusingly-named jobs e.g. a JVM job that lists Node.js as its JS runtime because that is the value in the matrix even though its obviously unused.
Doing this right will be a fairly non-trivial change, so I have to think more about it. But I do think it has good potential make cross-platform builds nicer and easier to work with.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no files or tests. Start by reviewing the current CI matrix, its exclusions, and the platform-specific setup steps; done means separate JVM, JS, and Native jobs with platform-appropriate matrix axes, setup, and job names.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, scala
- Domain
- build-system, ci-cd
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100