umbraco / Umbraco.Deploy.Issues

1 stars 0 forks source link

Unable to deploy when MNTP has a start node #219

Open AaronSadlerUK opened 3 months ago

AaronSadlerUK commented 3 months ago

When deploying MNTP data types containing a start mode from local to development, this will cause deploy to fail.

Reproduction

Steps to reproduce

Create a MNTP data type Set a start node to content not on Cloud Deploy

Expected result

Deploy should either create the datatype and ignore the fact the content doesn't exist, this would allow for the content to be pushed up after. Or deploy should log a useful error message to say that the content X (X being the guide / key) could not be found, this however on it's own would cause deploy to be blocked, so the error should mention about removing the start node until the content is deployed.

Actual result

Deploy fails with no useful error, it only states the document type is missing a data type, it doesn't give a reason why the data type has not been deployed

AndyButland commented 3 months ago

I've checked this over in the latest version of Deploy 13, but not seeing the problem here.

Here's the steps I've taken so they can be verified:

I found everything was created OK, but if you go to the definition of the data type you see this error, as it can't find the content.

image

But once the content is deployed, it's all good.

Perhaps we could consider adding a dependency to the content item from the data type? But I'm not sure that would be a better experience. You would then get an error when doing a schema update (e.g. after a git push to Cloud). Would then have to deploy the necessary content in order to then re-trigger the extraction. But if that content depends on other schema items that are pending, we could end up getting in a circular issue that would be tricky to manually resolve. So probably what happens here already - where the schema is created, with the reference to a missing root node is the best approach to take.

ronaldbarendse commented 3 months ago

The root of the issue is really in the fact that schema (like a data type) can require a content item to exist, but might need to be deployed first to be able to successfully deploy that content, resulting in a cyclic dependency.

For this to be the case though, Deploy needs to be aware/understand the dependencies between items. This is done through value connectors (for content properties) and data type configuration connectors, but neither Deploy 13 or Deploy Contrib 13 have an IDataTypeConfigurationConnector implementation for the MNTP. It does have one for the Content Picker, but that only adds the start node as an 'optional' dependency.

As Andy couldn't replicate the issue, my guess is that something else caused the data type to not be deployed successfully and that subsequently results in a schema mismatch, preventing you from transferring content.

Can you share the versions of the CMS, Deploy and Deploy Contrib and check the deploy status (either in umbraco\Deploy or the log viewer) on both environments? And also make sure you've followed the documented troubleshooting steps to ensure both environments are in a consistent state first!