We do have several Components in our product which are
- Component A
- Component B
- Component C
Dependencies are (if unmet the system fails):
A <-> B
B <-> C
We are currently creating a build pipeline and finally the Software for each component gets packaged into a single firmware image:
A -> Output A
B -> Output B
C -> Output C
Output A + Output B + Output C = Firmware
The firmware gets packed with some documentation and will then be deployed. Deployments should happen every week to testing and every 2-4 weeks to production.
Firmware + Docs = Deployed Software
My problem is now:
How do i ensure compatibility between A,B and C given the fact that they are all developed by different teams?
I saw this question here Looking for best practice for version numbering of dependent software components
We do have version numbers in place for A,B and C and the overall Firmware has one as well. Are there any best practices or ways to do it?
How do i track back compatibility? (Besides looking into the packaged firmware and see which versions got included at a certain point in time)
I thought about using git tags here and put the Firmware Version number (only shipped products) as a tag on A,B,C.