Skip to content

Manage all CI versions through mise and use binstall#7393

Merged
abernix merged 4 commits intodevfrom
abernix/mise
May 6, 2025
Merged

Manage all CI versions through mise and use binstall#7393
abernix merged 4 commits intodevfrom
abernix/mise

Conversation

@abernix
Copy link
Member

@abernix abernix commented May 5, 2025

This pull request introduces changes to the CircleCI configuration, replacing various custom installation steps with the use of mise for tool version management. These changes simplify the CI pipeline, improve maintainability, and ensure consistency across different environments. This allows:

  • Local tooling to use the same version as the CI version using a single version number source of truth.
  • Allows Renovate to be able to understand version updates.
  • Allows us to leverage pre-compiled binaries for both local and CI tooling using cargo binstall which mise supports
  • Removes a decent amount of CircleCI YAML.
  • Improve the local developer on-boarding experience for the repository.
  • Different environments for CI and Windows and local dev.

Nuances

  • To fix a Window-ism that wasn't worth battling: This changes the invocation of the cargo install'd xtask command to be invoked via $HOME/.cargo/bin/xtask (where it is installed after we install it from our source) rather than fixing the PATH. It seemed like a huge time savings to not go get that sorted.
  • mise (a package manager) is installed on Windows using scoop (a package manager that we now install directly), rather than chocolatey (a package manager that was already installed). It was tempting to use chocolatey since it was installed, but we've had many bad experiences with it at this point. The recommended way to install mise on Windows is with scoop, so that seemed like the way to go. After this initial bootstrapping, using mise all the way seemed like the way to go.

@github-actions

This comment was marked as off-topic.

@svc-apollo-docs
Copy link
Collaborator

svc-apollo-docs commented May 5, 2025

✅ Docs preview has no changes

The preview was not built because there were no changes.

Build ID: 37d2284f70b51f5cfe77fddc

@abernix abernix requested a review from a team May 5, 2025 15:35
Copy link
Member

@dylan-apollo dylan-apollo left a comment

Choose a reason for hiding this comment

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

Cool! Should we also mention/recommend Mise here? I've been installing things manually, reading versions from CCI config like a fool

@abernix
Copy link
Member Author

abernix commented May 5, 2025

@dylan-apollo

Cool! Should we also mention/recommend Mise here? I've been installing things manually, reading versions from CCI config like a fool

I think we should, yes, but I was going to decouple this from that and make sure i could bring everyone around to this and prove it works before I update the docs. I also have a number of other updates I want to make to the docs, including DEVELOPMENT.md.

@abernix abernix enabled auto-merge May 6, 2025 15:24
@abernix abernix merged commit b810499 into dev May 6, 2025
15 checks passed
@abernix abernix deleted the abernix/mise branch May 6, 2025 16:02
@abernix
Copy link
Member Author

abernix commented May 6, 2025

@mergify backport 1.x

@mergify
Copy link
Contributor

mergify bot commented May 6, 2025

backport 1.x

✅ Backports have been created

Details

@abernix
Copy link
Member Author

abernix commented May 6, 2025

@Mergifyio backport 2.2.1

@mergify
Copy link
Contributor

mergify bot commented May 6, 2025

backport 2.2.1

✅ Backports have been created

Details

unzip protoc.zip -d $HOME/.local
fi
curl https://mise.jdx.dev/install.sh | sh
mise activate bash >> "$BASH_ENV"
Copy link
Member

Choose a reason for hiding this comment

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

I might be wrong but I think mise activate is for interactive prompts, and you want mise env instead

fi
curl https://mise.jdx.dev/install.sh | sh
mise activate bash >> "$BASH_ENV"
mise trust
Copy link
Member

Choose a reason for hiding this comment

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

This shouldn't be necessary in CI

Copy link
Member Author

Choose a reason for hiding this comment

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

interesting. didn't know that, but makes sense. will remove it in another PR.

echo 'alias find=/bin/find' >> "$BASH_ENV"
echo 'alias sort=/bin/sort' >> "$BASH_ENV"
echo 'export EXECUTABLE_SUFFIX=".exe"' >> "$BASH_ENV"
echo 'export PATH="$HOME/AppData/Local/mise/shims:$HOME/scoop/apps/mise/current/bin:$HOME/scoop/shims:$PATH"' >> "$BASH_ENV"
Copy link
Member

Choose a reason for hiding this comment

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

Similarly would suggest mise env instead of manually writing the line. You can always add more bits to PATH with mise itself.

Copy link
Member Author

Choose a reason for hiding this comment

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

Windows just wasn't playing ball here immediately, but maybe it was because i was using activate. i ended up just copying and pasting something that just worked when I was SSH'd in, but I'll try again in another PR. Mise basically does say this is fine in their docs and that they'd never change it, but still wouldn't mind the abstraction. Thanks!

Copy link
Member

@glasser glasser May 7, 2025

Choose a reason for hiding this comment

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

I missed that this was the Windows section... I might still be right though, idk

Aguilarjaf added a commit to ExpediaGroup/apollo-router that referenced this pull request Jun 9, 2025
* Remove duplicate reqwest (apollographql#7329)

* Port first batch of supgraph validation tests (apollographql#7321)

- Adds a portion of the subgraph validation tests being ported over from the federation repo.
- Exposes error fields on SubgraphError and FederationError for use in the tests.
  - Creates a public getter method for SubgraphError's error field
  - Creates a public getter method returning an array of errors associated with a given FederationError
- Ports over the build_for_errors() test utility.

* chore(deps): update xtask/Cargo.lock h2 dependency (apollographql#7336)

* [docs] Add new page for query planning best practices (apollographql#7263)

Co-authored-by: Lucas Leadbetter <5595530+lleadbet@users.noreply.github.com>
Co-authored-by: Edward Huang <edhuang@gmail.com>

* fix: terminate unused Redis connections on schema update (apollographql#7319)

Co-authored-by: Renée <renee.kooi@apollographql.com>

* test(federation/composition): ported the rest of "@core/@link handling" tests  (apollographql#7335)

* Add code for add_shareable and has_applied_directive (apollographql#7327)

* Basic changes to connect/

* docs: otlp metrics exporters (apollographql#7334)

* Removes redundant clones

* add const fn warning

* Remove const_fn warning

* Apply comments

* Remove todo comment

* Update apollo-federation/src/sources/connect/json_selection/parser.rs

Co-authored-by: Dylan Anthony <dylan@apollographql.com>

* Update apollo-federation/src/sources/connect/json_selection/parser.rs

Co-authored-by: Dylan Anthony <dylan@apollographql.com>

* Reformats code after suggestions

* fix(deps): update rust crate thiserror to v2 (apollographql#7288)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renée Kooi <renee.kooi@apollographql.com>

* deps: update apollo-compiler (apollographql#7338)

* Add _dd.measured to spans when agent sampling is enabled (apollographql#7344)

Co-authored-by: bryn <bryn@apollographql.com>

* Fix metric `apollo.router.operations.batching.size` (apollographql#7306)

Signed-off-by: Benjamin <5719034+bnjjj@users.noreply.github.com>
Co-authored-by: Jesse Rosenberger <git@jro.cc>

* Clarify coprocessor config `context: true` behaviour (apollographql#7349)

* Avoid unnecessary cloning in the deduplication plugin (apollographql#7347)

* expanded supergraph now uses join spec v0.5 so that we don't skip the… (apollographql#7351)

* make use of new build image when building the router (apollographql#7355)

* Move content negotiation to a plugin (apollographql#7316)

Co-authored-by: Iryna Shestak <shestak.irina@gmail.com>

* Port batch of `subgraph_validation_tests` from federation repo (apollographql#7345)

* DOC-391 clarify tracing exporters configs of OTLP

* edit overview

* Add subgraph validation for interface objects (apollographql#7317)

Port `validateKeyOnInterfacesAreAlsoOnAllImplementations()` and `validateInterfaceObjectsAreOnEntities()` from the JS composition code, i.e. the per-subgraph validations for interface objects. Note that as part of this, `printHumanReadableList()` and `joinStrings()`, were also ported.

* rewrite upgrade_subgraphs_if_necessary() to minimize cloning and fix tests. (apollographql#7346)

* Update schema upgrader to use apollo-compiler 1.28 (apollographql#7356)

* test(federation/composition): Port subgraph validation tests (part 2) (apollographql#7343)

Co-authored-by: Taylor Ninesling <taylor.ninesling@apollographql.com>

* Fix clippy when run with `--all-features` (apollographql#7352)

* Move aggressive lints to connectors module

* temporarily ignore failing tests in dev (apollographql#7375)

* fix-less-performant-code

* docs: fix typo in distributed caching (apollographql#7358)

* docs: typo on PQ docs (apollographql#7373)

* Fix router enforcement of connect spec version. (apollographql#7377)

* Add a test in connectors batching for handling gaps (apollographql#7328)

* Remove fed1 links and reexpand after fixing federation arguments (apollographql#7374)

* DOC-448 clarify apollo_router_session_count_active removal

* feat(federation/composition): ported `@external` directive validation (apollographql#7381)

* Remove 0.2 version checks in composition for headers & connect-on-type (apollographql#7387)

* feat(federation/composition): implemented `UNSUPPORTED_ON_INTERFACE` errors (apollographql#7382)

* implement ->joinNotNull method (apollographql#7165)

Co-authored-by: Ben Newman <ben@apollographql.com>

* chore: remove dead code (apollographql#7391)

* Auto-upgrade connect 0.1 subgraphs to 0.2 in composition (apollographql#7388)

* telemetry: remove excessive bool from DisplayRouterResponse(refactoring) (apollographql#7331)

* Simplify condition handling in coprocessor (apollographql#7320)

* Implement demand control directive validations (apollographql#7376)

* Remove aws-lc from dependencies (apollographql#7389)

* Account for spec aliases/imports when auto-injecting `link` spec directives/types (apollographql#7365)

When the `@link` directive definition is missing, we have some logic that automatically adds the `link` spec's type/directive definitions to the schema. We weren't accounting for the link spec's aliases/imports when doing this, while the JS codebase was, so we've ported that logic here. Note that this logic has several bugs, but we're going to port it as-is for now and address the bugs later.

* chore(federation/composition): deleted a duplicate test module `link_handling_tests` (apollographql#7392)

* fix: decrease log level for JWT authentication failure (apollographql#7396)

* fix: make sure all input types end up in the expanded supergraph (apollographql#7383)

* remove apollographql#7383 changeset (apollographql#7401)

* Revert "Add _dd.measured to spans when agent sampling is enabled" (apollographql#7403)

* fix: spans should only include path in `http.route` (apollographql#7390)

* fix: propagate client name and version modifications through telemetry (apollographql#7369)

* Manage all CI versions through mise and use binstall (backport apollographql#7393) (apollographql#7410)

* prep release: v2.2.1-rc.0

* macos specific mise: we need x86_64-apple-darwin + aarch64-apple-darwin

these both need to be installed on our releasing image

* Remove no-longer-necessary installation of `gh` via Orb ✨

This is now accomplished with `gh`

* prep release: v2.2.1-rc.1

* Include inadvertently removed fetch_dependencies

This was inadverently removed in apollographql#7410 but should continue to exist.

* prep release: v2.2.1

---------

Signed-off-by: Benjamin <5719034+bnjjj@users.noreply.github.com>
Co-authored-by: Dylan Anthony <dylan@apollographql.com>
Co-authored-by: Chidimma O <conwuegb@users.noreply.github.com>
Co-authored-by: Jesse Rosenberger <git@jro.cc>
Co-authored-by: Shane Myrick <mail@shanemyrick.com>
Co-authored-by: Lucas Leadbetter <5595530+lleadbet@users.noreply.github.com>
Co-authored-by: Edward Huang <edhuang@gmail.com>
Co-authored-by: Caroline Rodewig <16093297+carodewig@users.noreply.github.com>
Co-authored-by: Renée <renee.kooi@apollographql.com>
Co-authored-by: Duckki Oe <duckki.oe@apollographql.com>
Co-authored-by: Chris Lenfest <clenfest@apollographql.com>
Co-authored-by: Julia Naomi <jnboeira@outlook.com>
Co-authored-by: Edward Huang <edward.huang@apollographql.com>
Co-authored-by: Julia Naomi <naomijub@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Bryn Cooke <BrynCooke@gmail.com>
Co-authored-by: bryn <bryn@apollographql.com>
Co-authored-by: Coenen Benjamin <benjamin.coenen@hotmail.com>
Co-authored-by: Gary Pennington <gary@apollographql.com>
Co-authored-by: Lenny Burdette <lenny@apollographql.com>
Co-authored-by: Iryna Shestak <shestak.irina@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Sachin D. Shinde <sachin@apollographql.com>
Co-authored-by: Taylor Ninesling <taylor.ninesling@apollographql.com>
Co-authored-by: Sam Friedman <sam.friedman@apollographql.com>
Co-authored-by: Dale Seo <5466341+DaleSeo@users.noreply.github.com>
Co-authored-by: Ben Newman <ben@apollographql.com>
Co-authored-by: Dariusz Kuc <9501705+dariuszkuc@users.noreply.github.com>
Co-authored-by: Ivan Goncharov <ivan.goncharov.ua@gmail.com>
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.

5 participants