Can I deploy a specific version of my ReadyRoll project?

If I have multiple SemVer folders in my project for different releases (say, 1.0.0, 2.0.0, 3.0.0), is it possible to deploy a specific version? For example, if we think a bug might be present in v2 but not v3, we may want to deploy both to compare and test.

The only workaround I can think of would be to check out the correct revisions from source control (easier if tagged, but they may not be), then build packages for each and deploy those. But it's not very convenient, especially as the project already includes all scripts for all releases. This also gets more difficult to manage on a build/deploy server.

Side note: I suppose using Programmable Objects would make this harder, as the project would only have a record of the latest (v3) scripts, not the v2 ones. But if we weren't using this feature and managing everything in ALTERs, it shouldn't make a difference, is that right?

Best Answer

  • dnlnlndnlnln Posts: 234 Gold 2
    Accepted Answer
    Hi Alex,

    Thanks for your question. Unfortunately, ReadyRoll doesn't currently support selective deployment of version folders at the moment, and we don't have any immediate plans to introduce the feature, but it's definitely an interesting suggestion.

    The main hurdle from an implementation point-of-view would be, as you already pointed out, the way that programmable objects are handled currently, so it would likely be restricted to migrations-only projects. Additionally, I can imagine some users may potentially want to choose multiple versions to deploy to a given environment and do a schema comparison as part of the process, so the type of UI required may demand more functionality than can be easily offered through a CI/deployment tool (i.e. it may require a desktop UI experience).

    I've posted it on our feedback site to allow the community to comment on the idea:

    Feel free to add your vote to it as well, of course! Any questions please let me know
    Daniel Nolan
    Product Manager
    Redgate Software


  • AlexMBanksAlexMBanks Posts: 15 Bronze 2
    Hi Daniel,

    Thanks for the answer and for posting this on UserVoice - I've voted for it as I think it would be a useful addition.

    Shame this is not supported but I can understand why it's very difficult without a pure migrations approach. Perhaps it could be an option when programmable objects are not used in a project? It would provide a definite benefit to that approach, as at the moment I can't see much reason not to use them.

    I'm not sure the multiple deployment/schema comparison situation you mentioned would need to be part of ReadyRoll. It could be handled by good deployment processes (e.g. Octopus deploying V1 and V2) and perhaps a scripted SQL Compare comparison. A UI always helps though.
  • andrivandriv Posts: 1 New member
    I assume for this scenario your best bet would be to check out that specific version from source control and deploy to an empty Database?
  • andriv wrote: »
    I assume for this scenario your best bet would be to check out that specific version from source control and deploy to an empty Database?
    That's correct, deploying a new database from a specific version or branch in source control is generally the recommended approach. However, if the target database must be preserved, then an alternative is to use the Revert command to bring the database into sync with sources.

    More information on either approach can be found under Key Concepts > Switching branches. I hope this helps!
    Daniel Nolan
    Product Manager
    Redgate Software
Sign In or Register to comment.