Complexity with live pre-configuration setup on top of uSkinned
Dear Community,
I've tried to find a way to simplify a deployment to a live environment of uSkinned based Umbraco solution, but have seen that suites me best. Is that because of the architectural decision provided in scope uSkinned extension? Or there might be a way I am not aware of.
So, here is problem: due to the official documentation, we have to follow up the DB pre-configuration steps and only afterwards install uSkinned package on top of that. There is nothing wrong at the development stage, but once we go live, we have to integrate these pre-configuration steps into each environment, which means some extra DevOps work have to be done (another option would be - integration an uSkinned project with Umbraco Cloud). I mean - why couldn't uSkinned do it on our behalf, meaning - if it cannot find what it needs, just make it up themselves?
I will be honestly grateful for any clarification and explanation behind the decision.
Thank you for paying attention to my question. Firstly, let me explain the concern in other words: I, as a developer, in order to spin up an Umbraco + uSkinned backoffice/website parts, have to:
Create an empty Umbraco template project
Run it for the first time and complete installation screen, so a db with its tables and relationships will all be in place.
Now, we can get back to the project and install uSkinned nuget package.
And then create/add whatever you need in order to achieve goals.
This development workflow is totally fine (now you are free to create whatever is needed) until it comes to the live deployment stage. How I would like it to be - create a corresponding DB on a production environment, justify your connection string accordingly in the project, create a build and upload it to production - work is done. But that's not how it works, because we won't have the preconfigured DB tables and relations that come along with steps 1-2 from above. In order to make it work I either have to create and spin up and empty Umbraco template on production for that DB, or ask a DevOps team to help out by creating the deployment pipelines that will simplify the process. That was the main concern/problem.
In meanwhile, while investigating how uSkinned is integrated into solution, I found the reason why we need these pre-configuration steps. There are some Options class, like USNSiteBuilder.Core.Components.ConfigureIndexOptions, that internally makes a call to a db table umbracoLanguages, to find out the backoffice default language, and this is the very first time it fails, this is a stage when not all the required pipeline middlewares are added and spined up, and that's the reason I cannot, for example, intentionally call InstallApiController to launch the pre-configuration steps.
Your concerns are actually related to any Umbraco project and not specifically uSkinned.
When you first create an Umbraco Solution you will have an empty database.
When you first run your project, a database migration process is initiated which creates all of the Umbraco tables in your database.
When you first run your project after uSkinned has been installed, a database migration process is initiated which creates all of your Document Types, Data Types, Media Type settings, demo content and some other setup tasks which add new records to your database tables.
The process of deploying your project to a new environment will only copy files to your server. Deployment does not do anything with the database.
The normal process would be to backup your local database and restore the database on your other environment.
Let me know if you require any further clarification.
Complexity with live pre-configuration setup on top of uSkinned
Dear Community,
I've tried to find a way to simplify a deployment to a live environment of uSkinned based Umbraco solution, but have seen that suites me best. Is that because of the architectural decision provided in scope uSkinned extension? Or there might be a way I am not aware of.
So, here is problem: due to the official documentation, we have to follow up the DB pre-configuration steps and only afterwards install uSkinned package on top of that. There is nothing wrong at the development stage, but once we go live, we have to integrate these pre-configuration steps into each environment, which means some extra DevOps work have to be done (another option would be - integration an uSkinned project with Umbraco Cloud). I mean - why couldn't uSkinned do it on our behalf, meaning - if it cannot find what it needs, just make it up themselves?
I will be honestly grateful for any clarification and explanation behind the decision.
Hi Natalia,
Marc from uSkinned here. Can you explain what is going wrong with deployment so that we can better understand and help you with your issue?
Kind regards,
Marc
Hi Marc,
Thank you for paying attention to my question. Firstly, let me explain the concern in other words: I, as a developer, in order to spin up an Umbraco + uSkinned backoffice/website parts, have to:
This development workflow is totally fine (now you are free to create whatever is needed) until it comes to the live deployment stage. How I would like it to be - create a corresponding DB on a production environment, justify your connection string accordingly in the project, create a build and upload it to production - work is done. But that's not how it works, because we won't have the preconfigured DB tables and relations that come along with steps 1-2 from above. In order to make it work I either have to create and spin up and empty Umbraco template on production for that DB, or ask a DevOps team to help out by creating the deployment pipelines that will simplify the process. That was the main concern/problem.
In meanwhile, while investigating how uSkinned is integrated into solution, I found the reason why we need these pre-configuration steps. There are some Options class, like
USNSiteBuilder.Core.Components.ConfigureIndexOptions
, that internally makes a call to a db table umbracoLanguages, to find out the backoffice default language, and this is the very first time it fails, this is a stage when not all the required pipeline middlewares are added and spined up, and that's the reason I cannot, for example, intentionally call InstallApiController to launch the pre-configuration steps.Hope this helps to get the point.
Many thanks, Natalia
Hi Natalia,
Your concerns are actually related to any Umbraco project and not specifically uSkinned.
When you first create an Umbraco Solution you will have an empty database.
When you first run your project, a database migration process is initiated which creates all of the Umbraco tables in your database.
When you first run your project after uSkinned has been installed, a database migration process is initiated which creates all of your Document Types, Data Types, Media Type settings, demo content and some other setup tasks which add new records to your database tables.
The process of deploying your project to a new environment will only copy files to your server. Deployment does not do anything with the database.
The normal process would be to backup your local database and restore the database on your other environment.
Let me know if you require any further clarification.
Kind regards,
Marc
Hi Marc,
Thank you for the explanation. I've got an answer to my question.
Best regards, Natalia
is working on a reply...