Restoring continuous integration files to the database
When using continuous integration, you can get changes from other developers or your source control system by loading XML files into your CIRepository folder. You then need to transfer the corresponding object changes to the database of your Kentico instance. Kentico provides a command line utility that deserializes the files and saves the object data back into the database.
Warning
The restore operation deletes any supported objects in the database that do not exist as files in the continuous integration repository. Before you run the restore process, make sure the CIRepository folder contains the required state of your object data.
To avoid loss of local data, you need to maintain the file system repository as a full image of your database – serialize all objects to the file system at the start of development and leave continuous integration enabled. You then need to merge the file content of the CIRepository folder when loading data from another team member or the central source control.
Navigate to the CMS\bin folder of your Kentico project and run ContinuousIntegration.exe from the command line with the -r parameter.
ContinuousIntegration.exe -r
The utility deserializes the objects stored in the project’s CIRepository folder and creates, overwrites or removes corresponding data in the database (specified by the connection string in the given project’s web.config file).
To ensure that the restore process works correctly, you need to stop your Kentico application before running the restore process. Otherwise you may encounter the following problems:
- Deadlocks or data inconsistencies if the system attempts to write to the CIRepository folder while data is being restored from the files
- Outdated content in the application’s cache if you restore without restarting (can cause inconsistencies in the Kentico administration interface or the website’s content)
Note: If you are using a web application project and always rebuild your solution after loading files from the source control, the application stops and starts automatically.
Restoring pages with staging enabled
If you perform the restore operation on an instance with Staging enabled, the system automatically logs staging synchronization tasks for any changes made to objects.
However, staging tasks are NOT logged for changes made to pages.To deploy page content from your development environment, you either need to use Export packages or run the continuous integration restore operation on the target instance (see Deploying data to production sites).
Scripting the restore operation
We recommend setting up a process that runs the restore operation, stops/starts your application and performs any other required actions. For example, you can prepare a PowerShell script.
# Parameter that specifies the path of your Kentico web project folder (i.e. the CMS subfolder)
param (
[Parameter(Mandatory=$true)]
[string]$Path
)
# Creates an 'App_Offline.htm' file to stop the website
"<html><head></head><body>Continuous integration restore in progress...</body></html>" > "$Path\App_Offline.htm"
# Runs the continuous integration restore utility
& "$Path\bin\ContinuousIntegration.exe" -r
# Removes the 'App_Offline.htm' file to bring the site back online
Remove-Item "$Path\App_Offline.htm"
The script above is only a basic example that demonstrates the general concept. We recommend that you adjust the script to perform all functions required by your environment. The attached Restore-CI.ps1 file contains a more complete script that also stops and starts Kentico external services.
Custom restore solutions
Alternatively, you can use the Kentico API to implement a custom solution for restoring objects from the file system repository. See Restoring objects from the file system.