How can we help you today? How can we help you today?
jonathan.hickford
Hi Christo, That first deployment is a bit tricky, it's something that we want to improve. One flow that could work is: - Restore a backup of production into a test environment - Deploy a package that represents the current production stage into test using the dynamic mode - Ensure test and production are identical (using SQL Compare) - Switch to static deployment mode in Deployment Manager - Run a SQL CI build of the changes you wish to release to production, make sure that 'generate upgrade scripts' is set. That will generate an artifact that can update the version that is in test to the desired state, and will save an upgrade script in the Nuget package with the exact changes it will run on test. - Deploy that change to test using Deployment Manager, ensure it works as expected - Extract that upgrade script from the Nuget package - Run that same script manually on staging/production as part of your release process You can then be confident in exactly what Deployment Manager will run into Test, and you can use the same script in future deployments to staging/production. Subsequent deployments are easier, as you will have a package that represents the production state so the first three steps are much easier. Hope that helps Jon / comments
Hi Christo, That first deployment is a bit tricky, it's something that we want to improve. One flow that could work is: - Restore a backup of production into a test environment - Deploy a package ...
0 votes
Hi Christo, This is something that we want to improve to make it easier to see exactly what the changes are. Are you using the dynamic deployment mechanism? Jon / comments
Hi Christo, This is something that we want to improve to make it easier to see exactly what the changes are. Are you using the dynamic deployment mechanism? Jon
0 votes
Hi, Thanks for the info. There are a few different ways that our customers are doing things similar to do this, I'll run through a couple below. Very happy to hop on the phone to talk more too. One way is to use Red Gate Deployment Manager alongside SQL CI. This can be setup so that whenever you make a commit to either the application or database the CI server will create two packages. One that contains a build of the code and one which contains the scripts folder representation of your database. These are then both passed to Deployment Manager as a 'release' (a specific pair of versions of the DB and code). This release can be deployed automatically to your dev/CI environment . The same release can then be deployed as a 'push button' deployment to QA, staging and production environments. It's a good match if you're planning to run a continuous delivery approach. It ensures that the same pair of versions of code and database end up together as they move through each environment. Diagram of Deployment Manager Workflow Another approach is to use a version control release branch for each environment. When developers commit code to the 'dev' branch your CI system can build to the dev environment using SQL CI. When it's time for a QA deployment then you can merge the required code onto the QA branch and have the CI system deploy the CI environment. You can do that for both the database and the application (either in separate repos or as a single combined repo). It's a bit more fiddly to work with in my opinion. There's a Stack Overflow thread with a few diagrams that match this 2nd approach. Hope that helps Jonathan / comments
Hi, Thanks for the info. There are a few different ways that our customers are doing things similar to do this, I'll run through a couple below. Very happy to hop on the phone to talk more too. O...
0 votes