Hammerspoon / hammerspoon

Staggeringly powerful macOS desktop automation with Lua
http://www.hammerspoon.org
MIT License
12.09k stars 582 forks source link

Automate releases with GitHub Actions #2711

Open cmsj opened 3 years ago

cmsj commented 3 years ago

This is mostly me leaving notes for myself, but for this to work, there will need to be some changes in how we commit code to this repo.

tl;dr I'd like to automate the releases using GitHub Actions, so a new release would be built, signed and published any time a new version is tagged in the repo - this would allow @asmagill to do releases as well, and also means we could easily release a lot more often (after each PR merge if we really wanted to).

The downside is that we'll need to get a lot more rigorous about the way we land code, because the Changelog will need to be automatically generated.

My proposed workflow would be:

Notes:

asmagill commented 3 years ago

This sounds like a good idea, but a couple of questions:

1) well, more of a request -- examples of "properly done" milestone lists, PRs, etc. This may have to wait til you have it in place, but once you know what will be the "proper way to do things", examples will be helpful 2) what about nightly or development builds?

cmsj commented 3 years ago

Examples: definitely, I'll need to format a few things "Correctly" so I can test the automations

As for nightly/dev builds - once we have the automation for releases done, it would be very easy to have a signed build generated on almost any event. For development builds, we'd also want to arrange an alternative appcast.xml and perhaps even let people switch between the two in the Hammerspoon prefs.

So yeah, we could have a development build generated for each merged PR (not opened PR, since that would allow anyone to get a signed build with any nefarious code in it).

cmsj commented 3 years ago

For the avoidance of doubt, 0.9.83 is not included in this, we have a bunch of commit history that can't be automagically turned into release notes, but I'd like to start piloting it for 0.9.84.