Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Custom Aliases in Your Continuous Delivery Pipeline

Custom Aliases in Your Continuous Delivery Pipeline

Contentful Webinars

November 19, 2020
Tweet

More Decks by Contentful Webinars

Other Decks in Technology

Transcript

  1. Housekeeping • This webinar will be recorded; we will share

    the recording and slide deck with all registrants shortly -- keep an eye on your inbox! • Please add your questions in the Q&A box, we will answer them after the presentation during the Q&A session at the end • To get in touch, get in touch on Twitter @contentful or write to us at [email protected] Before we dive in...
  2. • Not part of your version control setup • Changes

    can not be easily reverted • Often require some manual updating 8 1. Database and 2. CMS
  3. For databases • Write migrations and check them into your

    version control system • Use local containers and / or staging environments to test out structural changes before applying them to production data 9 So what to do about it?
  4. One master environment (by default) • Serves as your production

    space • Used by editors /spaces/<space_id>/ /spaces/<space_id>/environment/master/ 13 Space Environments master
  5. master Copy this (or any other) environment to get a

    sandbox setup with the same content model as the master. /spaces/<space_id>/environment/<environment_id>/ 14 Space Environments local-sandbox-1 local-sandbox-2
  6. Want to try out a new feature that involves changes

    of the content model? • You don’t want to experiment with production content • So you spin up a new environment and use it for testing 15 How would you use them?
  7. You have some nice options: • Quickly manually try out

    content model changes in a local setup Even nicer would be: • Set up a staging environment where you apply your content model changes before you apply them to the production space. • Make environments part of a CI/CD pipeline 19 Some use cases
  8. 21 • Apply programmatic content model changes • Similar to

    how you would write migrations to the structure of your database • Write your migrations in JavaScript or TypeScript What can you do with it? The migration tool
  9. 22 • Create content type • Delete content type •

    Edit content type • Create/edit/delete fields • Change field ID • Update content metadata (tags) Some Examples
  10. 26 Using the migration tool and environments we can: •

    Write repeatable content model migrations and check them into version control • Easily test out any content model changes programmatically locally by using a personal sandbox environment • Set up a staging / QA environment or a CI/CD pipeline with a dedicated contentful environment
  11. This takes a lot of stress away from the deployment

    workflow, because it gives you confidence that content model changes won’t break things. 27
  12. master staging ci Run migration scripts Run migration scripts Run

    migration scripts This still feels scary.
  13. 31 • An environment alias is a static identifier •

    You can think of it as a symlink pointing to a specified environment Environment aliases
  14. 32 • Once you opt in, you get a default

    “master” alias. • Instead of having a master environment, you now have a master alias that has a target environment. /spaces/<space_id>/environments/master /spaces/<space_id>/ Environment aliases
  15. Enabling environment aliases for a space By renaming master environment

    and adding an alias in its place release-1 master master
  16. 35 • Similar to the master environment the master alias

    has a special status • Create more aliases with custom ids if you want to • We are looking into renaming “master” to “main” A few things to keep in mind.
  17. Now we have a way to deploy content model changes

    without running migrations against a live production environment. 38
  18. Minimize downtime and allow instant rollback master is no longer

    a stand-alone environment but acts as an alias targeting another environment Production content is served from release-1 environment Execute migration scripts Change master alias to target release-2 environment Production content is now served from release-2 environment Promote Problem discovered! Rollback is required Rollback Rollback master to target release-1 environment release-1 release-2 Use case: Promote an environment to master master
  19. Better safe than sorry master is no longer a stand-alone

    environment but acts as an alias targeting another environment Content is served from prod environment Run migration scripts Restore by changing master alias to target prod-backup environment Backup Problem discovered! Rollback is required Restore prod prod-backup Use case: Backup and restore master Optional: Delete prod environment prod Optional: Recreate prod from prod-backup Change master alias to target prod environment
  20. 42 Sum up Integral parts of agile development now can

    be integrated into your workflow: Devs can feel safe about constantly shipping changes, because: • Flexible manual and automated testing can be done beforehand and as part of the deployment • Rollbacks are easy
  21. 43 Docs Tutorials: - Integrating migrations in a continuous delivery

    pipeline with CircleCI - Scripting migrations with the Contentful CLI Concepts: - Multiple environments - Environment Aliases
  22. 44 Docs Articles: - Keep your deployments on track: Contentful

    now has seamless promotion and rollbacks Code: - contentful/contentful-cli - contentful/contentful-migration
  23. Source control Local computer 47 Dev writes code Merged into

    Master, Staging or QA via pull request Continuous Integration Provider Update alias to use newly created environment Deploys the new code PUSHED Hosting provider TRIGGERS A BUILD Stop the build Creates new environment and runs migration scripts on Contentful Run tests and checks DID THE TESTS PASS? YES NO