I suggest you...

Configure path package is deployed to

Hi,

I have set up Deployment process and everything works fine except one thing.
I cannot find a way to edit step "zero" - downloading and unpacking of deployment package (nuget package).
In our deployment we process multiple tenants on single environment.

What Octopus currently does (this process seems automatic to me):
- Downloads correct package version if its not already downloaded (this is ok)
- Unpacks it into C:\Octopus\Applications\tenantName\Production\projectName\projectVersion (want to change this)
- Then uses this folder as source of data (ok).

I have TWO problems with this approach:
1)
while deploying on multiple tenants after ONE deploy i have multiple copies of SAME project version on environment (note that project is pretty big - several GB)
e.g:
C:\Octopus\Applications\tenant1\Production\projectName\v_0.0.1
C:\Octopus\Applications\tenant2\Production\projectName\v_0.0.1
C:\Octopus\Applications\tenant3\Production\projectName\v_0.0.1
...
if i were to deploy to all tenants at once i wouldnt even be able to store all data because of this duplicating

what i want:
SAME folder for all tenants:
C:\Octopus\Applications\projectName\projectVersion (notice missing tenant name)

2)
If i deploy SAME version to SAME tenant again (lets say with different config) i end up having this version of project in folder TWICE
e.g (3 deploys of same version):
C:\Octopus\Applications\tenant1\Production\projectName\v_0.0.1
C:\Octopus\Applications\tenant1\Production\projectName\v_0.0.1 (1)
C:\Octopus\Applications\tenant1\Production\projectName\v_0.0.1 (2)
C:\Octopus\Applications\tenant2\Production\projectName\v_0.0.1
C:\Octopus\Applications\tenant2\Production\projectName\v_0.0.1 (1)
C:\Octopus\Applications\tenant2\Production\projectName\v_0.0.1 (2)
....

what i want:
not to unpack project version if it already is in folder:
if this is already there (path changed pre request from 1) ) C:\Octopus\Applications\projectName\projectVersion\v_0.0.1 then C:\Octopus\Applications\projectName\projectVersion\v_0.0.1 (1) will NOT be created, this part of script will be skipped instead

-----------------------------------------
I was unable to find script that does this (Octopus->environment push of package).
First step in deployment process starts AFTER this is magically done.
I was not able to find any step/script that would do this - using web UI (maybe i dont have rights to see it).

Can i somewhere edit this script? (this would be best as it would solve both questions)
OR
Is there any config where i can solve BOTH scenarios?

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

    3 comments

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

        How our deploy procces works is:
        - get package from octo (using this pre-made step)
        - each tenant unzips it to its own directory temp (yeah this step could maybe be skipped, but in that case problem 2 would not be solve-able cos first copy of same version would contain confugarations, so you would still need bazilion copies of same version)
        - some configuration is done, for each tenant different
        - moves configured package where it needs to be, makes backup of current stuff

        Currently what happens is that if i select 100 tenants it creates 100 copies of same package version on one environment. (WTF?)
        If i make new deploy with SAME version i get another 100 copies of same package version, this time with (2) in name (Seriously?)

        -----------------------
        Please create step to store each package OCE PER VERSION. Or add option to some current step to do it this way. E.g.: C:\Octopus\Applications\packageName\v_0.0.1
        Please do not store packages per tenant nor per deploy.
        This way i would be able to just grab package to temp workplace and do whatever i want with it.
        Instead of waiting for 100 copies to be made for each tenant one.
        Yes, i know i will create 100 copies by myself anyway, point is that package download folder will be intact and not "corrupted" by configurations, because configuration is being made in temp dir managed by me.

        It doesnt make sense to download special copy for each tenant on same environment.
        Its our job to manage temp workplace directories not yours.

        Same as it is super useless to download same version again if its run by another deploy process.
        Its our job to make sure that downloaded package wasnt corrupted between deploys, not yours. You just need to check if it is there and if not, deliver it to download folder.

        Is there such proccess step that behaves like this? Currently it wastes ton of disc space on our server and i need to delete packages every ~2 deploys.

      • AdminOctopus Developer (Admin, Octopus Deploy) commented  ·   ·  Flag as inappropriate

        @Thomas

        Could you expand on the use-case. I assume you would not be using variable substitution, scripts or config transforms on the files in that folder? Do you use Custom Installation directories?

        A small correction, the path is extracted to `C:\Octopus\Applications\tenant1\Production\packageName\v_0.0.1` (ie packageName instead of projectName).

        Once the files are extracted we use that folder to run the scripts for the other features (eg IIS configuration, config transform, pre/post scripts).

        Could you use the transfer package step and then a script step to conditionally unpack the package? You could also have a script step at the start that figures out if you have to do anything, then sets an output variable that is used to conditionally run the next two steps.

      • Tomas commented  ·   ·  Flag as inappropriate

        Copy-pasted text from support ticket. Answer was that currently its not possible. Thus i used same ticket as idea proposal.

      Feedback and Knowledge Base