Is there a deployment tool (or toolkit) that supports deployment rollbacks?

I am learning FluentMigrator. What I like about FM is that it supports the idea of ​​forwarding and returning for migration (aka Up / Down). I find it to be not perfect about this; there are some holes. However, this is good.

This makes me wonder if there are any deployment tools (nant, msbuild or others) that support this idea of ​​moving back and forth. The scenario in which I use it is to deploy a web application with an appropriate database.

Ideally, I would like to configure my deployment so that if any part of it fails, it will return to the previous known working configuration. With FM, this is pretty easy to do (but there are rough spots), so it covers db. What about the files that make up the web application? Does any deployment tool support?

Deployment on Windows Server. Suppose I cannot make any changes to the server.

+4
source share
3 answers

I do not know any Microsoft-oriented, automated provisioning / deployment tools such as Capistrano. Here are some tools I've heard of but never used:

Up to three months ago, we completed our deployment / provisioning using custom MSBuild scripts . After the server is initialized, the deployment takes place automatically using Robocopy to copy files to a shared resource on the application server, updating modified binary application files and markup files. We never had to roll back any of our deployments, but since our scripts are common, we could write the logic if we needed.

MSbuild is a terrible deployment / provisioning language. Over the past three months, we have written all new scripts and migrated existing ones to PowerShell . This is good. Version 2 supports command support on remote servers such as SSH. We have not used this functionality yet, but I look forward to clicking on the installation scripts on the remote server for provision and deployment at the same time .

+1
source

We have used Git for deployment over the past 6 months.

Here is the whole process:

  • CI server will build a project
  • CI server checks it on local Git repository
  • CI server redirects changes to a centralized Git repository
  • User creates an empty repository on a real server
  • User Adds Central Git Repository to Remote Controls
  • The user downloads the latest version via https (no need to open any ports)

At the beginning there are a lot of settings, but after tuning it works fine. Deployment takes seconds, since only modified files are copied. Another great thing about this method is that Git saves the change history, so rollback is pretty simple. You can also undo several changes and do it directly on the real server. If something goes wrong, the return will return very quickly.

You can also save some time if you use the hosted Git service (github) for your central repository.

This is a very brief description, but I can give you more information if you want.

+1
source

Sure! My favorite is Capistrano. It was originally built for Ruby, but I found that it works just as well for other languages.

https://github.com/capistrano/capistrano

0
source

All Articles