About MCaaS
Github Repository Structure
All github repositories should have only one Dockerfile, located at the root level as shown below:
Important
Each microservice application should have it’s own github repository.
Repository Naming Convention
Tenants must follow the below naming convention for their github repositories:
NAME | EXAMPLE |
---|---|
<module>-<application>-<service> | module1-robotshop-web |
Gitflow and Application Deployment
The application deployment Gitflow mechanisms defined by Jenkins and Git are integral to the MCaaS modern software delivery philosophy.
Each tenant repository will contain it’s own github repository, as stated above, and each of these repositories will have the following four protected, reserved branches.
These branches are:
development
test
staging
production
When code is merged into any of these four branches, that code will automatically be deployed to that MCaaS environment.
The MCaaS branching strategy to traverse code throughout these four environments is a follows:
A developer creates a feature branch from the development
branch. The developer commits some code to this feature branch. When the developer is satisfied with this code and is ready to perform some tests, the developer will open a pull request FROM the Feature branch TO the development
branch. This action will trigger various tests, scans, etc., of the code and will require approval from another member of the tenant developer team.
Once this pull request receives approval and the feature branch is merged into the development
branch, the MCaaS platform will automatically deploy this version of the code to the tenant’s developer environment.
Code can then traverse the various MCaaS environments via the same pattern of opening a pull request, conducting additional tests and scans, receiving tenant developer team approvals, and finally merging the code.
Which tests happen during which phase of this Gitflow process and what kind of approvals are required will most likely vary based on the tenant and microservice, but the overarching process will remain the same.
A barebones diagram of this process can be found below: