Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Chad 18 posts 122 karma points
    Jun 02, 2020 @ 15:20
    Chad
    0

    Content Syncing Between Environments

    What is everyone using for content syncs between environments? This has been a huge pain point in our development process and I would love to find a workable solution. Our development workflow looks like this:

    [Development] -> [QA] <-> [Production]

    We're able to push back end changes forward but pushing content and media between each environment has always been a hassle. To be clear, I'd like to be able to take a snapshot of the production environment (or any environments) backoffice and deploy it over top of an adjacent environment within our workflow. I've tried uSync, uSync.ContentEdition, and uSync.Complete and have not been able to get this to work the way I want it to. Any deploy, or use of "snapshots" from uSync tends to be an additive process and not a full overwrite. They have a publisher which looked promising, but it seems to only send settings back and forth and not content and media.

    Is there any way to get umbraco to do this outside of direct database interaction? This seems like such a crucial feature to keep sites up to date and preserve content for the users. It would be nice if we could even get git backed content management.

    Any help is greatly appreciated. Thanks!

  • Kevin Jump 2342 posts 14889 karma points MVP 8x c-trib
    Jun 02, 2020 @ 15:43
    Kevin Jump
    0

    Hi Chad,

    Happy to discuss your experiences of uSync, and things you might like it to do.

    uSync.Complete/Publisher does sync content and media. So i would be interested to know how you found using it (It looks like we haven't signposted the content/media stuff properly if it gave you that impression).

    Kevin

  • Chad 18 posts 122 karma points
    Jun 02, 2020 @ 16:29
    Chad
    0

    Hi Kevin,

    I was hoping snapshots would work more like a "rollback" feature and delete everything that exists, replacing it with an exact copy of the other environment.

    For Publisher I added my QA site under the publisher and it responds back with "Available". I've got pretty much every box checked in the settings and when I go to the "Sync" tab I see "Push Settings" but that doesn't seem to include any content changes. It'll get a report back at the end but it usually says there weren't any changes, although the content trees are definitely not the same.

  • Kevin Jump 2342 posts 14889 karma points MVP 8x c-trib
    Jun 02, 2020 @ 16:43
    Kevin Jump
    0

    Hi Chad

    Yes we did look at the snapshots deleting things that where not in them... i need to go back to the code and see why / if we still have that option in there.

    For Publisher, you can sync content & media from the content or media tree:

    So for example if you right click on your home content node - you should see Push / Pull Content - and from there you get the option to push the content (and all the options that would allow you to also include the settings be needed to push the content).

    enter image description here (This might look slightly diffrent, as this screenshot is from the development version)

  • Chad 18 posts 122 karma points
    Jun 02, 2020 @ 17:23
    Chad
    0

    Hey Kevin,

    That looks a lot more like what I was wanting! I tried to do a full push of the site root and I'm getting this error:

    Object reference not set to an instance of an object.    at uSync8.ContentEdition.Mapping.Mappers.GridImageMapper.GetDependencies(Object value, String editorAlias, DependencyFlags flags)
    
       at uSync8.ContentEdition.Mapping.Mappers.GridMapper.ProcessControl(JObject control, DependencyFlags flags)
    
       at uSync8.ContentEdition.Mapping.Mappers.GridMapper.GetGridDependencies[TObject](String gridContent, Func`3 callback, DependencyFlags flags)
    
       at uSync8.ContentEdition.Mapping.Mappers.GridMapper.GetDependencies(Object value, String editorAlias, DependencyFlags flags)
    
       at uSync8.ContentEdition.Checkers.ContentBaseChecker.GetPropertyDependencies(IContentBase item, DependencyFlags flags)
    
       at uSync8.ContentEdition.Checkers.ContentBaseChecker.GetChildDepencies(Int32 id, Int32 order, DependencyFlags flags, Int32 min, Int32 max)
    
       at uSync8.ContentEdition.Checkers.ContentBaseChecker.GetChildDepencies(Int32 id, Int32 order, DependencyFlags flags, Int32 min, Int32 max)
    
       at uSync8.ContentEdition.Checkers.ContentBaseChecker.GetChildDepencies(Int32 id, Int32 order, DependencyFlags flags, Int32 min, Int32 max)
    
       at uSync8.ContentEdition.Checkers.ContentChecker.GetDependencies(IContent item, DependencyFlags flags)
    
       at uSync.Expansions.Core.Services.uSyncDependencyService.GetItemDependencies(SyncItem item, String handlerSet)
    
       at uSync.Expansions.Core.Services.uSyncDependencyService.GetItemDependencies(IEnumerable`1 items, String handlerSet, uSyncCallbacks callbacks)
    
       at uSync.Publisher.Publishers.SyncRealTimeStepPublisher.<Export_Calculate>d__12.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at uSync.Publisher.Controllers.uSyncPublisherApiController.<PerformStep>d__7.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__1`1.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()
    
    --- End of stack trace from previous location where exception was thrown ---
    
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    
       at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()
    
  • Kevin Jump 2342 posts 14889 karma points MVP 8x c-trib
    Jun 02, 2020 @ 17:46
    Kevin Jump
    0

    HI Chad,

    are you on the latest version ? - there was an issue with deleted media causing an issue during a sync (that was media that is still linked to in Umbraco but has been deleted from the media section) - but that was fixed in the last release. (its actually uSync v8.6.3 that should fix this)

Please Sign in or register to post replies

Write your reply to:

Draft