The objective of this operator is to provide a gitops based approached to publishing APIs in IBM's API Connect.
This is designed around a githubs repo that contains all apis/products for a catalog/space/channel where the following branches exist.
- agnostic - where the developer checks in the environment agnosti code
- SIT - Where the API is tested formally
- NFT Test - Long Running test
- Prod - Prod
Each CR will have three key variables
- Current Environment
- Repo
- Branch
- Last publish time
- Which is the next environment in the flow.
Each CR will watch the github repo and branch to see if there is a change. If there is a change the following flow is done.
- Products and apis cloned from the repo-branch
- Compare the products name and version to those already deployed in APIC
- If there is a product that is in the repo but not in apic check to see if there is a product with an earlier minor version but the same major version,
- If there is a product with the same major version but an earlier major version, replace the existing the product with this one,
- if not (to any of the ifs) just publish this without replacing what is there
- If there is a product that is in APIC but not in git then retire+delete the api.
How do we handle Rollback?? How do we handle Build??