Creating a release from multiple projects

Hi,
I am trying out OctopusDeploy and I have many forms of deployments:
I might deploy ServiceA and ServiceB and in other deploy I might deploy ServiceB or other one will be ServiceB and ServiceC.

I could create project for each form of deployment, but it will be annoying.

Is there any way - to make a release and choose which projects are deployed?

Sincerely,
Yosi

Hi Yosi,

Thanks for getting in touch. Right now your best bet to achieve this is to create a project per service and perhaps create a 4th orchestrator project that has a step to deploy to each of the other 3 (using Octo.exe). This way you’d be able to skip any step/deploy you want from your 4th orchestrator project.

There is a uservoice sugestion for this that could use some of your votes http://octopusdeploy.uservoice.com/forums/170787-general/suggestions/5852439-encapsulate-deployment-of-multiple-projects-into-s . The more people who want this feature the more likely it will be built.

Thanks

Dalmiro

Hi Dalmiro,
Thanks for the fast reply!

A quick question: If I have rolling deployment and want to add steps only
for the first server - for example manual intervention (to do QA test) how
can I do this?

Hi Yosy,

Could you send me a screenshot of your current deployment process, and let me know on which part of it you’d like the manual intervention?

Thanks!

Dalmiro

I can’t send a screenshot from my deployment process during to my
organization policy,
But in OctopusDeploy there is a great for example for this -
[image: Inline image 1]
https://demo.octopusdeploy.com/app#/projects/octofx-trading-website/process

Let’s say for the first instance of the “web-server” I want to add
specific steps only for him (in my case “Manual Intervention”).
How can I add “child steps” only for the first “web-server”?

Screen_Shot_2015-05-06_at_9.07.51_PM.png

Hi Yosy,

Unfortunately its not possible to add a step for just one server inside a set of rolling steps. All the steps inside will run for the same environment/role combination.

If its mandatory for you to deploy everything on one server first, and then trigger a “Manual Intervention” step for smoke testing, you could have a tentacle with a role like “SmokeTest” and at the beginning of your deployment process have the same 3 steps shown on your screenshot + a manual intervention that’ll run only on machines with the role “SmokeTest”.

Let me know if this workaround suits

Dalmiro

It sounds ok,

But I thought about another idea - please let me know if this is possible.
Create a “Step Template” for conditions that will check the value of
octopus variable like Octopus.Machine.Name with a step parameter and if so

  • it will execute it child step.

    1. How can I create “Step Template” that support child step?
    2. Can I add another level of step? One for the rolling and another one
      for this step?

Thanks,
Yosi

Hi Yosy,

The main problem here is that you cannot decide whether to run or not a step based on a condition that’s not Success or Failure. You could create the “Step Template”, but there wouldnt be a way for this step to tell the next one “Ok you can run” based on the value of a variable. We have a Uservoice suggestion specifically for this that is not getting as much support as i’d like. Please try to put some votes on it :slight_smile:

Unfortunately the best way right now would be what i proposed on my previous reply

Dalmiro

Please can you explain further the idea of creating a project that can orchestrate other projects using octo.exe.

I’m experimenting with the idea of a composite release where I can vary which components (aka projects) get released in a pick-n-mix fashion.

Hi @DaveC,

Thanks for reaching out. That concept is a bit outdated by now since we added support for channels in 3.2: https://octopus.com/blog/octopus-deploy-3.2

Using Channels you can scope different steps to different channels to create releases that only deploy specific components, like this:

Step Number Description Scoped To channels
1 Deploy component 1 “Component 1”,"All Components
2 Deploy component 2 “Component 2”,“All compunents”
3 Deploy component 3 “Component 3”,“All Components”

This way you can create a release for “Component 2” and only deploy that component, or “All components” and deploy all of them at once or any other combination you want. Everything from a single project and a single deployment process, which is a lot easier to manage than multiple ones.

Hope that helps,
Dalmiro

Dalmiro,

Thanks for reply, and yes this does help.

DaveC