albsod / pinetime-hypnos

Zephyr firmware for the nRF52832 PineTime smartwatch
Apache License 2.0
73 stars 21 forks source link

Improve release workflow #73

Open endian-albin opened 4 years ago

endian-albin commented 4 years ago

I've now tagged and pushed version 0.1.0-rc1 as an empty commit without any release notes, and the Github CI built and named packages as expected. I'd be happy to get some feedback about how to do the actual release though.

What should be included in the 0.1.0 release notes? Just a list of features or something more?

How should it be done? Just an empty commit with a longer commit message? Looking at 0.1.0-rc1, that would mean a source-only release, while binaries may be found in Github Actions. Could we maybe use Github's release feature? What are the advantages/disadvantages?

@sdorre, I believe you're the only one but me who is actually involved right now.

endian-albin commented 4 years ago

I've now released v0.1.0. It wasn't so hard. These were the steps:

1 make an empty commit on the master branch announcing the release

  1. create the new v0.1.0 tag
  2. push the tag
  3. push the commit
  4. wait for Github Actions to build and upload images
  5. press the release button
  6. select the newly created v0.1.0 tag
  7. write release notes
  8. drag the pinetime zip file from Github Actions to upload it (the source code packages will be added automatically)
  9. publish
sdorre commented 4 years ago

We could do that in an Github Action i guess. Something triggered only when a new tag is created. If it is not possible a workflow could also be that we work on a branch called develop and every time we merge it to master it creates a new tag and a new release.

endian-albin commented 4 years ago

Oh, that sounds like gitflow, which I have bad experience from. I think we should continue merging with master. The build and CI systems already automatically update the version based on the output from git describe --tags. Proper releases could be done manually after we feel that it's about time.

The only issue with the current CI system is that you can only get a clean version name (e.g. 0.1.0) if you push directly to master, not as the result of a pull request merge. Fixing that would be an improvement.