typelevel / typelevel/sbt-typelevel

Use separate jobs for JVM/JS/Native?

Open
#179 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement question
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.