mitchellh / gon

Sign, notarize, and package macOS CLI tools and applications written in any language. Available as both a CLI and a Go library.
MIT License
1.47k stars 97 forks source link

[Tracking] Compiled for darwin/arm64 #40

Open skyzyx opened 3 years ago

skyzyx commented 3 years ago

Important Factoids

Apple M1 chip is here. Porting work is occurring for everyone. Opening a tracking ticket to provide public visibility on the work.

References

Are there any other GitHub issues (open or closed) or Pull Requests that should be linked here? For example:

juliangruber commented 2 years ago

Some resources for this:

Has anyone looked into which changes are required to make this work with gon?

skyzyx commented 2 years ago

I ended up just switching to Apple’s notarytool and adding that to my GoReleaser pipeline.

https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow

juliangruber commented 2 years ago

That's good to know! Do you have this set up in an open source repository by chance, or could share the relevant bits?

skyzyx commented 2 years ago

No, but in .goreleaser.yml, here's how I sign Windows/Linux with GPG and notarize the Mac binary.

signs:
  - id: gpg
    ids:
      - linux-archive
      - windows-archive
    signature: "${artifact}.sig"
    cmd: gpg2
    args:
      [
        "-u",
        "{{ .Var.GPGKeyID }}",
        "--output",
        "${signature}",
        "--detach-sign",
        "${artifact}",
      ]
    artifacts: all

  - id: gatekeeper
    ids:
      - macos-archive
    signature: "${artifact}"
    cmd: xcrun
    args:
      [
        "notarytool",
        "submit",
        "./dist/{{ .ProjectName }}-{{ .Version }}.darwin.universal.zip",
        "--apple-id",
        "{{ .Env.AC_APPLE_ID }}",
        "--password",
        "{{ .Env.AC_PASSWORD }}",
        "--team-id",
        "{{ .Env.AC_TEAM_ID }}",
        "--progress",
        "--wait",
      ]
    artifacts: all