How we built a custom CI/CD for flexibility and vendor independence