SetupAngularJS o Angular2 Projects para continuous integration e implementación continua

Actualmente tengo mi git configurado para proyectos AngularJS. Pruebo localmente y si pasan las testings, confirmo el código en Git repo. Lo que quiero hacer es configurar el proyecto de interfaz de usuario con CI y CD de manera que incluso después de realizar testings locales cuando confirme el código para Git repo, se activen las testings y luego compile (para Angular2 o minify por ejemplo para AngularJS) el proyecto listo para ser usado. Si las testings fallan, debe rechazar los push / changes. Luego, debe enviar el código pasado a la carpeta de implementación apropiada automáticamente.

Puede Grunt / Gulp hacer esto o necesito algunas otras aplicaciones / herramientas de CI / CD para esto. Si es así, ¿alguien puede explicar cómo configurar esto?