We are hosting a Java/Spring webapp on AWS ElasticBeanstalk and deploy it along with the whole infrastructure (EB, SQS, SES, API GW, CFront, S3, Cognito... the list goes on) using multiple CloudFormation templates, grouped by logical areas.
I cannot get my heard around how to streamline our build/release process in terms of versioning. When the Java devs build a new version e.g. v1.2.3, how do I make sure that my CloudFormation changes in one or more cfn stacks are aligned and dependent cfn changes will "follow" the appropriate Java code version. Or from a different perspective how do I tell what version is deployed in a particular environment, and whether all my cfn changes are deployed at all? I know it's quite a vague list of questions, but I was hoping that some dependency/version management framework exists, similar to what maven or requirements.txt in python does.
I tried applying AWS tags to show what "version" of a certain stack is deployed on AWS, but I cannot help but think it's all fake. I could not find any best-practices blogs, articles or answers here so far. Any ideas?