question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Restructure build matrix

See original GitHub issue

Our current build configuration operates on the following sets:

  • operating systems OS = { Ubuntu, Windows, macOs }
  • Java versions J = { 8, 11, 16 }
  • modularity M = { true, false }
  • JUnit versions U = { 5.7.0, 5.7.1, 5.8.0-M1 }

But we don’t build all possible combinations OS x J x M x U, which would be 54 builds and slightly above the 20 builds GitHub runs in parallel for free. Even if we upgrade to team, which raises the limit to 60 (and costs 4$/member/month), we’d be just one additional Java or JUnit version away from going overboard.

Instead we build:

  • OS x J x { false } x { 5.7.1 } in main-build.yml (9 builds)
  • OS x { 11, 16 } x { true } x { 5.7.1 } in module-build.yml (6 builds)
  • { Ubuntu } x { 8 } x { false } x U in junit5-build.yml (3 builds)

I find that combination of builds somewhat arbitrary. Also, just one more Java or JUnit version and we blow the limit of 20 builds and need to wait twice as long (worst case) for the entire set to finish.

Can we find a better way to create builds?

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:12 (12 by maintainers)

github_iconTop GitHub Comments

1reaction
aepflicommented, May 29, 2021

@nipafx @Bukama @beatngu13 what do you think about such an approach? good bad ugly?

1reaction
aepflicommented, May 3, 2021

I would also evaluate what do we really need on a merge request and what can be handled as an action on a merge into develop.

Generally speaking it is nice, if everything runs during a merge request - but is it really needed or is it needed all the time?

For verification if the code works (which imho the CI should guarantee) a small build is enough (to be honest we need it to get reminded of spotless).

What if we define two sets of CI jobs - the ones which run all the time, short fast, small set - and the ones we need to run before merging. It will not block a contributor and the contributor will get fast feedback. On the other hand, we as maintainer could eg. label or comment on the MR that we are ready to merge which could kickoff a bunch of more tests. Those builds are normally not timely critical, therefore we could even have more builds and exceed the limit.

This is just a suggestion and some thoughts about this. eg. GitLab is doing this for their Repositories too.

Read more comments on GitHub >

github_iconTop Results From Across the Web

What to Do Just Before a Matrix Restructure
The first order of business is to create a plan for how to reconnect all the business processes that will be disrupted from...
Read more >
Making Matrix Organizations Actually Work
No org structure is without flaws, but matrices don't deserve their bad reputation.
Read more >
What is a matrix organization and how does it work? - Asana
The matrix design keeps open communication between teams and can help companies create more innovative products and services.
Read more >
5 Steps to Include in the Company Reorganization Process
Consider the pros and cons of different types of organizational structures: hierarchical, horizontal, matrix, etc. As you're working through options within ...
Read more >
How do I restructure my adjacency matrix? - Kumu Help Docs
If your data is structured as an adjacency matrix, the matrix will need to be restructured as a list of connections, before it...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found