Cela peut ne pas fonctionner pour votre cas d'utilisation, mais comme nous essayons de fusionner fréquemment vers master et de ne pas laisser les branches en place pendant très longtemps, nous avons eu beaucoup de chance avec cette méthodologie.
Nous utilisons Azure DevOps comme outil de construction, et nous poussons les constructions dans AppCenter.ms comme outil de distribution pour les constructions non-release. Pour les builds de versions, nous les poussons directement vers l'App Store.
AppCenter.ms vous permet de créer des "groupes de distribution", qui sont essentiellement une liste des adresses e-mail que vous souhaitez recevoir des notifications lorsqu'un nouveau build est téléchargé qui "cible" ce groupe. Chaque groupe a un GUID unique et si vous utilisez Azure DevOps et leur .azure-pipelines.yml (ou si vous configurez manuellement un build via l'interface utilisateur, bien que ce soit un processus très laborieux), vous pouvez utiliser la tâche AppCenter avec une condition qui vérifie le nom de la branche et déploie vers des ID de groupe spécifiques en fonction de la branche en cours de construction.
L'un des éléments qui nous facilite la tâche est l'utilisation de "certificats de distribution d'entreprise", qui ne nécessitent pas l'inscription d'un appareil individuel, contrairement aux certificats ad hoc ou aux certificats de développeur. L'autre élément qui pourrait être important, si un utilisateur peut installer des versions de l'application provenant de différents groupes, vous DEVEZ avoir un Bundle ID différent (et donc un autre profil de provisionnement) pour chaque version, sinon elles se chevaucheront sur l'appareil de l'utilisateur. Il s'agit d'une exigence d'Apple (mais Android a une exigence similaire de dénomination unique des bundles).
Dans notre cas, étant donné qu'ils se trouvent dans notre compte Enterprise (non public AppStore), nous avons com.company.appname.test et com.company.appname.prodtest qui, pour nos besoins, exécutent le même code, mais qui ciblent des environnements backend (URL) différents pour nos API.