That is already some good stuff to look at. You said releases are to be created manually. Let's see where that is required or could be changed a little.
We already had the discussion about version numbers. Let's keep that at bay and take it still manually managed.
17/07 Full freeze: Actually we do not need a full freeze. Instead we just agree to release a specific commit id. To easily find that commit id we mark it with a
tag. Subsequent commits/merges can go into the master branch, however the tag will not move. Now if we build based on the tag we get a stable version, yet further development is allowed. In case we want to allow last-minute fixes for a release, we may use a release branch instead of a tag.
18/07 Build binaries: This is already automated - we have binaries for Linux and Windows. Is the missing Apple a showstopper? Do we need to extend the automatic scripts to provide both development and release builds? Regardless of that, the build is happening on Github, and it is automatically published as prerelease. So no specific manual action here. The changelog may have to be written by us - yet I already have seen quite capable automation on that, too. Example
here. Let us discuss what the important parts are.
19/07 Update website: Have a downloads page at hand, publish that page, add a new news line...
All that can be automated so if we build a release in the oolite repository it could trigger a change in the oolite-web repository. The latter is currently configured so that changes to the right branch end up being published within minutes. Let's think of coupling that. See
here and
here. I may need more privileges in the OoliteProject organization to set all this up.
Having an automatic message in the forum might be a challenge, but actually not a big one. We setup credentials in the forum and add them as secrets to Github. The release workflow can then send the release announcements including the changelog as a message to a new or existing thread. Yes, this automation needs to be created, it will be a couple of http requests. Let's discuss it. I may need more privileges in the OoliteProject organization to set all this up.
Ay, that reference sheet should get built together with Oolite so it always carries the correct version number. The remaining content should get updated as we see changes going into the code, which means maintaining that reference sheet should be normal workflow and not extra work for releases. How can this PDF be auto-generated? There is even a ready-to-use Github Action like
this or
that. Let's discuss this.
So I somehow end up with creating a tag and updating the version number manually. Not too much work - once all the automation I spoke about exists.
Our brains should not be focused with performing automatable tasks but validating what we're about to release. One of the checks could be to ensure the documentation/reference sheet contains the correct keys.
If we create such a checklist it could be ticked by many people, also non-programmers. Once we have 4eyed the checklist, we could then trigger the release.
How does that sound?
Edit: I just found
https://github.com/OoliteProject/oolite ... CKLIST.TXT