Hi all!
We developed quite a few solid pipelines over the past few months. We can rebuild the entire db and app automagically, or push incremental data changes up with little to no user intervention or decision making. This works for us because our application is read only/configuration, and not taking writes or storing irreplaceable user data.
Recently, we tried to push up a schema change, and this resulted in a breaking change warning from the cli:
push failed: error validating server: cannot make breaking change: update is missing property.
Doing some quick research, we found this excellent post on how to resolve this issue, which worked perfectly. It involves turning off sync, logging into the UI to complete the schema update, then re-enabling sync.
After that, I wanted to see if this step could be automated from the CLI. It appears it cannot be, and this is by design:
Because breaking or destructive schema changes require special handling, App Services does not support making these changes via App Services CLI or automated deploy with GitHub. Instead, you should make breaking changes in the App Services UI.
Update Your Data Model — Atlas App Services (mongodb.com)
I guess my question is, what’s the best way to handle this type of operation in a pipeline? Do most people just pause the deployment at that point, exit out of the automation (maybe send an email to the change team), and then resume once the manual step is completed? Also I am guessing most of the time you want to avoid Breaking Changes, but sometimes it may be necessary.
Would be curious to see how others are handling this scenario and if there is any quality of life type of automation that’s possible.