stackgl / headless-gl

🎃 Windowless WebGL for node.js
1.73k stars 166 forks source link

Add GitHub Action to test the code on Linux, macOS, and Windows #264

Closed cclauss closed 3 months ago

cclauss commented 11 months ago

https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs

Test results: https://github.com/cclauss/headless-gl/actions

https://chromium.googlesource.com/angle/angle might be a better of modern angle.

cclauss commented 3 months ago

@dhritzkiv Your review, please. It would be great to have automated testing.

dhritzkiv commented 3 months ago

Thank you for taking this on! It will be great to have CI in one, hassle-free place.

A few questions:

dhritzkiv commented 3 months ago

As for angle upgrades, I'd keep it separate from this PR.

cclauss commented 3 months ago

Please merge this so we have tests in place. Then in future PRs we can add more OSes, Node versions, builds, and releases.

dhritzkiv commented 3 months ago

I intend to.

This is a good start, but I'd love to see the tests passing primarily on Node v20 on Linux and Windows first. (Node v16 or v18, as well as macOS tests would be a bonus, but are not necessary).

Right now, this CI configuration, as the majority of images are excluded/failing, doesn't offer much over Travis CI. Granted, this configuration does works better than Appveyor for Windows tests (as that CI environment has been non-functional for us for the last 6 months), so I suppose this PR is a net-positive in that regard.

I'll concede that prebuilds/packaging/releasing can be added later.

Ultimately, I don't see a point merging this in a half-working state, unless I'm missing something?

cclauss commented 3 months ago

Do you pay for Travis CI or are you working on free credits?

It seems lik 10386 no plan found is the test that fails on Appveyor as well as GHAs. I do not have the expertise to fix that test.

As said above, it is much easier to enable tests after the guardrails are in place.

dhritzkiv commented 3 months ago

Do you pay for Travis CI or are you working on free credits?

Working on free OSS credits.

cclauss commented 3 months ago

Travis credits will run out really fast.

dhritzkiv commented 3 months ago

Yes, that's why I limited Travis to run only on the latest two LTS version of Node on Ubuntu. No other versions of Node, and no macOS.

Once in a while, we run out of credits, but reaching out to Travis helps to replenish them. Not ideal, but not the worst.

Migrating to GitHub actions will help avoid this, for sure.

dhritzkiv commented 3 months ago

Many years ago, we used to get intermittent no plan found errors in our tests (both in Travis, AppVeyor, and locally), and almost always the workaround was to re-run the tests.

Eventually, these stopped happening entirely, whether due to using newer versions of Node, or updated test-running dependencies. Everything was good for about 4 years. Unfortunately, it seems these errors are back. :/

It looks like your contribution in #280 failed the first time, but succeeded on a subsequent run. This might suggest that re-running GitHub actions until they succeed might be the temporary answer.

dhritzkiv commented 3 months ago

Is it possible to force a Github action workflow run to be re-run if it failed? Doing so manually would be fine.

cclauss commented 3 months ago

Re-run failed joobs

dhritzkiv commented 3 months ago

Okay, I see that these tests are flaky, and has nothing to do with the configuration/environment of the GitHub Actions specifically.

I see your latest commits restore the other OSes, and they are surprisingly passing.

I will merge this MR later this evening.

cclauss commented 3 months ago

All passed at https://github.com/cclauss/headless-gl/actions

https://github.com/coactions/setup-xvfb was the key to Ubuntu.