rojo-rbx / rbx-dom

Roblox DOM and (de)serialization implementation in Rust
MIT License
115 stars 49 forks source link

rbx-dom should have a GitHub Actions workflow that opens PRs for reflection database updates #298

Open kennethloeffler opened 1 year ago

kennethloeffler commented 1 year ago

Updates to the databases in rbx_reflection_database and rbx_dom_lua is a manual affair. A human must run the gen-reflection script, open a pull request, and then the PR must be reviewed and merged. I recognize that #265 is on the table, but I think rbx-dom would regardless benefit from a scheduled github actions workflow that:

I think this would be useful because it seems like rbx-dom will support rbx_reflection_database for a while longer (maybe even indefinitely - we could discuss this particular point further), and besides, it would probably be pretty nice for maintainers to have automatic notifications about changes to the databases!

The PRs would still have to be further reviewed and merged, but also... it's only weekly, and it would usually just be "Approve" and "Merge" (there's no pressing need to create new releases for every auto-PR, for example). It looks entirely within reach with current resources, doesn't require any changes to the rbx-dom libraries or the surrounding tools, and would likely allow rbx-dom to know about and/or respond to new Roblox stuff more reliably and faster.

It needs the ability to create PRs in the workflow permissions. I'm not sure if PR creation is already allowed in rbx-dom's settings, or if anyone is able to change it if not.

And of course, someone will actually have to write the thing... I'll confess I don't love working with github actions, and would prefer not to be the one to do it😄

@Dekkonot and @nezuo, what do you two think about this, with the plans in #265 in mind?

Dekkonot commented 1 year ago

The good news is that this is compatible with our plans with #265 anyway, since ideally consumers like Lune and Rojo would have a place to pull a database from. The main goal is to just decouple database updates from version releases for us and all downstream projects, but we can very much still provide a place to pull databases from.

I actually tried to write an action for this a while back and I believe the hurdle I ran into was that Studio doesn't like it when you're not logged in. I would have to double check though, so I'm willing to give it a shot. It's not a priority though since it's already just 1 PR a week. Worst case, I set an alarm on my phone and do it weekly.

nezuo commented 1 year ago

I'm all for this change but like @Dekkonot said, tools used in CI like run-in-roblox broke because of authentication changes Roblox made. If I remember correctly, cookies are invalidated based on either region or IP. There is probably a workaround but I would still be worried about it breaking again.

kennethloeffler commented 1 year ago

If I remember correctly, cookies are invalidated based on either region or IP.

Damn, this really throws a wrench into things. It means we use a GitHub-hosted runner, we'd have to use a VPN just to authenticate Studio, and that's too complicated for my tastes. We could opt for a self-hosted runner - then the runner doesn't have to start from clean every time, it could have Roblox Studio already installed + logged in, and there's probably less opportunity for breakage this way? I have some spare computers lying around, but then I suppose I'd be responsible for writing the damn thing 😂

Dekkonot commented 1 year ago

I have some spare computers lying around, but then I suppose I'd be responsible for writing the damn thing

Conveniently, GitHub has a CLI that can open PRs and whatnot so worst case it should be possible to just write a script that will switch to a new branch, generate an updated reflection, and then open a PR with it. Writing timers for these things is also pretty easy in almost any language.

I'd hate to make any one person host it though, since that's placing undue burden on them.