Octopus Version: 3.8.6
Is it possible to have one project, with multiple life-cycles and have an automatic deployment in each of the life-cycles?
I have the following setup (images included below):
Two branches in git - Master and Dev.
Two lifecycles, one for each branch
Dev lifecycle is simply a deployment to one iis site.
Production lifecycle(for master) is a series of steps (Ready for testing, Test, Staging, Production)
Ready for testing is just ‘holding’ step where I deploy to a file location on a server. This so that the test team will always see the latest build and be able to promote it to test easily from the dashboard and can see when there is a new deployment available.
At the moment Dev deploys automatically, correctly and successfully, however, when a new package becomes available on the master branch, I cannot get an automatic release to my ‘Ready For Testing’ environment.
My question is, does having a holding area make sense and if so how do I have multiple automatic releases within the same project. Should I split it into two projects?
Note: I have also already ensured I have Deploy automatically to this environment as soon as the release enters this phase. on the ready for test phase
I have just found this thread that addresses the same issue… unfortunately it has been closed with octopus deploy saying they will not support this feature.
Thanks for getting in touch! I’m sorry for the delay in getting back to you. I ran this past our devs and it looks like we are going to need to clarify a few things here.
You mention that you are using two branches, one for Master and one for Dev. However, it does not look like your channels are configured to fully support this.
We have some extensive documentation around how to best use a branching solution in Octopus, it may be worth while to check it out. https://octopus.com/docs/patterns/branching
We also cover this in our Channels Walkthrough at the following link: https://octopus.com/blog/channels-walkthrough
It definitely looks like configuring your deployment to use a Channel for each branch would be the best way to automatically create a release to
Ready for Testing when a new package becomes available.
Let me know if I have misinterpreted this or if you have any questions regarding this, I would be happy to help.
thanks for your reply. I appreciate the links and have spent time reading/watching the content. I have modified my setup so that I am following the idea that both my channels are part of different life-cycles. I have used the regex within the channels to ensure that only certain releases with the correct tags can be pushed to the correct channel. However, I am still at a loss how to do an automatic deployment to the Dev channel when a new release is available, as well as an automatic deployment to my ready for test environment within my production channel. The automatic deployment feature requires you to specify a channel. So my understanding is I can only have automatic deployments working to one of my channels?
It looks like you are after Automatic Release Creation here, not Automatic deployment. Here is a link to our documentation on Automatic Release Creation.
It sounds like you are close here, I can give you an example of how it is done but the documentation above will prove a much more in depth resource.
Say I have a package
myPackage.1.0.1-Dev.nupkg and a rule setup in my Dev Channel for anything tagged with
-Dev. I would need to configure my Automatic Release Creation to detect that a -Dev package has been pushed and create a release to the corresponding Channels Lifecycle. However, this is not quite enough to start the deployment, it will only create a release to the desired Lifecycle upon the package hitting the repo. The step needed here to automatically start the deployment is to configure the Lifecycle to automatically deploy when the release enters the desired phase, the first one for an automatic deployment directly after release creation.
(See Lifecycle Phases for instructions on this: https://octopus.com/docs/key-concepts/lifecycles#Lifecycles-LifecyclePhases)
The documentation I have linked should give you all your need to get your deployments running automatically, however, I am happy to answer any questions you may have here.
thanks for your help. I ended up using the REST API and calling it using the GRUNT-HTTP plugin. Got it working in the end though. Thanks for your suggestions and help!