12. Publishing schema changes
5m

Overview

We're almost there! Let's run through what pushing our changes to tutorial-land production looks like.

In this lesson, we will:

  • Publish a schema to the schema registry using the
  • Inspect the results of a in Studio

Coordinating schema and code changes

So far, we've only been talking about schema changes and how they should be published to . But we can't forget about our codebase changes, our ! These include the changes we made to the functions to make our schema work and the schema file itself. We need to deploy our local changes to production.

Because we're just working with local in tutorial-land, we don't need to actually deploy any of our changes. You can learn more about coordinating schema and code changes in a production environment in this Apollo tech note.

Publishing schema changes

We do need to publish our new schema to .

Note: It's good practice to run a schema check and confirm it's passing before publishing the schema. This is usually handled in the CI/CD pipeline.

To do this, we'll use the 's rover subgraph publish command again. We don't need to include the routing URL this time, since it hasn't changed.

rover subgraph publish GRAPHREF@GRAPHVARIANT \
--schema schema.graphql \
--name soundtracks

You'll need to confirm that we're publishing a localhost URL. If all goes well, we should see the terminal output with a message confirming that the has been published and the has been updated!

Inspecting a launch in Studio

What happens after a schema is published to the registry? A starts! Let's take a peek at that process in Studio.

Navigate to the Launches page. Click on the latest in the list.

https://studio.apollographql.com

The Studio Launches page showing the results of the latest launch

We can see that the Launch Sequence section for this specific follows the steps we had talked about earlier:

  • Build Completed refers to the process of building a (also known as ).

  • Schema Published refers to the made available to Apollo Uplink.

  • Launch Completed is self-explanatory! Our launch successfully completed! 🎉

On the right-hand side, we can also take a look at the output and a summary of our schema changes.

If everything looks good to go, we should be able to for the new recommendedPlaylists for a recipe.

🚀 Feature in production!

First, make sure your local is running. In a new terminal window, navigate to the Router folder, then run:

Router
APOLLO_KEY=<APOLLO_KEY> APOLLO_GRAPH_REF=<APOLLO_GRAPH_REF> ./router --config supergraph-config.yaml

Note: Remember, you can find the values to APOLLO_KEY and APOLLO_GRAPH_REF in your .env file.

Next, let's go to Explorer (in Studio this time, not Sandbox!) and run that dream .

query GetRecipeWithPlaylists {
randomRecipe {
name
description
ingredients {
text
}
instructions
recommendedPlaylists {
id
name
description
tracks {
id
name
durationMs
explicit
}
}
}
}

You should be seeing data come back, with everything we needed. Our launch was successful! 🎉

https://studio.apollographql.com

Explorer - returning data from the dream query

Task!

Key takeaways

  • A launch represents the complete process of making schema updates to a . A is triggered when a schema is published to .
  • To publish a , use the rover subgraph publish command.
  • We can inspect the results of a through the Studio Launches page.

Conclusion

And you've done it! Though we began with a simple , we used the principles of federation and to bring a brand new API into the mix. Using entities, we connected meals to music for anyone in the mood to cook up something new. We ensured that these new and exciting changes were shipped safely using rover dev, , and .

Thanks for continuing with us on this journey into , , and Hot Chocolate. Check out the other courses has to offer—and keep on building your graph!

Previous

Share your questions and comments about this lesson

This course is currently in

beta
. Your feedback helps us improve! If you're stuck or confused, let us know and we'll help you out. All comments are public and must follow the Apollo Code of Conduct. Note that comments that have been resolved or addressed may be removed.

You'll need a GitHub account to post below. Don't have one? Post in our Odyssey forum instead.