We are using Octopus to deploy database changes to about 30 databases. Each one has its own Octopus project, and the projects are identical except for the names.
This works fine but is somewhat of a maintenance issue. For example, I’d like to add an email step to all of the projects, but do this I would have to open each one and make the changes manually.
Is there a better way to manage this?
You have a few options here.
SpaceCloner -> ProjectSyncer.ps1 -> SpaceCloner/ProjectSyncerParameterReference.md at master · OctopusDeployLabs/SpaceCloner · GitHub and SpaceCloner/UseCase-ParentChildProjects.md at master · OctopusDeployLabs/SpaceCloner · GitHub for more details. You’d make a change in a single project, run the script and sync those changes everywhere.
Manually make the changes. It’s an option (I didn’t say it was a good one, just one that is possible)
Create a single project where each channel is a project. You’d lean heavily on this: Dynamically selecting packages at deployment time - Octopus Deploy and scope the package name variable and connection string variables to a specific channel. The upside is once this is set up you only have to change the process once. The downside is a lot of details are going to be hidden from your users as they’d have to click into the project to get the status of their package.
I hope that helps!
Thanks! I’ll try Option 1. Option 3 sounds good long-term but it might be too disruptive for now.
Sounds good, if you run into any issues please let me know!
Also, that script includes a whatif parameter. I’d set that to true and check the changelog.txt to make sure it is going to change what you expect.