R2Northstar / Northstar

Repo for packaged Northstar releases
https://northstar.tf/
MIT License
1.69k stars 131 forks source link

Set up infrastructure to allow for publishing and downloading dev builds automatically #309

Open GeckoEidechse opened 2 years ago

GeckoEidechse commented 2 years ago

The idea would be as follows:

For every commit on main branch we use CI to auto-publish binaries etc to some platform. From there Northstar installers could be used to auto-install the dev build on installer launch for testing. For the player this system would of course be opt in.

For publishing we'd need to add CI to both NorthstarMods and NorthstarLauncher (or figure out another way to listen for changes and create builds). We could add a special "dev" package to Thunderstore that then gets updated with the newest changes from main.

Once on Thunderstore Northstar installers could then pull the files and install them. In the case of r2mm this should be as simple as selecting "Northstar-dev" as your mod instead of "Northstar". For VTOL and Viper they'd have to add support for installing Northstar from Thunderstore first and then add functionality to opt into installing from some "dev channel".

Things to consider:

pg9182 commented 2 years ago

Regarding CI, I recommend allowing the workflow on the main repo to be triggered by a dispatch with optional args for the build number (or commit if we still want to do the build in the main repo, but this is not really a good option since the build process may change too) to use for each repo, where it can pull artifacts (it obviously has to be within the artifact retention time) in from the latest or the specified build of each repo. The dispatch can be triggered by a step in each other repo.

For versioning, one idea could be to add another point number representing the build number (of the main repo), since we don't have a need to strictly follow a 3-part version afaict.

GeckoEidechse commented 2 years ago

Sorta related I realised that at least for release candidates we have like 90% of the infrastructure already in place to do that. The only thing we'd need to set up is an appropriate Thunderstore package and updating CI config to instead of not pushing to Thunderstore on rc, just pushing to a different package instead.