Skip to content

chore: fix goreleaser configurations using new dockers_v2#5

Merged
creativeprojects merged 4 commits intomainfrom
new-goreleaser-dockers-v2
Feb 17, 2026
Merged

chore: fix goreleaser configurations using new dockers_v2#5
creativeprojects merged 4 commits intomainfrom
new-goreleaser-dockers-v2

Conversation

@creativeprojects
Copy link
Owner

@creativeprojects creativeprojects commented Feb 17, 2026

Summary by CodeRabbit

  • Chores
    • Added configuration validation to the build pipeline.
    • Enabled publishing container images to GitHub Container Registry (ghcr.io) in addition to existing registries.
    • Simplified container image build configuration.

Copilot AI review requested due to automatic review settings February 17, 2026 20:44
@coderabbitai
Copy link

coderabbitai bot commented Feb 17, 2026

📝 Walkthrough

Walkthrough

The changes update CI/CD workflows and GoReleaser configuration to authenticate with GitHub Container Registry (ghcr.io) and modernize Docker image configuration using dockers_v2. The Dockerfile ARG is simplified.

Changes

Cohort / File(s) Summary
GitHub Container Registry Authentication
.github/workflows/docker.yml, .github/workflows/release.yml
Add docker/login-action@v3 step to authenticate to ghcr.io using GitHub actor credentials and GITHUB_TOKEN, placed after DockerHub login.
Build Workflow
.github/workflows/build.yaml
Add "Check GoReleaser configurations" step running goreleaser-action@v6 with version ~> v2 to validate two GoReleaser config files.
GoReleaser Configuration
.goreleaser.yml
Replace legacy dockers with dockers_v2, migrate from per-architecture image templates to unified image list supporting both creativeprojects/imap and ghcr.io/creativeprojects/imap registries. Consolidate tags, labels, and platforms metadata; remove build_flag_templates, per-arch blocks, and docker_manifests.
Dockerfile
build/Dockerfile
Remove ARG ARCH=amd64 default argument; TARGETPLATFORM handling and other build instructions preserved.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • chore: goreleaser #4: Related dockers_v2 migration and GoReleaser configuration updates alongside GitHub Actions workflow pinning adjustments.

Poem

🐰 Hops of joy through container gates,
GitHub's ghcr now validates,
V2 dockers bring unified grace,
Multi-arch images find their place! 🚀

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'chore: fix goreleaser configurations using new dockers_v2' accurately describes the main change: upgrading goreleaser configs to use the new dockers_v2 format across multiple workflow files and configuration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch new-goreleaser-dockers-v2

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR migrates the GoReleaser Docker configuration from the deprecated dockers format to the newer dockers_v2 format, consolidating the multi-platform Docker build setup and adding GitHub Container Registry as a second publishing target.

Changes:

  • Migrated from separate dockers and docker_manifests sections to unified dockers_v2 configuration in .goreleaser.yml
  • Removed unused ARCH build argument from Dockerfile (only TARGETPLATFORM is used)
  • Added GitHub Container Registry (ghcr.io) login steps to release and Docker workflows
  • Added GoReleaser configuration validation to the build workflow

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
.goreleaser.yml Migrated from dockers + docker_manifests to dockers_v2, added ghcr.io as publishing target, simplified multi-platform build configuration
build/Dockerfile Removed unused ARCH argument (only TARGETPLATFORM is actually used in the COPY command)
.github/workflows/release.yml Added GitHub Container Registry authentication for publishing images
.github/workflows/docker.yml Added GitHub Container Registry authentication for publishing images
.github/workflows/build.yaml Fixed indentation and added GoReleaser configuration validation step

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
.github/workflows/docker.yml (1)

51-57: ⚠️ Potential issue | 🔴 Critical

The .goreleaser-docker-only.yml config file does not exist in the repository.

The workflow (line 55) references --config .goreleaser-docker-only.yml, but this file is not present. Either this file needs to be created as part of this PR, or the workflow configuration path is incorrect. Without this file, the workflow will fail at runtime.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/docker.yml around lines 51 - 57, The workflow references a
non-existent GoReleaser config file in the goreleaser step (args: release
--clean --config .goreleaser-docker-only.yml); either add the missing
.goreleaser-docker-only.yml config to the repo with the intended Docker-only
release settings, or update the goreleaser action args to point to an existing
config (or remove the --config flag) so the step can run; locate the goreleaser
invocation in the GitHub Actions workflow (the "Run GoReleaser" job using
goreleaser/goreleaser-action@v6) and make the appropriate change.
.github/workflows/release.yml (1)

10-50: ⚠️ Potential issue | 🔴 Critical

Add Set up QEMU step to enable multi-platform Docker builds.

The .goreleaser.yml specifies platforms: [linux/amd64, linux/arm64] under dockers_v2, but this workflow lacks the QEMU emulation setup required to build linux/arm64 images on the ubuntu-latest (amd64) runner. The docker.yml workflow correctly includes docker/setup-qemu-action@v3 (line 31), but release.yml does not.

Proposed fix: add QEMU setup before GoReleaser
+      - name: Set up QEMU
+        uses: docker/setup-qemu-action@v3
+
       - name: Login to DockerHub
         uses: docker/login-action@v3
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/release.yml around lines 10 - 50, The workflow is missing
QEMU setup so arm64 images can be built on the ubuntu-latest runner; add a step
using docker/setup-qemu-action@v3 (e.g., a new step named "Set up QEMU") before
the "Run GoReleaser" step in the goreleaser job to enable multi-platform builds,
mirroring the docker/setup-qemu-action@v3 usage from the other workflow and
ensuring it runs prior to the goreleaser/goreleaser-action invocation.
🧹 Nitpick comments (1)
.github/workflows/build.yaml (1)

51-57: GoReleaser check runs on all OS matrix entries unnecessarily.

This config validation step runs on ubuntu-latest, windows-latest, and macos-latest. Since it's purely a YAML/config lint, it only needs to run once. Consider either extracting it into a separate job or adding a condition like if: matrix.os == 'ubuntu-latest'.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/build.yaml around lines 51 - 57, The "Check GoReleaser
configurations" step currently runs for every matrix OS; restrict it to run only
once by either moving it into its own job (e.g., create a new job named
goreleaser-check that runs on ubuntu-latest and contains the existing uses:
goreleaser/goreleaser-action@v6 step) or add a conditional to the existing step
like if: matrix.os == 'ubuntu-latest' so the "Check GoReleaser configurations"
step only executes on the ubuntu runner.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In @.github/workflows/docker.yml:
- Around line 51-57: The workflow references a non-existent GoReleaser config
file in the goreleaser step (args: release --clean --config
.goreleaser-docker-only.yml); either add the missing .goreleaser-docker-only.yml
config to the repo with the intended Docker-only release settings, or update the
goreleaser action args to point to an existing config (or remove the --config
flag) so the step can run; locate the goreleaser invocation in the GitHub
Actions workflow (the "Run GoReleaser" job using
goreleaser/goreleaser-action@v6) and make the appropriate change.

In @.github/workflows/release.yml:
- Around line 10-50: The workflow is missing QEMU setup so arm64 images can be
built on the ubuntu-latest runner; add a step using docker/setup-qemu-action@v3
(e.g., a new step named "Set up QEMU") before the "Run GoReleaser" step in the
goreleaser job to enable multi-platform builds, mirroring the
docker/setup-qemu-action@v3 usage from the other workflow and ensuring it runs
prior to the goreleaser/goreleaser-action invocation.

---

Nitpick comments:
In @.github/workflows/build.yaml:
- Around line 51-57: The "Check GoReleaser configurations" step currently runs
for every matrix OS; restrict it to run only once by either moving it into its
own job (e.g., create a new job named goreleaser-check that runs on
ubuntu-latest and contains the existing uses: goreleaser/goreleaser-action@v6
step) or add a conditional to the existing step like if: matrix.os ==
'ubuntu-latest' so the "Check GoReleaser configurations" step only executes on
the ubuntu runner.

@codecov
Copy link

codecov bot commented Feb 17, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 53.35%. Comparing base (e37a3e0) to head (01a5d3f).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main       #5   +/-   ##
=======================================
  Coverage   53.35%   53.35%           
=======================================
  Files          15       15           
  Lines        1612     1612           
=======================================
  Hits          860      860           
  Misses        617      617           
  Partials      135      135           
Flag Coverage Δ
unittests 53.35% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@creativeprojects creativeprojects merged commit ce51c84 into main Feb 17, 2026
4 checks passed
@creativeprojects creativeprojects deleted the new-goreleaser-dockers-v2 branch February 17, 2026 21:04
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