Plone site updates

What is a good practice to move changes between deployment environments?

Say we have three environments - development, staging and production. I made a plugin, added an existing plugin and configured it or made some other configuration level change in my development environment. How do I move my changes to staging and then production environments? Do I have to do everything manually three times or is there a way to automate things?

Hi, depending on what Changes you're trying to deploy, your addon package has usually a so called GenericSetup profile which is a bunch of .xml files and/or python scripts which adapt the settings of your Plone setup or do some more complex stuff with your content etc.
With every version of your addon package you can define upgradeSteps from source to destination version ... Here you can read more about GenericSetup and maybe get an idea of what you can make: https://training.plone.org/5/mastering-plone/registry.html

Here is an even more in depth look at GenericSetup https://docs.plone.org/develop/addons/components/genericsetup.html