Estructuración de proyectos Xcode, espacios de trabajo, repositorys GIT y Cocoapods para CI / CD

En el pasado, trabajé principalmente en proyectos de aplicaciones individuales. Trabajé en aplicaciones más pequeñas, pero también en proyectos realmente grandes con cientos de miles de líneas de código.

Sin embargo, todos estos proyectos tenían una cosa en común. Eran principalmente proyectos de aplicaciones individuales. Claro, utilizaron sistemas de administración de dependencies como Cocoapods, Gradle, Maven y demás, pero actualmente estoy enfrentando algo, que realmente soy nuevo.

En el pasado, tenía mis proyectos en repositorys GIT separados. Tenía dependencies, digamos un proyecto principal (si desarrollé un module) y / o un código de un tercero.

Cuando quería build automáticamente mis proyectos con CI / CD como TFS, Jenkins o Hudson, todo lo que tenía que hacer era configurar un disparador para empujar a mi repository y estaba listo para empezar.

Ahora estoy trabajando en un proyecto de iOS que es diferente. Tengo un proyecto con objectives múltiples que crean diferentes aplicaciones. Los diferentes objectives comparten algunas funcionalidades básicas, pero tienen algunos files específicos del objective (como Firebase JSON, App Info.plist o un Catálogo de activos).

Mi problema ahora es que todos los objectives y el núcleo están en un repository de GIT, así que cuando los presiono, no tengo ni idea de cómo puedo hacer una diferenciación entre qué objective build.

Así que aquí está mi pregunta : ¿cómo debería estructurar correctamente mis proyectos Xcode, espacios de trabajo y repositorys GIT?

¿Debo separar el núcleo y cada objective en sus propios proyectos y git repo? ¿Cómo manejaría los cocoapods? ¿Debería agregar los mismos pods al objective si ya están agregados al proyecto central o los includeé automáticamente en mis objectives cuando agregue el núcleo como una dependencia?

¿Debería convertir el núcleo en un pod y agregarlo como una dependencia del nuevo proyecto objective, o debería agregar el proyecto principal como un subproyecto? ¿O debería crear un espacio de trabajo que contenga el núcleo y los proyectos de destino?

Me gustaría poder arrancar Xcode y modificar todo mi código simultáneamente sin abrir varias windows. Me gustaría tener un espacio de trabajo en el que pueda modificar algo en el núcleo, luego cambiar inmediatamente algún código en uno de los objectives y luego ejecutar una de las aplicaciones en el simulador.

Realmente no estoy seguro de dónde poner qué código, dónde usar un proyecto y cómo dividir mi código en varios repositorys. ¿Dónde iría, por ejemplo, un espacio de trabajo "maestro"? En el repo core? En cada repos de objective? En un repository adicional? ¿Tendría que usar proyectos sub git (si hay algo como eso)?

Espero que entiendas lo que quiero decir y me puedas dar algunos consejos. Estoy abierto para cada sugerencia, cada tutorial o documento que explique algo sobre cómo abordar esa estructura. Gracias a todos de antemano.