We welcome user feedback and feature requests!

Add button to copy Prod to Staging slot instead of swap

When we deploy by using 'swap' the deployment slot will have an old version of the website. Since we want to use the deployment slot as a staging website, it would be great if we could copy the primary website to a deployment slot, without performing a swap.

372 votes
Vote
Sign in
Check!
(thinking…)
Reset
or sign in with
  • facebook
  • google
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    Bart Surminski shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

    23 comments

    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      Signed in as (Sign out)
      Submitting...
      • Anonymous commented  ·   ·  Flag as inappropriate

        I need this! Just getting started with Azure, Slots seemed ideal, we until I realised, there is a potential for old files creeping back into production. At the moment, it's > make change > deploy to staging > swap to production > then redeploy source files back into staging (old production code), to keep everything in sync. Very cumbersome, or I'm missing the point of slots. I'd ideally like to keep everything in the MS stack.

      • devdells commented  ·   ·  Flag as inappropriate

        How many years will it take to implement this?! Seems like a no-brainer to me. I need it just like everyone else commenting here. Last update is June 19, 2017. In that time we've probably seen the release of 100 new Azure services, much more complicated than this simple feature upgrade.
        I'd be a little ashamed if I was the feature team on Web apps. :-(

      • Piers Lawson commented  ·   ·  Flag as inappropriate

        Our current deployment process "promotes" a build of a website through TEST, UAT, PRE-PROD and eventually to PROD. Deployment slots seem an ideal way to provide a similar process... however, despite all the benefits of using the Swap functionality, the downside is that after a Swap, our old code would end up making its way back down that chain. After a few releases, TEST would be running what had been the PROD code several releases earlier.

        Since other web sites also have TEST, UAT, PRE-PROD sites as well, which would link to other sites in the corresponding deployment slots, we could end up with one TEST site running the next release of its code linking to another web site running a very old release of its software.

        So a button to copy the code running in one slot to another slot rather than using a Swap would be very useful. We'd then just have to decide if we would use the copy all the time instead of swap, OR use swap to promote followed by a copy backwards when we're happy OR use copy all the time except for a swap between PRE-PROD and PROD so we can rollback in PROD but don't have to worry about keeping most of the other environments in sync.

        Or is there a better way to do this? Perhaps using Deploy tasks for TEST, UAT and PRE-PROD then a Swap for PRE-PROD to PROD?

      • Mark Allan commented  ·   ·  Flag as inappropriate

        This would be a godsend. A -SourceSlot parameter on New-AzureRmWebAppSlot would save so much pain. Scripting it's a real headache, particularly with large sites where the Kudu ZIP APIs tend to keel over, not to mention the time that would be saved by copying locally rather than having to export and import. (My scenario: CMS site that needs to be updated and tested on a staging slot before switching to live - thanks SQL team for CREATE DATABASE AS COPY OF!)

      • Mike commented  ·   ·  Flag as inappropriate

        Here's a scenario I could have used this today. I wanted to test how some settings in the web.config would affect production. Copy production into a new slot (AFAIK cloning feature does not let you clone into a slot, I tried). Test my changes in that slot and hit the slot URL. Swap into production when ready. Technically I can do all that with other tools/processes, but a one button copy would be nice and I can see myself using it a lot.

      • Edward Dear commented  ·   ·  Flag as inappropriate

        +1 for this. We frequently do development on a deployment slot, and periodically need to reset it back to the same state as the production site.

      • RAHUL VOHRA commented  ·   ·  Flag as inappropriate

        @Nir Mashkowski, Is there any update regarding this feature? Or is there any workaround to just have one-way copy?

      • Per Lindén commented  ·   ·  Flag as inappropriate

        This would also solve the problem of having "live" App_Data contents that should not be swapped with some old/empty version in the deployment slot.

      • patrice commented  ·   ·  Flag as inappropriate

        This would be useful for me.
        Here is my scenario.
        I have a website composed of different applications (sub virtual directories).
        I have different build processes for the different applications.
        When I deploy to my staging environment, the build process only deploy the files of the corresponding application.

        What this mean is that if I build an app (App A), publish it to the staging slot and do a VIP swap, the production environment will be fine and the staging environment will have the previous version of the Website files.

        Then, if I publish another app (App B) to the staging slot and do a VIP swap, the production environment will have the updated files of the "App A", but the files of "App B" will be reverted.

        In this case, the workflow I would like to do is:
        1) Build my App,
        2) Copy the full content of the production slot website to a staging slot.
        3) Deploy the App to the staging slot (overwrite the Virtual Directory files)
        4) Do a run of smoke tests on the staging slot (an prewarm the site)
        5) Do a VIP swap

      • Arash Motamedi commented  ·   ·  Flag as inappropriate

        This is much needed. Consider this scenario: 1. Publish new site to staging. 2. Swap to prod. 3. Need minor tweak in an HTML file, update and partially publish (just the modified file) to staging. Now, my staging area has an old site with a new HTML file... Oops! Things got mixed up and can't proceed to swapping without a full deployment to staging.

        So, there's a need that after a swap (and successfully verifying that the new site is well), there should be a way to copy the new production bits back into the staging slot, so both staging and production have the latest bits.

      • ITM commented  ·   ·  Flag as inappropriate

        Can we have this ASAP, its annoying
        I should be able to do one way copy excluding config file if i tick so, what other feedback do you need?

      • Erik Taylor commented  ·   ·  Flag as inappropriate

        Sometimes, once you've swapped into production and you're happy, you want to back track that down the line so you don't have to redeploy the staging or dev over an old copy of production that has now been swapped into your dev or staging. Especially since things can change from interaction within the deployment, i.e. wordpress and also services and other things coming up from dev machines. So, dev <-> staging <-> production, then production => staging => dev (maybe) and I didn't have to run a large deploy operation which could take a lot of time, but test and admins (like those maybe testing updates/plugins on wordpress) have a production copy to work against in staging while I'm fiddling with things in Dev.. stuff like that :)

      • Ryan J commented  ·   ·  Flag as inappropriate

        +1 for this feature.

        @chris, you don't need to do what you are asking for with a swap. You can create a single file named app_offline.htm and place it in your root. This takes your app offline and display whatever is in the HTML file.

      ← Previous 1

      Feedback and Knowledge Base