Starting a release in phase 2 of a lifecycle

Hello!

first of all I would to say we really like Octopus at our place! We love how ease deployments have become.

I have a question though. We have defined four phases. Normally we start a release at phase 1 but sometimes we would like to skip the first phase and start at phase two. When I try to do this with octo.exe it gives me an error. Is there anything I could do?

Kind regards,
Erwin

Hi Erwin,

Thanks for getting in touch!

Unfortunately not. The Lifecycles for a project are as strict as you make them. If you’ve specified four distinct phases, then your deployments will have to go through each of those phases. If this is a regular occurrence, you could consider readjusting your phases to make them more flexible?

This is something we have seen come up from time to time, so we’re thinking about how we can make this better. In particular, emergency fixes and releases can be difficult if they have to go through each of your defined phases.

If you have any suggestions, can I ask that you visit UserVoice and either create a suggestion or preferably vote for one that’s already there? I know other people have made similar suggestions.

Hope that helps!

Damo

Hi Damian,

I have voted on the suggestion you provided and added a comment.

Erwin

@erwin,

Often times we have 2 “LifeCycles”

During dev, we like to give our Product Team the ability to login on the Branch environment and give us feedback.

So ideally there are 2 cycels

1 Product Review
Branch Env

2 Production Deployment
Integration
Staging
Production

How should this be done?

FYI We are combining this with TeamCity.

We’ve done the following. I’ve created a lifecycle with 4 phases (Branch, Integration,Staging, Production in your case). Branch has two environments, the others have one. In branch I’ve called them ‘Branch’ (the real environment) and ‘EmptyEnvironment’. Once you have added these two environments you will see a ‘Required to progress’-box. Set this to 1. That will make sure a release to one of them will let you promote to Integration.

EmptyEnvironment does nothing in my release. So every step in my process is set to an environment but EmptyEnvironment. It’s just an emty shell I can release to. Now you can create a release to branch and to EmptyEnvironment. From both you can promote to Integration.

Makes sense?

Since Octo 3.2 is out you have the functionality of Channels. I haven’t had a close look at it since we are still on 2.6.x but I think It’s what you wan’t in a better, simpler way.

I do want to add: I’m not sure why you have this Integration phase. It sounds scary. Integration should be done all the time on every check-in. If it’s stuff you do not want to ship for example you should try feature toggles.

We needed the above approach because our code base is very old en was not stable all the time and we needed some time to work on that. There should not really be a need for it I my opinion.

Erwin - I am interested in this Empty environment you created. Does it have machine in it? From what I see, if there are no matching machines, the deploy to that environment can’t happen. So, how exactly are you accomplishing this Empty deploy?

I need to occasionally bypass the first step in the lifecycle and we are on 2.6.5 as well (can’t move to channels yet).