Je viens d'un monde intégré où nous utilisons C/C++ pour la programmation et utilisez un IDE pour générer un fichier binaire, qui est ensuite programmé dans une carte matérielle, qui peut ensuite être testée.
Avec ce contexte, quel est un meilleur flux de travail pour les constructions automatisées que le flux de travail actuel de -build (à l'aide de l'IDE) -> Flash dans le test du matériel-> Test. En d'autres termes, est-ce que je peux bénéficier des avantages de CI dans le domaine que j'exécute?
Pour les logiciels embarqués, une intégration continue peut être utile
Dans le premier cas, vous pouvez configurer un serveur CI qui crée périodiquement une version pour la cible de simulation et exécute automatiquement les tests de cette cible simulée. Dans le second cas, vous devriez accrocher une cible réelle sur le serveur CI, puis créer périodiquement une construction et le tester.
L'avantage dans les deux cas est que vous obtenez des tests automatisés, sans surveillance et de régression qui vous indiqueront que vous avez accidentellement enfoncé quelque chose, même si cela se situe dans une partie apparemment sans rapport du logiciel (que vous n'auriez donc pas touché à vos tests manuels) .
Il y a une gazillion de bonnes raisons d'utiliser CI dans une équipe intégrée (si vous travaillez seuls dans votre IDE, les avantages de CI sont moins évidents, I dans CI est l'intégration et vous n'étugrez-vous pas avec qui que vous n'ayez pas l'intégration de personne lorsque vous travaillez seuls)
Cela vous oblige à avoir un processus de construction réparateur, scripté et automatisé. La sortie de votre système CI est la sortie qui est testée et sera cohérente. Peu importe les développeurs installés sur leur machine, la construction ne sera pas affectée.
Le grand avantage de CI est la possibilité d'exécuter des tests d'unités automatisés. Ces tests peuvent être compilés croisés sur la plate-forme machine CI. Ceci a l'effet secondaire architectural du découplage de la logique dépendante du matériel à partir du reste, de faciliter un port éventuel à une autre plate-forme et de faciliter la réutilisation du code indépendant de la plate-forme à un autre projet.
Il s'assurera que ce que tout le monde s'engage dans le contrôle de la source construit et donne rapidement des commentaires quand ce n'est pas le cas. Cela accélère vraiment les choses à savoir quels commentaires ont cassé la construction.
Il donnera à l'équipe d'essai un lieu commun pour obtenir la dernière version sans une charge sur l'équipe de Dev. Ou de bissecter rapidement un bug nouveau qui est apparu depuis 2 semaines ...
Les outils automatisés de l'inspection, des métriques et d'analyse de code peuvent déclencher un avertissement sur le code qui a été enregistré.
Le flux de travail habituel doit généralement avoir les produits de construction disponibles sur le serveur à clignoter sur le tableau. Dans votre développement quotidien, vous utilisez le flux de travail de votre IDE/Flash de votre IDE. Je ne connais pas votre projet, mais il est également possible d'avoir un script automatisé pour clignoter le nouveau firmware de la carte actuelle, puis de commencer/arrêter automatiquement les tests sur la carte via une interface série, par exemple.