The main content of the post includes
- Basic CI/CD workflow
- CI/CD System architecture
- Practice on GCP
Step 1: Prepare a basic CI/CD workflow
I have 2 zones, zone for developer zone and zone for dev/staging/production zone.
- In developer zone : any commit from developer will active CI system to run test case and report to notification center (Slack, telegram, email)
- In dev/staging/production zone : Any merge request to dev/staging/production environment will be active CI system. Pull code -> application packaging (docker, maven, npm) -> tag packaging -> push to container registry (Nexus, Harbor, Container registry) -> deploy to Kubernetes cluster -> rollback to the recent version if have system error.
Step 2 : CI/CD system architect
Source repository : Bitbucket, Github enterprise
Container registry : Google container registry
CI tool : Google cloudBuild
CD tool : Spinnaker
Kubernetes : Google kubernetes engine
Messaging : Google cloud pub/sub
Storage : Google cloud storage
Cloud load balancing : Load balancer IP
The next post will write more details on how to implement it, thanks you.