Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set up workflows to add binaries for divviup-cli on github release #492

Open
inahga opened this issue Sep 12, 2023 · 3 comments
Open

Set up workflows to add binaries for divviup-cli on github release #492

inahga opened this issue Sep 12, 2023 · 3 comments

Comments

@inahga
Copy link
Contributor

inahga commented Sep 12, 2023

So that subscribers can download a binary release instead of needing a Rust toolchain and needing to compile the binary.

I think these platforms are a good starting point:

  • Windows amd64
  • MacOS aarch64
  • MacOS amd64
  • Linux amd64 (statically linked binary)
  • Linux aarch64 (statically linked binary)

Additional considerations:

  • Linux packaging--static binaries just get us started.
  • App signing requirements for Windows and MacOS.
@inahga inahga added the CLI label Sep 12, 2023
@jbr jbr changed the title Publish binary releases for divviup-cli Set up workflows to add binaries for divviup-cli on github release Sep 13, 2023
@jbr jbr added the Ops/Admin label Oct 2, 2023
@tgeoghegan
Copy link
Contributor

An important question here is where to store the binaries we build. I see two obvious options:

We could attach them to the GitHub release. Per GH docs, "[t]here is no limit on the total size of a release, nor bandwidth usage", so attaching 4-6 ~12 MB binaries should be no problem. This seems fairly natural if we expect to direct potential adopters to our GitHub repos and have them work with the READMEs on divviup/divviup-api; they won't have to go too far to find links to the binaries.

We could also create a generic repository in Google Artifact Registry and upload binaries there. The downsides are that (1) this would cost us money and (2) it might not be quite as discoverable as storing them in GitHub, though in either case we could provide a link to the latest binary in a README.

I lean toward using GitHub artifact storage, because it'll be less infra for us to set up and wrangle and it'll make the artifact build action simpler (no need to set up identity federation with GCP).

tgeoghegan added a commit that referenced this issue Jun 7, 2024
Adds a simple `cli-release.yml` GitHub Actions workflow that just builds
`divviup-cli` on Ubuntu, Windows and macOS runners. The goal here is
just to get a basic workflow checked in and acknowledged by GitHub
Actions so that I can then debug and iterate on it in a later PR.

Part of #492
@inahga
Copy link
Contributor Author

inahga commented Jun 7, 2024

Binary builds inside GH release seem like the de-facto standard for software not present in package managers, so SGTM.

tgeoghegan added a commit that referenced this issue Jun 7, 2024
Adds a simple `cli-release.yml` GitHub Actions workflow that just builds
`divviup-cli` on Ubuntu, Windows and macOS runners. The goal here is
just to get a basic workflow checked in and acknowledged by GitHub
Actions so that I can then debug and iterate on it in a later PR.

Part of #492
tgeoghegan added a commit that referenced this issue Jun 10, 2024
Builds `divviup-cli` for Windows, macOS and Linux, across x86_64 and
aarch64. The resulting executables are attached to the release, as in
https://github.com/divviup/divviup-api/releases/tag/0.3.7.

Part of #492
tgeoghegan added a commit that referenced this issue Jun 10, 2024
Builds `divviup-cli` for Windows, macOS and Linux, across x86_64 and
aarch64. The resulting executables are attached to the release, as in
https://github.com/divviup/divviup-api/releases/tag/0.3.7.

Part of #492
tgeoghegan added a commit that referenced this issue Jun 11, 2024
Builds `divviup-cli` for Windows, macOS and Linux, across x86_64 and
aarch64. The resulting executables are attached to the release, as in
https://github.com/divviup/divviup-api/releases/tag/0.3.7.

Part of #492
@tgeoghegan
Copy link
Contributor

divviup-api GitHub releases will now include binaries for (Windows, macOS, Linux) x (aarch64, x86_64). We shouldn't quite close this, though, because there's further work here.

On macOS, it may be possible for us to sign or notarize the binaries so that users don't have to click around quite so many warnings or strip quarantine xattrs when they download binaries.

On Windows, some (but not all!) of the binaries we build flagged Chrome and Edge's malware detection (in both cases, this may actually be Windows Defender). It might be possible for us to somehow bless our binaries with Microsoft to make them easier to download.

In both cases, I'm not sure if there are automation-friendly solutions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants