Skip to content

Release process action.#21

Open
oxpa wants to merge 6 commits intoralsina:mainfrom
oxpa:main
Open

Release process action.#21
oxpa wants to merge 6 commits intoralsina:mainfrom
oxpa:main

Conversation

@oxpa
Copy link
Copy Markdown

@oxpa oxpa commented Dec 29, 2025

Hello,

The PR has a workflow which:

  • builds binaries
  • builds docker images out of binaries
  • uploads docker images to ghcr.io
  • creates GH release

It can probably also do AUR release, but I've never worked with AUR so not quite sure if I should touch. Though I've found an action which seemingly does what's needed.
The workflow also doesn't touch site/install.sh as I don't like changing repository from a workflow. Should probably become a pre-release activity...

The build is /slow/: qemu is slow to compile grafito and I'm too lazy to split the build into a matrix for architectures. But it can be done.

I didn't check that release notes for the GH releases are exactly the same, but I use the same git cdiff to generate them. https://github.com/softprops/action-gh-release is used for the release creation so maybe use their built-in algorithm for release notes?
I also had to change BakedFileHandler locked version as the previous one was giving me troubles.
Also the workflow changes release file naming slightly (grafito for amd64 is now grafito.amd64). And the docker image has a single name for all platforms.
And finally, I didn't change all the scripts that use Dockerfiles. The build_static.sh is probably broken now.

The workflow is triggered by pushing a tag into the repository.
The idea is to have a release prepared, then tag it and get docker images + GH release in one go.

Let me know your thoughts on this. Given that there are several things I didn't do and you still have to do some thing locally - I'm not quite sure it's that useful. But I'm happy to tweak this further anyways:)

@ralsina
Copy link
Copy Markdown
Owner

ralsina commented Dec 29, 2025

" Given that there are several things I didn't do and you still have to do some thing locally - I'm not quite sure it's that useful."

Currently my release process is:

  1. bash -x do_release.sh
  2. go have coffee

How would it look now with the current state of this PR?

@ralsina
Copy link
Copy Markdown
Owner

ralsina commented Dec 29, 2025

I think install.sh could use /latest rather than the version number and just work

@oxpa
Copy link
Copy Markdown
Author

oxpa commented Dec 30, 2025

Sorry, I got carried away a little bit :)
The final goal is to get to the same workflow: run do_release.sh and go have coffee. But the build happens at github rather than locally. The main benefit being that you won't need two distinct image URLs for 2 architectures but rather just 1 (ghcr.io/ralsina/grafito:latest).

For some reason I though that you are running site/install.sh during a release. That's definitely wrong.

Let me change site/install.sh (so that it would figure out the latest version) and do_release.sh (so that it would do what's needed).

Initially I also wanted to pull do_aur.sh into github actions. But the more I look at it the less I want to do it. So I'll keep it as is.

site/install.sh has 'jq removed' from dependencies. Why was it removed? Can I bring it back?

@oxpa
Copy link
Copy Markdown
Author

oxpa commented Dec 30, 2025

Now the release is initiated with do_release.sh.
It changes shards.yaml, tags a commit, pushes changes to github and then does AUR stuff.
Github part builds GH release and docker images.

Also, site/install.sh now uses grep and tr to figure out the latest version of grafito. But can also work with VERSION=... to install any previous versions.

Techinically, you can move do_aur.sh into a github action but it requires quite a few secrets so I'd skip it for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants