Comments (10)
There's a PR over in CITGM at the moment to extend it to test module dependencies -nodejs/citgm#765
I'm still torn between whether this should be an additional feature for CITGM or dedicated tool
from package-maintenance.
wiby
progress overview: https://github.com/pkgjs/wiby/projects/1
from package-maintenance.
We would definitely use such a tool in Level too (we've had Level/abstract-leveldown#184 open for a while, no time to implement it).
from package-maintenance.
Maybe the engine of https://github.com/nodejs/citgm could be extended to allow testing git checkouts of modules.
cc @nodejs/citgm
from package-maintenance.
This would be great, and I am sure we would want to integrate that into express.
Currently we have some important modules in the core CITGM, but as expressjs/express#3813 shows, it wold be helpful to go further into our dependency tree. Further than the core CITGM is meant to do IMO.
from package-maintenance.
I think leveraging CITGM so that maintainers can re-use it is a great idea.
from package-maintenance.
So here's a proposal on how CITGM for package ecosystems can be implemented.
Basically, the idea is to leverage the existing CI setup, in a similar way that various dependency update management tools do. The implementation could be a bot, which:
- Upon a specific trigger phrase in a PR
- alternative: a commit in a specific branch (e.g.
citgm/*
, but this may have access control issues1) - it should be smart enough to not run citgm on PRs which are citgm tests...
- alternative: a commit in a specific branch (e.g.
- Loops through all the supported dependents / peers
lookup.json
fromnodejs/citgm
is reasonable manifest format, but it probably needs to be extended.
- Opens a PR which just updates the
package.json
to install the package from git- this might mean forking some packages, because you don't want to be open PRs just to run your tests in repos that you don't own. The tool could be smart enough to automatically create the forks into a specific org, etc. You might want to do this even for the repos that you own, to reduce noise.
- the tool should be smart enough to rebase the PRs, etc.
- sometimes installing from git is not good enough, as there's a build step - the tool could be configured to publish a tarball into GH releases or a separate tool could be used to publish a pre-release on npm
- it might be possible to get away without opening PRs, but I had a bad experience trying to set that up on Jenkins (might not have been the fault of Jenkins itself...), and the tool should be CI system agnostic. That said - I kind of like the PRs for tracking purposes - they have comments, etc. I know Greenkeeper tries to only open PRs if there's failures, but that might just be rather hard to keep track of and to implement.
- The tool then tracks the CI status of all the PRs and reports back to the original PR - via comment and/or via CI status
- ideally, the tool should be able to compare CI status of the base commit vs the PR commit, to highlight any differences (if there's failures on master, then maybe failing citgm is not a problem, etc; not sure there's common patterns in the ecosystem to get down to individual test level - does Travis even support things like publishing xunit.xml stuff?)
- once a dependent PR has run its course, the tools should probably just close it
Am I missing something necessary/obvious?
I think the MVP/PoC for the above would be:
- A CLI tool, that takes a PR as a param
- Loops through supported dependents / peers
- Opens PRs, with links to the original PR (so that the original PR gets a notification)
The rest can be build on top of it.
This does differ from the existing approaches in that it does not try to clone/install all of the dependents in a single big task, which does have its pros and cons.
This does not provide a way to run everything locally, but that does not mean it can't be achieved, just that I personally would find less value in my laptop fans spinning, when I can leverage the existing infra.
1 GH branch restrictions only apply to new commits, but not to branch creation, IIRC - which may not be an issue for people with commit access.
from package-maintenance.
Great work and good idea!
from package-maintenance.
@BethGriggs FYI as I know you've been thinking about this as well.
from package-maintenance.
Thanks! I will definitely take a look!
from package-maintenance.
Related Issues (20)
- Node.js Package Maintenance Team Meeting 2023-05-11 HOT 4
- Node.js Package Maintenance Team Meeting 2023-05-23 HOT 1
- Node.js Package Maintenance Team Meeting 2023-06-08 HOT 3
- Node.js Package Maintenance Team Meeting 2023-06-20 HOT 5
- Node.js Package Maintenance Team Meeting 2023-07-06 HOT 1
- Node.js Package Maintenance Team Meeting 2023-07-18 HOT 4
- Impactful Projects Statusboard HOT 6
- Node.js Package Maintenance Team Meeting 2023-08-03 HOT 1
- Node.js Package Maintenance Team Meeting 2023-08-15 HOT 1
- Node.js Package Maintenance Team Meeting 2023-08-31 HOT 1
- Node.js Package Maintenance Team Meeting 2023-09-12 HOT 2
- Move meeting to be monthly HOT 2
- Node.js Package Maintenance Team Meeting 2023-09-28 HOT 2
- Node.js Package Maintenance Team Meeting 2023-10-24 HOT 2
- Transferring projects into pkgjs HOT 1
- Node.js Package Maintenance Team Meeting 2023-11-23 HOT 3
- Node.js Package Maintenance Team Meeting 2023-12-19 HOT 1
- Node.js Package Maintenance Team Meeting 2024-01-18 HOT 1
- Node.js Package Maintenance Team Meeting 2024-02-13 HOT 2
- Node.js Package Maintenance Team Meeting 2024-03-14 HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from package-maintenance.