Skip to content

feat: port action from Node to Go and decouple image tags - #312

Merged
marcusramberg merged 3 commits into
mainfrom
marcus/go_port
Oct 23, 2026
Merged

marcusramberg merged 3 commits into
mainfrom
marcus/go_port

Conversation

@marcusramberg

Copy link
Copy Markdown

This is a 1-to-1 rewrite to go, no new features in this round

Rewrite the manager in Go (same env-var contract and container interface):

  • internal/config, set, googlews, githuborg, app packages with unit tests
  • multi-stage Dockerfile producing a distroless static binary
  • CI switched to Go build/test; CodeQL to go; Renovate npm -> gomod
  • remove all Node sources, tests and tooling

Fix the image-tag release pain: action.yml now pulls
ghcr.io/remarkable/githubusermanager:${{ github.action_ref }} and CI tags the
image to match the refs callers use (main, vX.Y.Z, vX.Y, vX, sha). No hardcoded
version to bump before a release. Also unifies the registry on ghcr.io.

Add release workflow that moves the major/minor git tags (vX, vX.Y) to each
published vX.Y.Z release so @v1 style references resolve to the latest release.

Marking this as draft as I'm still verifying the details

@nikolaik nikolaik left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, made a few suggestions

Comment thread go.mod Resolved
Comment thread Dockerfile Resolved
Comment thread .pre-commit-config.yaml Resolved
@@ -0,0 +1,48 @@
name: release

# When a release is published for a semver tag (vX.Y.Z), move the matching

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should drop the mutable tags completely. I've seen many do the same recently.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, I'm working towards trying to make releasing this less of a pain, and doing that works against that. :-/

Rewrite the manager in Go (same env-var contract and container interface):
- internal/config, set, googlews, githuborg, app packages with unit tests
- multi-stage Dockerfile producing a distroless static binary
- CI switched to Go build/test; CodeQL to go; Renovate npm -> gomod
- remove all Node sources, tests and tooling

Fix the image-tag release pain: action.yml now pulls
ghcr.io/remarkable/githubusermanager:${{ github.action_ref }} and CI tags the
image to match the refs callers use (main, vX.Y.Z, vX.Y, vX, sha). No hardcoded
version to bump before a release. Also unifies the registry on ghcr.io.

Add release workflow that moves the major/minor git tags (vX, vX.Y) to each
published vX.Y.Z release so @v1 style references resolve to the latest release.
@marcusramberg
marcusramberg marked this pull request as ready for review October 23, 2026 10:16
@marcusramberg
marcusramberg requested a review from a team as a code owner October 23, 2026 10:16
@marcusramberg
marcusramberg merged commit a1c1b1e into main Oct 23, 2026
2 of 3 checks passed
@marcusramberg
marcusramberg deleted the marcus/go_port branch October 23, 2026 13:47
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