Wikipedia bietet ziemlich gute Zusammenfassungen der meisten dieser Begriffe. Hier ist meine Sicht auf sie:
Die Build-Automatisierung automatisiert die Erstellung der Software, anstatt den Compiler manuell aufzurufen. Dies würde über Tools wie zB Make oder Ant erfolgen .
Bei der Bereitstellungsautomatisierung wird die erstellte Software auf einem Test- oder Produktionssystem bereitgestellt oder installiert.
Kontinuierliche Integration bedeutet, dass Ihre Software durch einen automatisierten Prozess kontinuierlich erstellt wird, während Entwickler Code einchecken und Komponententests durchführen, um sicherzustellen, dass der Code weiterhin funktioniert. Beispielsweise kann ein Server alle 15 bis 30 Minuten aktiviert werden, das VCS nach neuen Eincheckvorgängen durchsuchen und dann das Projekt aktualisieren und erstellen, wenn Änderungen vorgenommen wurden. Neben der Durchführung von Kompilierungsschritten ist dies auch eine hervorragende Gelegenheit, automatisierte Komponententests und Codequalitätsprüfungen durchzuführen .
Continuous Delivery ist eine Kombination aller vorherigen Konzepte, bei denen die Software-Builds auch auf einem Testsystem bereitgestellt werden, optional mit durchgeführten Tests und generierten Berichten.
Zumindest benötigen Sie eine Build-Automatisierung, dh eine Art Build-Skript. Auf diese Weise können Sie auf eine Schaltfläche klicken oder einen Befehl eingeben, um Ihr Projekt zu erstellen. Dies hat den Vorteil, dass Fehler durch manuell ausgeführte Schritte reduziert werden. In komplexen Build-Umgebungen müssen Sie möglicherweise Code generieren ( z. B. DAOs aus Configs, Schnittstellencode wie JAXB ), Code kompilieren, komprimieren, Metadaten anpassen usw. Bei vielen Aufgaben benötigen Sie eine Checkliste Ihr Build-Skript und verwenden Sie ein Tool, um es auszuführen? Es reduziert Fehler und sorgt für Konsistenz.
Als nächstes kommt CI: Das ist wirklich gut zu haben, aber nicht unbedingt erforderlich. Es hilft, Build-Probleme frühzeitig zu erkennen. Wenn mehrere Entwickler den ganzen Tag Code einchecken und möglicherweise ihre eigenen Arbeitsbereiche nicht ständig synchronisieren, besteht das Risiko, dass sich ihre Änderungen gegenseitig beeinträchtigen. Ich beziehe mich speziell auf statische Codefehler und nicht auf Versionskontrollkonflikte. Ein CI-Build-Server verringert dieses Risiko.
Schließlich haben wir die Bereitstellungsschritte. Die Idee dabei ist, Zeit zu sparen und Fehler durch manuelles Bereitstellen von Software zu reduzieren. Ähnlich wie bei der Build-Automatisierung gibt es hundert Möglichkeiten, eine Softwarebereitstellung zu vermasseln. Ich bin persönlich lange im Büro geblieben, um Probleme bei der manuellen Bereitstellung zu beheben, wenn wir ein funktionierendes System für Kunden benötigen, die morgen vor Ort sind. Die Automatisierung mehrerer Systeme birgt ein höheres Risiko: Anstatt dass ein System abstürzt oder seltsame Fehler aufweist, gibt es jetzt mehrereSysteme, die schief gehen können. Dieses Risiko ist jedoch weitaus geringer, als wenn jemand einen Schritt auf einer Checkliste verpasst oder einen falschen Befehl ausgibt und eine Bereitstellung durcheinander bringt. Wenn Sie Glück haben, können Sie einfach eine DB-Sicherung wiederherstellen und von vorne beginnen. Wenn Sie Pech haben, kann ein Fehler dazu führen, dass das System nicht richtig funktioniert. Ist es ein Softwaredefekt? Hat der Techniker eine Konfiguration nicht korrekt vorgenommen? Dies erfordert Zeit für die Diagnose, Zeit, die Sie möglicherweise nicht haben, und Zeit, die Sie nicht aufwenden müssen, wenn Sie den Prozess automatisieren.