Comment l'intégration continue est-elle liée à la livraison / au déploiement continus?

20

Voici une citation du contenu actuel de :

... processus de fusion fréquente des copies de code de travail du développeur vers une base de code partagée pour éviter ou minimiser les problèmes d'intégration.

OK, je comprends. Mais il y a aussi et et qui est où je continue obtenir un peu perdu:

  • Comment l'intégration continue est-elle liée à la livraison continue et / ou au déploiement continu , en supposant que quelque part le long de la ou des lignes via integrationvous vous retrouvez deliveringdans un environnement cible où tout sera deployed.
  • Quelle est la différence entre une livraison continue et un déploiement continu ?

À l'époque, avant que DevOps ne s'appelle DevOps, nous utilisions une terminologie qui pourrait éventuellement aider à comprendre ces nouveaux termes DevOps, tels que:

  • promouvoir (ou rétrograder ) une cible de pré-production, éventuellement combinée avec un certain type de processus de régénération (compilations, liaisons, etc.) pour empaqueter tous les composants associés ensemble dans des choses de type exécutable. C'est ce qui devrait être similaire / proche de l'intégration continue , ou non?
  • distribuer à un environnement cible, en utilisant quelque chose comme FTP (si les copies standard ne peuvent pas combler l'écart), mais ne pas encore l'activer dans la cible. C'est ce qui devrait être similaire / proche de la livraison continue , ou non?
  • installer (ou activer ) dans un environnement cible, combiné à des choses comme les liaisons, les opérations d'arrêt / de démarrage, etc. Qu'est-ce qui devrait être similaire / proche du déploiement continu , ou non?
Pierre.Vriens
la source
Trop de démarques de balises rendent la lecture difficile. Cela n'apporte pas plus de contexte à la question, donc je pense que les Ords peuvent être soulignés par un soulignement _markdown_ pour faciliter la lecture
Tensibai
1
Je veux dire que l'édition est pénible
Tensibai
Post StackOverflow
Dan Cornilescu

Réponses:

23

La livraison continue et le déploiement continu poussent l'intégration continue un peu plus loin, en ajoutant une étape de «déploiement à la production» au processus. La différence entre la livraison continue et le déploiement est que pour la livraison, cette étape est effectuée manuellement et pour le déploiement, elle est automatique.

Différence entre l'intégration continue, la livraison continue et le déploiement continu

Différence entre l'intégration continue, la livraison continue et le déploiement continu. Image copiée de codeproject.com

Que vous fassiez une livraison continue ou un déploiement continu est un choix d'implémentation. Si vous effectuez un déploiement continu, les modifications de code seront déployées automatiquement après la réussite des tests d'acceptation. Cela peut être souhaitable ou non pour votre produit. Avec une livraison continue, les utilisateurs peuvent choisir si un changement de code particulier est déployé ou non (et éventuellement où exactement il est déployé).

Étant donné que la différence entre la livraison continue et le déploiement est faible et que de nombreuses personnes ne connaissent pas la différence exacte, les deux termes sont parfois utilisés de manière interchangeable.

THelper
la source
Agréable! Mais ... la solution (votre réponse) à un problème (ma question), change le problème ... lire la suite ...
Pierre.Vriens
4

La livraison continue et le déploiement continu (CD) sont plus ou moins la même chose *. Chaque fois qu'un changement est considéré comme «bon à faire» (testé / vérifié), il doit être publié immédiatement. Vous pouvez le faire autant de fois par jour que le travail est terminé.

L'intégration continue (CI) se réfère uniquement à la fusion de code souvent pour garantir que les branches de fonctionnalités ne s'éloignent pas trop loin de votre branche principale `` principale '', et aussi pour que vous sachiez très rapidement s'il y a des problèmes avec le code d'un perspective d'intégration - c.-à-d. avez-vous cassé une fonctionnalité lors d'un changement

En ce qui concerne la façon dont ils sont liés les uns aux autres, CI aide grandement à vérifier le code afin qu'il puisse être publié rapidement (CD). Vous pouvez toujours réaliser un CD sans CI (et vice versa), mais vous constaterez que souvent, il est beaucoup plus facile d'intégrer votre code tôt et souvent de trouver des problèmes plus rapidement, ce qui à son tour vous permettra de résoudre ces problèmes plus rapidement et enfin livrer vos fonctionnalités plus rapidement!

* Edit: voici un article discutant de la différence. https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff La livraison continue ne signifie pas toujours un déploiement réel en production à tout moment, mais plutôt un déploiement constant dans un environnement de production , avec la certitude que ces changements pourraient entrer en production à tout moment une fois l'entreprise prête. En pratique, la plupart des gens confondent ces termes.

tayworm
la source
merci! Mais selon votre "plus ou moins la même chose", vraiment? pouvez-vous penser à quelque chose qui illustre des nuances?
Pierre.Vriens
J'ai mis à jour mon article avec une note sur les différences, mais je crois que dans la conversation normale, la plupart des gens utiliseront ces termes de manière interchangeable.
tayworm
2

Une certaine version d'un produit logiciel doit d'abord terminer sa phase d'intégration avant de pouvoir être livrée ou déployée.

Pour Continuous livraison / déploiement continu d' intégration est un must. Sinon, si les événements d'intégration terminée sont trop éloignés pour être qualifiés pour l'attribut "continu", les livraisons / déploiements possibles le sont également (seul un sous-ensemble des versions intégrées est généralement qualifié pour les livraisons / déploiements).

Mise à jour: Ma réponse ne fait que souligner la dépendance (relation) entre CI et (les deux) CD, la terminologie est assez bien couverte par la réponse de THelper.

Le seul commentaire que j'aurais à faire à ce sujet concerne l'utilisation (surchargée) de deployment. Les déploiements dans des environnements hors production sont une réalité. Ils peuvent même se produire assez souvent, par exemple dans le cadre de différentes étapes de test lors d'une livraison continue. Mais cela ne fait pas de tels déploiements continuous deployments. Les déploiements continus se réfèrent spécifiquement aux déploiements dans l'environnement de production.

Dan Cornilescu
la source
ok, ça aide, mais peut-être pouvez-vous étendre votre réponse en décrivant la livraison et le déploiement?
Pierre.Vriens
1

Fondamentalement, l'intégration continue fait partie à la fois de la livraison continue et du déploiement continu, sauf que les versions se produisent automatiquement. Vous pouvez également considérer la livraison continue comme la prochaine étape logique de l'intégration continue et elle fonctionne dans tous les environnements. L'intégration continue aide également à la vérification des artefacts afin qu'elle puisse être déployée plus rapidement. Bien qu'il ne soit pas possible d'avoir un déploiement continu sans intégration continue et qu'il est tellement plus facile d'attraper des bogues avec une intégration continue. Toutes ces «choses continues» visent en fin de compte à supprimer les actions inutiles dans le flux de travail de développement. Plus important encore, les CI / CD sont importants du point de vue technique et commercial. Les entreprises qui n'adoptent pas ces principes DevOps risquent de suivre le chemin des dinosaures. Dans l'environnement informatique actuel, il est soitDevOps ou mourir.

DevOps Jedi
la source