Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lookup: declare bankruptcy on flaky modules #959

Merged
merged 3 commits into from
Sep 24, 2023
Merged

lookup: declare bankruptcy on flaky modules #959

merged 3 commits into from
Sep 24, 2023

Conversation

Trott
Copy link
Member

@Trott Trott commented Sep 7, 2023

Remove all modules that failed the latest 20.x release run. We need to be able to trust that a failed CITGM run is something that needs to be investigated.

Checklist
  • npm test passes
  • contribution guidelines followed
    here

@Trott
Copy link
Member Author

Trott commented Sep 7, 2023

Pinging people who commented/reviewed the other PR that I messed up on. Please re-review. Thanks!

@ljharb
@RafaelGSS
@ruyadorno
@GeoffreyBooth
@anonrig

lib/lookup.json Outdated Show resolved Hide resolved
lib/lookup.json Outdated Show resolved Hide resolved
@codecov-commenter
Copy link

codecov-commenter commented Sep 7, 2023

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 96.44%. Comparing base (5ed8640) to head (ebe04c6).
Report is 53 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #959   +/-   ##
=======================================
  Coverage   96.44%   96.44%           
=======================================
  Files          28       28           
  Lines        2139     2139           
=======================================
  Hits         2063     2063           
  Misses         76       76           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@Trott
Copy link
Member Author

Trott commented Sep 7, 2023

@RafaelGSS suggested:

Can we ping module authors here, so they are aware of this action? We should merge it anyway

Sure. Pinging maintainers who have modules that are being removed from the Node.js release test suite. There is no doubt a simple workaround or fix for many of these cases (like "let's skip testing on Windows for now for this module") and we can certainly add things back where that's the case.

@marijnh @aearly @megawac @sindresorhus @novemberborn @3rdeden @einaros @lpinca @mcollina @stefanpenner @rwjblue @Turbo87 @kellyselden @dougwilson @delvedor @TooTallNate @cpojer @scotthovestadt @SimenB @thymikee @jeysal @ralphtheninja @vweevers @wadey @broofa @linus @nodejs/addon-api @nodejs/npm @siimon @zbjornson @mafintosh @jhnns @isaacs @reconbot @substack @jashkenas @ronag @ctavan @indexzero @einaros @3rd-Eden

@lpinca
Copy link
Member

lpinca commented Sep 7, 2023

Keep both bufferutil and ws please. I didn't know they were failing and it's surprising. They are tested on Linux, macOS, and Windows (x64 and x86) and have green CI.

@RafaelGSS
Copy link
Member

Keep both bufferutil and ws please. I didn't know they were failing and it's surprising. They are tested on Linux, macOS, and Windows (x64 and x86) and have green CI.

I think we should remove all of them in this PR and then you open a new PR to add them back with a green CI. Otherwise this PR will never be merged.

@SimenB
Copy link
Member

SimenB commented Sep 7, 2023

Looks to me like Jest is just timing out and not actually failing. I assume the correct thing to do here (since the motivation seems to be "CITGM is slow") to reduce the amount of tests being run?

@lpinca
Copy link
Member

lpinca commented Sep 7, 2023

If you remove them, I have no way to see what is failing and I have no chance to fix the issues.

@lpinca
Copy link
Member

lpinca commented Sep 7, 2023

FWIW the failing test here https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3213/nodes=ubuntu1804-64/testReport/junit/(root)/citgm/ws_v8_13_0/ was fixed in ws@8.14.0 and it was caused by a change in Node.js 20.6.0 (nodejs/node@742597b14a).

I mean... Node.js 20.6.0 broke ws tests and CITGM should have raised a warning or blocked that release. Now you are removing ws from CITGM 😄. What's the point of CITGM?

@lpinca
Copy link
Member

lpinca commented Sep 7, 2023

This https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3213/nodes=osx1015/testReport/junit/(root)/citgm/bufferutil_v4_0_7/ also does not seem an issue with the module but with the machine the module is being tested on.

@SimenB
Copy link
Member

SimenB commented Sep 7, 2023

Additionally, I've never been pinged on any failure of either Jest or prom-client - doesn't seem the most friendly and collaborative to go straight for removal without ever pinging beforehand...

Speaking of prom-client, it seems to just fail on Windows, not Mac or Linux. Our CI, which also tests on Windows, hasn't had a failure for as long as we have logs (https://github.com/siimon/prom-client/actions/workflows/nodejs.yml?query=branch:master+event:push - only failure I'm seeing was apparently some network glitch), so I'm not sure what's up with that.

Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm -1. I have been trying to get Fastify and undici tests to pass and not be flaky since Node v20 was released. The problem is that v20 is more flaky and there are plenty of problems there.

This is not achieving anything.

@mcollina
Copy link
Member

mcollina commented Sep 7, 2023

On pino: I didn't know even that if was failing.

@dnalborczyk
Copy link

dnalborczyk commented Sep 7, 2023

This ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3213/nodes=osx1015/testReport/junit/(root)/citgm/bufferutil_v4_0_7 also does not seem an issue with the module but with the machine the module is being tested on.

I see multiple modules failing with the same root issue ☝️

as for acorn, it doesn't seem to install: https://ci.nodejs.org/job/citgm-smoker/3213/nodes=osx1015/testReport/(root)/citgm/acorn_v8_10_0/

@mcollina
Copy link
Member

mcollina commented Sep 7, 2023

Most of those modules did not become "flaky" due to the maintainers unresponsiveness. They became unresponsive due to bugs in Node. In fact, v18 is significantly better off. CITGM is actually doing its job: it tell us there are bugs to fix & investigate.

@TooTallNate
Copy link

https-proxy-agent is up-to-date and tests passing in the repo on Node 20. I'm not aware of any flakiness. The package is very popular and I think it would be in Node's better interest to keep testing for it.

@broofa
Copy link

broofa commented Sep 7, 2023

While I'm aware of the citgm project, I'm not familiar with how it works. It'd help if someone provided a bit more context for why it is I was pinged.

I assume it's something to do with uuid and mime testing...?

mime module: I've just updated this to use latest versions of GH's checkout and node-setup actions, and updated the test matrix to include node 20. It's all green.

uuid module: I just put together a PR for to update the node and GH action versions. It's all green as well. I'll merge that once @ctavan signs off on it.

Not sure if that helps at all. If not, let me know what you're expecting.

@Trott
Copy link
Member Author

Trott commented Sep 7, 2023

Most of those modules did not become "flaky" due to the maintainers unresponsiveness.

No one said that maintainer unresponsiveness was the issue (as far as I've noticed, at least). The issue is that there are so many failing modules that no one (or almost no one?) actually successfully interprets the CITGM results.

This is not achieving anything.

What this achieves is it gives us a green CI and we can actually treat red CITGM runs as failures going forward, rather than doing what we do now, which is try to find the needle in the haystack of failing runs. We routinely have over 100 failures. That's not reasonable.

In fact, v18 is significantly better off. CITGM is actually doing its job: it tell us there are bugs to fix & investigate.

18.x has around 80 failures compared with 140 or so for 20.x. So it's true that 18.x does "better". But the reason 20.x does worse is that CITGM is difficult to use because of all those permanent failures. So, 80 failures becomes 100 becomes 115 becomes 130 etc. etc. etc.

@Trott
Copy link
Member Author

Trott commented Sep 7, 2023

While I'm aware of the citgm project, I'm not familiar with how it works. It'd help if someone provided a bit more context for why it is I was pinged.

CITGM is what we use to test the impact of changes in Node.js on the ecosystem. In theory, it's supposed to show a bunch of modules with passing tests on a version of Node.js, and then we make changes or prepare a new release, and run CITGM as a check to make sure we aren't introducing changes that will break the ecosystem.

The problem is that there are so many failures that releasers find it hard to interpret the results and therefore they get ignored. So it's like not having CITGM at all. (I'm exaggerating here, but it's basically what happened for a recent release, which broke a bunch of stuff.)

For purposes here, it does not matter if the failing tests are due to Node.js changes, bugs in modules, incompetence on my part, or whatever. (Honestly, it's entirely likely a lot of them are due to specifics of our testing environment.) The point is to get CITGM to be green and we can add stuff back in.

Since you are listed (correctly or otherwise--we don't update the lists that often) as a maintainer for one or more of the modules being removed, you got a ping.

Hope that provides the needed context.

@Trott
Copy link
Member Author

Trott commented Sep 7, 2023

I mean... Node.js 20.6.0 broke ws tests and CITGM should have raised a warning or blocked that release. Now you are removing ws from CITGM 😄. What's the point of CITGM?

Exactly! Node.js 20.6.0 broke stuff because the CITGM results were basically ignored because there are so many failures in there already. So tossing everything that's failing (regardless of whose "fault" it is!) gets us back to a CITGM that, while imperfect, is at least usable.

That said, if your module was broken specifically by 20.6.0, there's a good change it will be fixed in the 20.6.1 which is being prepared right now. So yeah, if that's the case, it probably makes sense to keep that module in the lookup.json file.

Copy link
Member

@anonrig anonrig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need a clean slate, and gradually add these dependencies with separate runs rather than blaming and finding the side to blame.

@isaacs
Copy link

isaacs commented Sep 7, 2023

Yes! I am 100% in favor of this, and everything @Trott says here is exactly correct and brutally honest. 👏 👏 👏

It would be better to not have a test, than to have test where failure is even slightly acceptable.

Get CITGM green, then add things back in as they pass. Moving forward, when it goes red, treat it as an actual problem and do not proceed until it's green again.

This is The Way. Go slow to move fast.

lib/lookup.json Outdated Show resolved Hide resolved
@Trott
Copy link
Member Author

Trott commented Sep 7, 2023

Here's a run to test the upcoming 20.6.1: https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3214

That's 133 failures. (And again, it's entirely possible that most of these are problems in our CI setup or whatever. But it's been like this basically since we launched CITGM however many years ago. And we're in that awful state where we ignore red CI. Better to test less and actually respond to failures than test more and ignore failures.)

"prefix": "v",
"maintainers": "jhnns"
},
"rimraf": {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rimraf: Failing because ts-node doesn't work on node 20.

@dnalborczyk
Copy link

dnalborczyk commented Sep 7, 2023

@broofa just ran uuid with citgm locally.

I'm guessing citgm uses the release tarball, and this removed test uuidjs/uuid#709 is still part of it, hence it fails.

npx citgm uuid
info: starting            | uuid                
info: lookup              | uuid                
info: lookup-found        | uuid                
info: uuid lookup-replace | https://github.com/uuidjs/uuid/archive/4cf24c018cead5ebe48cb4da232b57a2345d9fb5.tar.gz
info: uuid npm:           | Downloading project: https://github.com/uuidjs/uuid/archive/4cf24c018cead5ebe48cb4da232b57a2345d9fb5.tar.gz
info: uuid npm:           | Project downloaded 4cf24c018cead5ebe48cb4da232b57a2345d9fb5.tar.gz
info: uuid npm:           | npm install started 
warn: uuid npm-install:   | fatal: not a git repository (or any of the parent directories): .git
warn: uuid npm-install:   | fatal: not a git repository (or any of the parent directories): .git
info: uuid npm:           | npm install successfully completed
info: uuid npm:           | test suite started  
error: failure             | The canary is dead: 
error: failing module(s)   |                     
error: module name:        | uuid                
error: version:            | 9.0.0               
error: error:              | The canary is dead: 
error: error:              | undefined                                                                          
error:                     | > uuid@9.0.0 prepare                                                               
error:                     | > cd $( git rev-parse --show-toplevel ) && husky install                           
error:                     |                                                                                    
error:                     |                                                                                    
error:                     | added 1049 packages in 2s                                                          
error:                     |                                                                                    
error:                     | > uuid@9.0.0 pretest                                                               
error:                     | > [ -n $CI ] || npm run build                                                      
error:                     |                                                                                    
error:                     |                                                                                    
error:                     | > uuid@9.0.0 test                                                                  
error:                     | > BABEL_ENV=commonjsNode node --throw-deprecation node_modules/.bin/jest test/unit/
error:                     |                                                                                    
error:                     |                                                                                    
error:                     | fatal: not a git repository (or any of the parent directories): .git               
error:                     | fatal: not a git repository (or any of the parent directories): .git               
error:                     | PASS test/unit/v1-random.test.js                                                   
error:                     | PASS test/unit/validate.test.js                                                    
error:                     | PASS test/unit/v1-rng.test.js                                                      
error:                     | PASS test/unit/version.test.js                                                     
error:                     | PASS test/unit/v1.test.js                                                          
error:                     | PASS test/unit/stringify.test.js                                                   
error:                     | PASS test/unit/v4.test.js                                                          
error:                     | PASS test/unit/parse.test.js                                                       
error:                     | FAIL test/unit/rng.test.js                                                         
error:                     | ● rng › Browser without crypto.getRandomValues()                                   
error:                     |                                                                                    
error:                     | assert.throws(function)                                                            
error:                     |                                                                                    
error:                     | Expected the function to throw an error.                                           
error:                     | But it didn't throw anything.                                                      
error:                     |                                                                                    
error:                     | Message:                                                                           
error:                     | Missing expected exception.                                                        
error:                     |                                                                                    
error:                     | 14 |                                                                               
error:                     | 15 |   test('Browser without crypto.getRandomValues()', () => {                    
error:                     | > 16 |     assert.throws(() => {                                                   
error:                     | |            ^                                                                     
error:                     | 17 |       rngBrowser();                                                           
error:                     | 18 |     });                                                                       
error:                     | 19 |   });                                                                         
error:                     |                                                                                    
error:                     | at Object.throws (test/unit/rng.test.js:16:12)                                     
error:                     |                                                                                    
error:                     | PASS test/unit/v35.test.js                                                         
error:                     |                                                                                    
error:                     | Test Suites: 1 failed, 9 passed, 10 total                                          
error:                     | Tests:       1 failed, 49 passed, 50 total                                         
error:                     | Snapshots:   0 total                                                               
error:                     | Time:        0.825 s                                                               
error:                     | Ran all test suites matching /test\/unit\//i.                                      
error: done                | The smoke test has failed.
info: duration            | test duration: 5309ms

in short, if uuid would release a new version, citgm would pass.

@TooTallNate
Copy link

I'm not sure how to interpret the failure on https-proxy-agent:

Error: incorrect header check 

@Trott
Copy link
Member Author

Trott commented Sep 7, 2023

Adding the tsc-agenda label because this (or something very close to it) really desperately needs to happen, and there's a block right now. So, hopefully the TSC can get consensus. And if not, then let's have a vote.

@nodejs/releasers @nodejs/citgm @nodejs/tsc

@GeoffreyBooth
Copy link
Member

The run without -J took 2 hours and 34 minutes. With -J, it only took 1 hour and 50 minutes. . . . But that’s it. Everything else passed. No failures for bcrypt or browserify or uuid or any of the many others.

This is incredible! And in the grand scheme of things, I don’t think 110 minutes versus 154 minutes makes much difference at all; either way it’s way longer than I would wait for it, so it could take hours for all I care. Making it sequential for now seems like an easy win.

We could maybe split out the modules into two buckets, of ones safe to run in parallel versus ones that can’t, but that can be a future improvement.

@ctavan
Copy link

ctavan commented Sep 18, 2023

But that's it. Everything else passed. No failures for bcrypt or browserify or uuid or any of the many others.

FWIW uuid now passing should be due to the fact that we released a new bugfix version (which adjusted tests to work with Node.js 20.x) rather than due to parallelism.

@ruyadorno
Copy link
Member

This is incredible! And in the grand scheme of things, I don’t think 110 minutes versus 154 minutes makes much difference at all; either way it’s way longer than I would wait for it, so it could take hours for all I care. Making it sequential for now seems like an easy win.

+1 - I've been consistently running in serial mode for testing releases, it really helps a lot.

@richardlau
Copy link
Member

I've removed -J from the default CITGM build parameter value (default is now citgm-all). It's still possible to edit the value when submitting the job to add the option back.

@RafaelGSS
Copy link
Member

Is it now ready to review? @Trott

@ruyadorno
Copy link
Member

@Trott this clean up will be a godsend for the next v18 release! Do you believe it's in a good enough state to move ahead with? Personally, I'd love to be able to start relying on a green citgm for the backport PRs.

@SimenB
Copy link
Member

SimenB commented Sep 19, 2023

FWIW, Jest (on main) now passes all tests using v21 nightly. I've also set up a daily build in the Jest repo itself that installs the nightly. Won't help for PR checks, but at least I'll know if something lands on main that breaks our tests 😀

@Trott
Copy link
Member Author

Trott commented Sep 20, 2023

I feel like we can probably add a lot of things back in (like jest) before landing so let's run a current CITGM against the main branch (now that without -J is the default) and see what fails, then only skip that stuff. But yeah, I think this should probably be ready to land in another day or two.

@Trott
Copy link
Member Author

Trott commented Sep 20, 2023

I feel like we can probably add a lot of things back in (like jest) before landing so let's run a current CITGM against the main branch (now that without -J is the default) and see what fails, then only skip that stuff. But yeah, I think this should probably be ready to land in another day or two.

Here's a current CITGM (not this PR) against the main branch so we can have a new baseline: https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3254/

@Trott
Copy link
Member Author

Trott commented Sep 20, 2023

I also wonder if removing the -J from the tap runs might improve reliability of the GitHub Actions tests. (It might not, since it's not downloading modules and running their tests, but seems worth trying. Of course, I'm basing that on almost zero troubleshooting on my part.)

@SimenB
Copy link
Member

SimenB commented Sep 20, 2023

Jest will need head: true up until I release a new major (will resolve the punycode errors)

@Trott Trott force-pushed the lookup branch 2 times, most recently from eb7dbf3 to 767636d Compare September 21, 2023 00:03
@Trott
Copy link
Member Author

Trott commented Sep 21, 2023

I notice bluebird is failing consistently on the Jenkins CITGM runs but it passes locally for me. Anyone know what's up with it?

> bluebird@3.7.2 prepublish
 > npm run generate-browser-core && npm run generate-browser-full
 > bluebird@3.7.2 generate-browser-core
 > node tools/build.js --features=core --no-debug --release --zalgo --browser --minify && mv js/browser/bluebird.js js/browser/bluebird.core.js && mv js/browser/bluebird.min.js js/browser/bluebird.core.min.js
 > bluebird@3.7.2 generate-browser-full
 > node tools/build.js --no-clean --no-debug --release --browser --minify
 added 367 packages in 38s
 > bluebird@3.7.2 test
 > node --expose-gc tools/test.js
 [m
 [m2.1.2.js [31m                         [merror.js [31m                [msynchronous_inspection.js [31m   
 [m2.1.3.js [31m                         [mfilter.js [31m               [mtap.js [31m                      
 [m2.2.1.js [31m                         [mfinally.js [31m              [mtapCatch.js [31m                 
 [m2.2.2.js [31m                         [mfollowing.js [31m            [mtimers.js [31m                   
 [m2.2.3.js [31m                         [mgenerator.js [31m            [mtry.js [31m                      
 [m2.2.4.js [31m                         [mget.js [31m                  [munhandled_rejections.js [31m     
 [m2.2.5.js [31m                         [mgetNewLibraryCopy.js [31m    [musing.js [31m                    
 [m2.2.6.js [31m                         [mgithub-2xx-76.js [31m                                      
 [m2.2.7.js [31m                         [mgithub-3.6.4.js [31m                                       
 [m2.3.1.js [31m                         [mgithub-3.7.3.js [31m                                       
 [m2.3.2.js [31m                         [mgithub-4.1.7.js [31m                                       
 [m2.3.3.js [31m                         [mgithub36.js [31m                                           
 [m2.3.4.js [31m                         [mis.js [31m                                                 
 [m3.2.1.js [31m                         [mjoin.js [31m                                               
 [m3.2.2.js [31m                         [mlate_buffer_safety.js [31m                                 
 [m3.2.3.js [31m                         [mlong_stack_traces.js [31m                                  
 [m3.2.4.js [31m                         [mmap.js [31m                                                
 [m3.2.5.js [31m                         [mmethod.js [31m                                             
 [m3.2.6.js [31m                         [mmonitoring.js [31m                                         
 [many.js [31m                           [mmultiple-copies.js [31m                                    
 [mapi_exceptions.js [31m                [mno_conflict.js [31m                                        
 [masync_hooks.js [31m                   [mnodeify.js [31m                                            
 [masync.js [31m                         [mpromise_array.js [31m                                      
 [mbind.js [31m                          [mpromisify.js [31m                                          
 [mbluebird-multiple-instances.js [31m   [mprops.js [31m                                              
 [mcall.js [31m                          [mrace.js [31m                                               
 [mcancel.js [31m                        [mreduce.js [31m                                             
 [mcatch_filter.js [31m                  [mreflect.js [31m                                            
 [mcollections_thenables.js [31m         [mregress.js [31m                                            
 [mconstructor.js [31m                   [mrejections.js [31m                                         
 [mcycles.js [31m                        [mresolution.js [31m                                         
 [mdirect_resolving.js [31m              [mschedule.js [31m                                           
 [mdomain.js [31m                        [msettle.js [31m                                             
 [mdone.js [31m                          [msome.js [31m                                               
 [meach.js [31m                          [mspread.js [31m                                             
 [32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[31m FAILURE[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m[32m[39m
 (node:11688) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [TLSSocket]. Use emitter.setMaxListeners() to increase limit
 (Use `node --trace-warnings ...` to show where the warning was created)
 (node:11688) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [TLSSocket]. Use emitter.setMaxListeners() to increase limit
 Unhandled rejection (<[function succeed]>, no stack trace)
 Unhandled rejection (<[function succeed]>, no stack trace)
 Unhandled rejection (<[function succeed]>, no stack trace)
 Unhandled rejection (<[function succeed]>, no stack trace)
 Unhandled rejection (<[function succeed]>, no stack trace)
 Unhandled rejection (<[function succeed]>, no stack trace)
 Unhandled rejection (<[function succeed]>, no stack trace)
 Unhandled rejection (<[function succeed]>, no stack trace)
 Unhandled rejection (<[function succeed]>, no stack trace)
 (node:10792) [DEP0097] DeprecationWarning: Using a domain property in MakeCallback is deprecated. Use the async_context variant of MakeCallback or the AsyncResource class instead. (Triggered by calling processImmediate on process.)
 (Use `node --trace-deprecation ...` to show where the warning was created)
 [31mSome tests failed: [m
     promisify.js For additional details you can run it individually  with the command `node tools/test --run=promisify.js`

@Trott
Copy link
Member Author

Trott commented Sep 24, 2023

Another baseline run against the main branch to see if there are things that we're removing that don't need to be removed: https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3259/

Remove all modules that failed the latest 20.x release run. We need to
be able to trust that a failed CITGM run is something that needs to be
investigated.
@Trott
Copy link
Member Author

Trott commented Sep 24, 2023

CIGTM against this PR: https://ci.nodejs.org/job/citgm-smoker/3260/

@Trott
Copy link
Member Author

Trott commented Sep 24, 2023

On the one hand, 56 failures is a nice improvement from 100 failures. But (a) not nearly as much as I was hoping and (b) there are a lot of new failures! I wonder if some of them are because by default, I think we install CITGM from npm, but when I'm running it against this branch, it's getting a whole bunch of changes that have landed since we last published a version of CITGM.

My inclination is to:

  • Grab the things that I find alarming to omit that will be skipped by this PR (undici, express, fastify, npm, maybe one or two others) and open PRs to add them back in.
  • Land this.
  • Publish this to npm.
  • Run a default CITGM to confirm similar results.
  • Open up issues for the new failures, pinging maintainers if it looks like something that might not be a CITGM bug.
  • Open a follow-up PR like this one for any failures that are unmaintained modules or similar.

@Trott Trott marked this pull request as ready for review September 24, 2023 22:12
@Trott Trott merged commit f15c9a2 into main Sep 24, 2023
8 checks passed
@Trott Trott deleted the lookup branch September 24, 2023 22:14
@GeoffreyBooth
Copy link
Member

I think we install CITGM from npm

Why not install it from the GitHub repo directly?

@Trott
Copy link
Member Author

Trott commented Sep 24, 2023

I think we install CITGM from npm

Why not install it from the GitHub repo directly?

I don't know the reason for that decision. I would guess that it's so that releases aren't broken by changes to the CITGM main branch. If changes to the CITGM main branch are going to be live immediately, then we'd want a CITGM run with every change we make. (Which, actually, might not be a bad idea at all.)

@GeoffreyBooth
Copy link
Member

You could also npm install from a particular branch in the repo: https://stackoverflow.com/a/39732501/223225. So you could make a release branch, say, and merge main into it periodically; and CI would install CITGM from release.

Though like you say, I don’t know why we wouldn’t just always want the latest main.

@Trott
Copy link
Member Author

Trott commented Sep 24, 2023

  • Publish this to npm.

I am unable to publish citgm to npm. Can someone make me a collaborator (in npm, not GitHub) on the package (and maybe remove George Adams who hasn't been active for a long time as far as I can tell)?

Or don't make me a collaborator, but grab the 9.0.0 tag I just pushed and publish it?

@Trott Trott mentioned this pull request Sep 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.