Skip to content

Switch to Docker-based builds and releases#57

Merged
rainest merged 2 commits intomainfrom
rainest/docker-build-release
Nov 19, 2025
Merged

Switch to Docker-based builds and releases#57
rainest merged 2 commits intomainfrom
rainest/docker-build-release

Conversation

@rainest
Copy link
Copy Markdown
Contributor

@rainest rainest commented Nov 18, 2025

Summary and Scope

This disables the GoReleaser release and adds a new Docker-based release. The Docker-based release also handles pushing pre-release images.

This includes an atypical setup where there are two jobs, because the ARM build requires the special

      additional-env-vars: |
        CC=aarch64-linux-gnu-gcc

to make Kafka libs happy.

Putting this in place so that we can create preview images of #56 for LANL to test with.

Testing

Testing mostly in the prior PR to add the upstream workflow: OpenCHAMI/github-actions#5

This PR includes some cleanup to TODOs and uses proper releases instead of my test fork, but should otherwise match the fork/upstream action testing from that PR.

Risks and Mitigations

If this breaks, we can't release, and will need to revert to the GoReleaser action. If everything's fine after a few releases, we can go ahead and prune the GoReleaser workflow from this entirely, instead of just no-oping it.

Signed-off-by: Travis Raines <571832+rainest@users.noreply.github.com>
Add A Docker-based build and release job. This uses an upstream workflow
along with a multi-stage Dockerfile to build an image with the ref's
binary.

If triggered via PR or push to main, this pushes a pre-release image to
the registry.

If triggered via tag, this pushes a release image and creates a Github
release.

Signed-off-by: Travis Raines <571832+rainest@users.noreply.github.com>
@rainest rainest requested a review from cjh1 November 18, 2025 17:16
@synackd
Copy link
Copy Markdown

synackd commented Nov 18, 2025

Is there a limiting technical reason we can't do this with Goreleaser? Goreleaser has sort of become the de facto standard for release builds.

@rainest
Copy link
Copy Markdown
Contributor Author

rainest commented Nov 18, 2025

Is there a limiting technical reason we can't do this with Goreleaser? Goreleaser has sort of become the de facto standard for release builds.

Yes and no. There's a paywall reason that blocks the good technical solution, and the bad technical solutions are bad. There was some discussion between Alex, Broadwing, and I in the #github-org-automation channel on community Slack, and he or I can probably discuss with you in... likely next week's Wednesday sync? Wasn't sure on this week's re Supercomputing.

PCS is, as mentioned, a good lighthouse candidate because it's where we tested previously for the Docker stuff, and because its #48 never got off the ground.

If that works well here, I'm looking at moving to this as the de facto standard, because it can do everything we need from GoReleaser, as well as things that GoReleaser doesn't let you do without a pro submission, and makes the "build local Docker image from completely unpushed code" workflow less something that requires some undocumented goreleaser snapshot local run , and just works with vanilla docker buildx build or podman build.

This is a bit of competing UX between stuff LANL knows and works for them and stuff that I know and have demonstrated has parity and beyond parity, such is OSS: people will suggest alternatives and make a case for them.

@rainest rainest enabled auto-merge (rebase) November 18, 2025 20:53

CMD /usr/local/bin/power-control

ENTRYPOINT ["/sbin/tini", "--"]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need another Dockerfile?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

To build a real tall stack of em. We've got so many, we may as well continue and build a Dockerfile staircase to the moon.

This is another instance of existing stuff left in place pending full vet of the new system, to leave an easy revert path if I screwed up something major. Eventually, I expect to replace the existing Dockerfile contents with the contents of Dockerfile.build.

I can possibly merge Dockerfile.debug into it as well, since it was separate for similar "doesn't work with the GoReleaser-style 'binary comes from a mystery black box prior to docker build' pipeline" reasons.

The test ones will have to remain separate AFAIK.

@rainest rainest merged commit a1871a5 into main Nov 19, 2025
16 checks passed
@rainest rainest deleted the rainest/docker-build-release branch November 19, 2025 15:29
@synackd
Copy link
Copy Markdown

synackd commented Nov 19, 2025

@rainest Thanks for the info. I wasn't aware of that context.

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.

3 participants