Skip to content

Release workflow - #238

Merged
embray merged 6 commits into
asdf-format:mainfrom
embray:release-workflow
Jul 24, 2026
Merged

Release workflow#238
embray merged 6 commits into
asdf-format:mainfrom
embray:release-workflow

Conversation

@embray

@embray embray commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

Attempt to automate as much as possible of the release process following a call to bumpver.

I experimented with this extensively over in my fork, and it seems to be pretty solid now.

It turns out it would have been a lot easier to just make "release" a job within one of the existing (probably build.yml workflows) but I started out with wanting to make it a separate workflow entirely and that turns out to be somewhat ill-supported surprisingly. But I stuck to my guns and this seems good enough.

In testing the release I also noticed more issues with the changelog that I tweaked, and am pretty happy with now. Some interesting ideas for upstreaming to the relevant tools, bumpver and towncrier. I like both of these tools but I feel like I'm fighting them more than I should have to.

Added a "Development resources" section to the docs--started out wanting to just to note down the release process once I got it working, but then fleshed it out further, so this is good to have. I will probably add more to it later, especially if I get any new feedback from others getting stuck at various points, because I can't remember off the top of my head all the gotchas.

embray added 6 commits July 24, 2026 15:45
- Usually run with a successful run of the Build workflow on a tag

- Can be run via manual dispatch on a specific tag, either for testing
  or fixing issues with release runs

- Conforms that the tag exists and a smoke test that the tag matches the
  version in relevant files, also if it should be marked as a prerelease

- Extracts the changelog for the release description and also writes the
  sha256 hash of the release tarball artifact obtained from the Build
  workflow
I habitually wrap text in my editor usually by default even when writing
these changelog snippets; towncrier, unfortunately, re-wraps them even
if they're already wrapped without taking into account logical lines;
this is understandable because it's not generally possible to guess when
a line break was intentional or not depending on the underlying text
format.

These are formatted in reST so we can make some reasonable guesses
though.

This results in much better plain-text formatting of the changelog.
towncrier doesn't work well with entries that start with a bullet list,
and unwrap_rst.py doesn't handle that either; could fix; or just
something to be aware of...
And a few manual fixes, including documentation of the improved
documentation :)
Improve the job summary (I was confused by the link format; turns out
it's always like this for unpublished releases, but also write the
expected release URL and some more details.
Started out just because I wanted to document the release process
somewhere since I forgot myself.  Filled it in from some of my notes and
whatever else I could think to impart.  Still some things could be
expanded like how to write tests and more details on code style, but
will get to it eventually.  Maybe some parts are *too* detailed?
@embray embray added documentation Improvements or additions to documentation release Tasks related to preparing and publishing releases packaging labels Jul 24, 2026
@embray
embray merged commit c82c3a7 into asdf-format:main Jul 24, 2026
12 checks passed
@embray
embray deleted the release-workflow branch July 24, 2026 19:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation packaging release Tasks related to preparing and publishing releases

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant