Skip to content

Remove duplicate macOS GUI build from build-gui matrix #13

@iiAtlas

Description

@iiAtlas

Problem

The macOS GUI is currently being built twice in our release workflows:

  1. First build: In the build-gui job matrix (build-and-package.yml), macOS GUI is built on macos-latest and uploaded as an artifact
  2. Second build: In the package job, GoReleaser runs with a before.hooks that calls ./scripts/build-wails.sh, which defaults to building macOS GUI again

Only the second build is actually used - the first build artifact is never downloaded by the package job.

Proposed Solution

Remove macOS from the build-gui matrix and rely on the GoReleaser hook to build it.

This makes the build flow:

  • Linux/Windows GUI: Built on native platforms via build-gui job (required due to CGO + system libraries)
  • macOS GUI: Built by GoReleaser hook on the macOS runner (where signing/notarization happens)

Rationale

  1. Consistency with existing design: The signing/notarization hooks in .goreleaser.yaml already expect GoReleaser to build macOS
  2. Simpler artifact handling: No need to coordinate downloading macOS artifacts
  3. Performance: Saves ~10-15 minutes by eliminating duplicate macOS build
  4. Clarity: Makes it obvious where each platform is built

Implementation

File: .github/workflows/build-and-package.yml

Remove the macOS entry from the build-gui matrix:

strategy:
  matrix:
    include:
      - name: linux-amd64
        os: ubuntu-22.04
        platforms: linux/amd64
        cc: gcc
        artifact-name: gui-linux-amd64
      - name: linux-arm64
        os: ubuntu-22.04-arm
        platforms: linux/arm64
        cc: gcc
        artifact-name: gui-linux-arm64
      # Remove this entry:
      # - name: macos
      #   os: macos-latest
      #   platforms: darwin/amd64,darwin/arm64
      #   cc: ""
      #   artifact-name: gui-macos
      - name: windows
        os: windows-latest
        platforms: windows/amd64
        cc: ""
        artifact-name: gui-windows

No changes needed to .goreleaser.yaml - it already has the build hook configured correctly.

Benefits

  • 🚀 Faster CI (eliminates duplicate build)
  • 🧹 Cleaner artifact handling
  • ✅ No functional changes (same binaries produced)
  • 📦 Maintains existing signing/notarization flow

Related Files

  • .github/workflows/build-and-package.yml (build-gui matrix)
  • .goreleaser.yaml (before.hooks that builds macOS)
  • scripts/build-wails.sh (defaults to darwin platforms)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions