PlasmoHQ / bpp

🚀 Browser Platform Publisher
MIT License
161 stars 11 forks source link

[FR] Integration with semantic-release #70

Open melink14 opened 2 years ago

melink14 commented 2 years ago

semantic release is a end to end release automation process which relies on proper semantic versioning to trigger a release whenever a use visible commit is pushed to a release branch.

It handles updating changelog, git tag, package.json/manifest.json and then via a chrome specific plugin I also use it to publish to chrome. It also publishes a release to Github and comments and labels PRs and issues.

I also publsh to Edge but much less frequently because it doesn't have a plugin (and until very recently had no API) and there are some rough edges with the chrome plugin as well.

I could fork the chrome plugin to make an edge plugin using your edge publishing package but thought I'd open an FR here in case there was interest given your recent work.

louisgv commented 2 years ago

I wonder if managing the version of the manifest would be out of scope for this action. This action was meant to be a step within a project's workflow. So prior to this publish step, dev can have a step prior that does the semantic release routine.

I could fork the chrome plugin to make an edge plugin using your edge publishing package but thought I'd open an FR here in case there was interest given your recent work.

This sounds great👍 I haven't put too much thought about the semantic version bump process yet (for most of my ext, I just bump them manually xD), but given the nature of how these plugin works, maybe you can make it even more generic with bms: https://github.com/plasmo-corp/bms <- this module's goal is to abstract out the extension publishing process for every browser. Thus it would be possible to have a semantic plugin for every store by just interfacing with bms.

melink14 commented 2 years ago

Thanks for the comment. Agree that this package it self probably wouldn't be the right place for it butI've been a big fan of the entire semantic release process in how the different plugins work together (assuming you use conventional commit format etc). I'd consider it for any npm/ext packages you use!

Using bms to create a generic extension publish plugin is not a bad idea (at first glance) though one thing that I've been considering is how to work publish status check into the flow. Compared to things like npm, extensions have a manual review process which means users have to think about if their publish will fail due to already being in progress. (I publish at most once a week due to that for example, though edge takes even longer than chrome for me!)

Thanks for your ideas and feedback!