Definition und Zweck:
Continuous Integration (CI) ist eine zentrale Praxis der modernen Softwareentwicklung, bei der Code-Änderungen von mehreren Entwicklern regelmäßig (idealerweise mehrmals täglich) in einem gemeinsamen, zentralen Repository (Git) zusammengeführt (integriert) werden. Nach jeder Integration folgt ein automatisierter Prozess, der den Code baut (Build) und eine Reihe von automatischen Tests durchführt.
Das Hauptziel von CI ist es, Integrationsprobleme frühzeitig zu erkennen und zu beheben, die auftreten, wenn Code-Änderungen nur selten zusammengeführt werden. Dies reduziert das Risiko und die Komplexität der Integration drastisch und führt zu einer höheren Qualität und Stabilität des Codes.
Ablauf und Werkzeuge:
- Commit: Ein Entwickler sendet seine Änderungen an das Git-Repository.
- Trigger: Das CI-Tool (z.B. Jenkins, GitLab CI, Azure DevOps) erkennt den Commit und startet einen automatisierten Continuous Integration-Lauf.
- Build: Der Code wird kompiliert (Compiler) und zu einem ausführbaren Artefakt (z.B. einer neuen SPS-Firmware oder -Projektdatei) zusammengebaut.
- Automatisierte Tests: Unit-Tests, statische Code-Analysen, und, besonders in der Automatisierung, hardware-in-the-loop-Tests oder Simulationen werden ausgeführt.
- Feedback: Die Entwickler erhalten sofort Feedback über den Erfolg oder Misserfolg des Builds und der Tests.
Relevanz in der Automatisierung:
CI ist zunehmend wichtig für die industrielle Automatisierung, da SPS-Programmierung komplexer wird und Teams aus mehreren SPS-Programmierer/in bestehen.
- Qualitätssicherung: Regelmäßige Tests stellen sicher, dass neue Funktionen keine bestehenden Funktionen beschädigen (Regressionstests).
- Multiuser Engineering: Unterstützt die gleichzeitige Arbeit mehrerer Entwickler an einem gemeinsamen Projekt (Automation Studio, Studio 5000).
- Schnellere Deployment: CI ist die Grundlage für Continuous Delivery (CD) und ermöglicht eine schnellere und zuverlässigere Bereitstellung von Updates und neuen Versionen.
→ Siehe auch: Git, Softwareentwicklung, Compiler, SPS-Programmierung, Multiuser Engineering, SPS-Programmierer/in, Zuverlässigkeit

