Thanks for getting in touch! It looks like you are after our Channels feature here.
Channels let you handle multiple “Branches” of the same project in Octopus. You can apply versioning rules and have Octopus automatically select the package and deployment Lifecycle based on the Channel selected at release creation time.
The documentation I linked to above has some great examples and details about how you can use this feature, we also have the ability to select a Channel in the TeamCity create release plugin step.
If you have any questions about this, or run into any issues, please don’t hesitate to let me know.
Apologies, but - I never mentioned “branches of the same project” ?
We would like to put multiple different packages through the same CI / CD pipeline - not just versions of the same package.
Would the Channels feature still be applicable, as it seems instead this feature is around version control, rather than project distinction? Do you have a feature that supports what I am envisioning, as the one you have proposed seems not to align with my proposed outcomes?
We need to be able to distinguish the multiple different sets of packages & their releases/ versions that get pushed through the CI/CD pipeline?
Thanks for getting back. I may have been a bit short in my explanation of how Channels can help you here. I still think Channels will help you achieve your goals here but there is some further advice I could provide to better help you.
The first thing I will mention is that our Channels feature will be a great help here if the deployment concept is the same between your different packages. Octopus is good at handling dynamic deployments, and is able to accommodate dynamic package names in your deployment process.
If the concept of your deployment between different packages is different, then the best suggestion would be to use separate projects for each different deployment concepts.
In your package step, you are able to dynamically select a package based of a variable. This is is most likely where you would need to start.
From here you could create a project variable like #{PackageID} and assign multiple values which would relate to your different package names. You can then scope these different package name values to your different Channels. So when you create a release for Channel-A it will use Package-A as the package name. By default, Octopus will simply use the latest version of the package in its repository.
You can manually define the package version when creating the release, or you could use the Channels feature to configure version rules to handle this for you. This gives you more control if you need to deploy multiple different versions of the same specific PackageID inside your project.
Does this sound like it’s what you are after?
I understand you may have more questions here, so please don’t hesitate to let me know if you do and I’ll do my best to help.