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

chore: prebuilt ARM binaries for linux and macos #1356

Merged
merged 23 commits into from
Nov 10, 2022

Conversation

EverlastingBugstopper
Copy link
Contributor

@EverlastingBugstopper EverlastingBugstopper commented Sep 29, 2022

fixes #582

This PR supercedes #1137 as the rebase was much too gnarly. This is essentially that same PR. Copying the description w/updated status below:

We should not merge this PR and release ARM support until we can run the latest rover supergraph compose and rover dev commands on ARM.

The following must happen, in order, before landing this PR.

  • Test ARM support with federation-rs release candidates
    • Release[email protected] (javascript)
    • Release[email protected] (rust)
    • Test downloading and running supergraph compose with 2.0.6-rc.0 in a supergraph.yaml with rover built from main natively on an M1, and in Docker on an M1
    • Continue releasing release candidates until it all works. Hopefully it is just 2.0.6-rc.0. If that works, it is safe to assume 0.x will work, so no release candidate will be needed there. update: it was not that easy, the next two steps are new
    • Remove the CI builds for aarch64-apple-darwin apollographql/federation-rs because V8 snapshots cannot be cross-compiled from x86_64 machines and CircleCI does not currently provide native ARM64 Mac machines meaning we have to cross-compile if we want ARM binaries at all. If either of those things change, we will revisit this decision.
    • Test downloading and running supergraph compose with 2.0.6-rc.1 in a supergraph.yaml with rover built from main natively on an arm ubuntu device, and in Docker on an M1
  • Release first stable federation-rs releases with native ARM support (only Linux binaries, no ARM64 MacOS binaries)
  • Prepare ARM support for Rover
    • Cut [email protected]
    • Test downloading and running supergraph compose natively on an M1, and in Docker on an M1
    • Release more rcs until we are confident everything works
    • Wait for the cloud router to default to version 2.1.x

@EverlastingBugstopper EverlastingBugstopper self-assigned this Sep 30, 2022
@EverlastingBugstopper EverlastingBugstopper added the feature 🎉 new commands, flags, functionality, and improved error messages label Sep 30, 2022
@EverlastingBugstopper EverlastingBugstopper added this to the vNext milestone Sep 30, 2022
@EverlastingBugstopper EverlastingBugstopper modified the milestones: v0.9.1, vNext Sep 30, 2022
@EverlastingBugstopper
Copy link
Contributor Author

known issue in rc.0 - if you npm i --save-dev @apollo/rover@beta, it fails with the error:

One or more of the parameters you passed to the Binary constructor are invalid:
You must specify the name of your binary

Correct usage: new Binary("my-binary", "https://example.com/binary/download.tar.gz")

I just pushed a fix, but heading out for the weekend. i'll cut another rc on monday.

@danilobuerger
Copy link

@EverlastingBugstopper thank you for your awesome work. Could we also get a musl arm64 build? They are provided for x86 so it makes sense (at least to me) to also provide them for arm64. This would allow alpine arm64 workloads to just use rover dists.

@abernix
Copy link
Member

abernix commented Oct 27, 2022

@danilobuerger Just to set expectations: Which Rover commands are you hoping to use on your arm64 musl build? It is not possible to use rover supergraph compose in a Musl build right now due to technical constraints.

@danilobuerger
Copy link

@abernix Personally I just use graph check and graph publish.

@EverlastingBugstopper EverlastingBugstopper merged commit 175ce87 into main Nov 10, 2022
@EverlastingBugstopper EverlastingBugstopper deleted the avery/rebase-arm branch November 10, 2022 20:37
EverlastingBugstopper added a commit that referenced this pull request Nov 14, 2022
# [0.10.0] - 2022-11-10

> Important: 1 potentially breaking change below, indicated by **❗
BREAKING ❗**

## ❗ BREAKING ❗

- **Fix implementation of `--header` argument - @EverlastingBugstopper,
#1369 fixes #1365**

This change tightens up usage of the `--header` argument used for
`introspect` commands by disallowing previously valid (but undocumented)
usage like this: `--header "Header-1: value" "Header-2: value"`. After
this change, you _must_ conform to what we have in the documentation,
which indicates separate instances of the `--header` argument for each
header, like so: `--header "Header-1: value" --header "Header-2:
value"`.

## 🚀 Features

- **Provide prebuilt binaries for ARM devices - @EverlastingBugstopper,
#1356 fixes #582**

As of this release, [`rover.apollo.dev`](https://rover.apollo.dev)
delivers prebuilt binaries from our GitHub release for ARM devices. Most
notably this means that Docker on M1 devices should work out of the box.
You should be able to replace any custom builds in your tooling pipeline
with a call to the [official curl
installer](https://www.apollographql.com/docs/rover/getting-started/#linux--macos-installer).

- **Report downstream check task results - @sachindshinde, #1385**

When running `rover subgraph check` commands, if the proposed schema
would cause downstream failures (i.e. with contracts), those failures
are now reported in the check response.

- **Faster `rover supergraph compose` - @EverlastingBugstopper, #1392
fixes #992**

Rover now resolves all subgraph schemas in parallel when running `rover
supergraph compose` on a `supergraph.yaml` file. This should improve the
speed to compose large supergraphs significantly. This change also
drastically improves error handling by reporting _all_ issues with
resolving subgraph schemas (and informing you which schema(s) failed to
resolve) rather than exiting on the first failed schema resolution.

- **Add `--polling-interval` to `rover dev` - @patrick91, #1377 fixes
#1221**

You can now set `--polling-interval` when running `rover dev` to change
the frequency of introspection poll requests for subgraphs that don't
provide the schema from the file system with the `--schema` argument.

- **Adds `--skip-update-check` to skip the once-per-day update check -
@Tsing, #1396 fixes #1394**

Once per day, Rover checks if there is a new version available for
update and notifies the user if there is. There is now a flag you can
pass to disable this check: `--skip-update-check`.

- **Respect the `NO_COLOR` environment variable - @chnn, #1360**

`rover` will not use color in any output when executed with the
`NO_COLOR` environment variable set to `true`.

## 🛠 Maintenance

- **Updates from clap v3 to clap v4 - @EverlatingBugstopper, #1404 fixes
#1400**

This release updated the command line argument parsing library to major
version 4. There should be no noticeable compatibility issues with this
update, only lighter binaries. The look and feel of the main `rover
--help` output has changed to a neutral color palette along with this
change.

- **Updates Rust to 1.65.0 - @EverlastingBugstopper, #1399**

- **Updates node.js to v18 - @renovate, #1389**

- **Updates node dev-dependencies - @renovate, #1204 and zs#1398**

- **Remove dependency on the `saucer` crate - @EverlastingBugstopper,
#1402**

- **Updates `introspector-gadget` to 0.2.0 - @EverlastingBugstopper,
#1386**

- **Only cache dependencies in CI, not whole `/target` -
@EverlastingBugstopper, #1387**

- **Use `engine@main` instead of `engine@current` to fetch the API
schema - @EverlastingBugstopper, #1368**

- **Use `lychee` as a link checker instead of npm - @ptondereau, #1328
fixes #1306**

We now use a Rust-based link checker to check the links in the Rover
repository instead of a node-based link checker (that was much more
flaky).

- **Describe latest federation versions in
`./latest_plugin_versions.json` - @EverlastingBugstopper, #1363**

When you run `rover supergraph compose`, the latest version of
composition is automatically downloaded to your machine, these latest
version numbers are now stored in `./latest_plugin_versions.json` in the
Rover repo.

- **Rename `apollo-` headers to `apollographql-` headers - @jsegaran,
#1411**

- **Update npm to v9 - @renovate, #1412**

## 📚 Documentation

- **Update studio algolia key to graphos - @trevorblades, #1384**

- **Fix some broken links - @StephenBarlow, #1376**

- **Fix a typo in the migration guide instructing the use of `check`
instead of `publish` - @EverlastingBugstopper, #1364 fixes #1361**
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature 🎉 new commands, flags, functionality, and improved error messages
Projects
None yet
Development

Successfully merging this pull request may close these issues.

linux arm64 dist
3 participants