I've read about two approaches (there are probably more) for implementing continuous delivery pipelines in GCP:
- Skaffold
- Spinnaker + Container Builder
I've worked with both a little bit in Quiklabs. If someone has real experience with both, could you please share their pros and cons compared to each other? Why did you choose one over another?
Pipeline using Skaffold (from the docs https://skaffold.dev/docs/pipeline-stages/):
- Detect source code changes
- Build artifacts
- Test artifacts
- Tag artifacts
- Render manifests
- Deploy manifests
- Tail logs & Forward ports
- Cleanup images and resources
Pipeline using Spinnaker + Cloud Builder:
- Developer:
- Change code
- Create a git tag and push to repo
- Container Builder:
- Detect new git tag
- Build Docker image
- Run unit tests
- Push Docker image
- Spinnaker (from the docs https://www.spinnaker.io/concepts/):
- Detect new image
- Deploy Canary
- Cutover manual approval
- Deploy PROD (blue/green)
- Tear down Canary
- Destroy old PROD