🚀 Bist Du bereit für eine Karriere im Bereich Data? Finde es in nur 60 Sekunden heraus!

Was ist CircleCI? Einführung in die kontinuierliche Integration und Automatisierung

-
4
 Minuten Lesezeit
-

CircleCI ist eine Plattform für kontinuierliche Integration und Bereitstellung (CI/CD). Gegründet im Jahr 2011 und bewertet mit 1,7 Milliarden Dollar im Jahr 2021, ist diese Lösung heute eine der beliebtesten CI/CD-Plattformen weltweit.

Mit CircleCI können Entwickler ihren Code schnell und zuverlässig erstellen, testen und bereitstellen. Heute bedient das Unternehmen Tausende von Organisationen weltweit, von Startups bis hin zu großen Unternehmen, indem es ihnen Flexibilität und Leistung bietet, die für alle Arten von Projekten geeignet sind.

Aber was ist eigentlich CI/CD?

CI/CD steht für „Continuous Integration / Continuous Delivery“ (kontinuierliche Integration / kontinuierliche Bereitstellung) und ist eine Entwicklungspraxis, die darauf abzielt, die Phasen des Lebenszyklus einer Anwendung zu automatisieren. Sie ermöglicht es, menschliche Fehler zu reduzieren, die Lieferzeiten zu beschleunigen und die Anwendungsqualität zu verbessern.

  • Die kontinuierliche Integration (CI) bedeutet, dass der von verschiedenen Teammitgliedern geschriebene Code regelmäßig in ein zentrales Repository integriert wird. Jede Änderung wird automatisch getestet, um sicherzustellen, dass keine Fehler oder Inkompatibilitäten entstehen.
  • Die kontinuierliche Bereitstellung (CD) automatisiert die Lieferung des validierten Codes ohne manuellen Eingriff.

Hauptfunktionen

CircleCI bietet eine breite Palette von Tools und Integrationen, die entwickelt wurden, um den Entwicklungsprozess zu automatisieren, zu optimieren und zu sichern und dabei eine effiziente kontinuierliche Lieferung zu gewährleisten.

Flexible Workflows

Es ermöglicht das Orchestrieren komplexer Pipelines mit bedingten Abhängigkeiten. Dies optimiert Tests und Bereitstellungen, was Zeit spart.

Ausführung in der Cloud

Bietet skalierbare Cloud-Umgebungen über virtuelle Maschinen oder Docker.

Parallelisierung von Builds

Teilt Aufgaben auf, um Tests und Builds zu beschleunigen und so die Verarbeitungszeit zu verkürzen.

Multi-Umgebungsunterstützung

Unterstützt verschiedene Sprachen, Frameworks und Umgebungen.

Bereitstellungsautomatisierung

Integration mit Tools wie Kubernetes und Terraform.

Intelligentes Caching

Abhängigkeiten werden zwischengespeichert, um ihren erneuten Download zu vermeiden.

Sicherheit und Konformität

Verschlüsselung von Daten, feinkörnige Berechtigungen und Pipeline-Audits.

Kontinuierliche Tests und Berichterstattung

Integration mit Testtools und Erstellung detaillierter Berichte.

Überwachung und Einsichten

Analytische Dashboards zur Überwachung der Pipeline-Leistung.

Integration mit Git

Kompatibel mit GitHub, GitLab und Bitbucket zur Automatisierung von CI/CD-Workflows.

Einrichtung von CircleCI

Die Erstkonfiguration ist einfach und schnell und kompatibel mit GitHub, GitLab oder Bitbucket.

1. Vor der Installation

  • Zuallererst ist es notwendig, ein Konto auf einer kompatiblen Code-Verwaltungsplattform zu haben (GitHub, GitLab oder Bitbucket). Ebenso ein Konto bei CircleCI, das mit dem von dir verwendeten Repository verbunden ist.
  • Es ist notwendig, eine Konfigurationsdatei config.yml in einem .circleci-Ordner im Stammverzeichnis des Repositories zu haben.

2. Projektanmeldung

Achte darauf, die angeforderten Berechtigungen von der CircleCI-Website zu erteilen, damit es auf deine Repositories zugreifen kann. Um ein neues Projekt hinzuzufügen, klicke auf „Projekt einrichten“, wie im unten gezeigten Screenshot:

Wähle eine Integrationsmethode aus, in diesem Beispiel handelt es sich um „Fast“.

Eine Konfigurationsdatei wird automatisch erstellt.

3. Die Konfigurationsdatei

In unserem Beispiel sieht die erstellte Konfigurationsdatei folgendermaßen aus:

version: 2.1
orbs:
  python: circleci/python@2.1.1
jobs:
  build-and-test:
    docker:
      - image: cimg/python:3.12
    steps:
      - checkout
      - python/install-packages:
          pkg-manager: pip
      - run:
          name: Run tests
          command: pytest
workflows:
  sample
    jobs:
      - build-and-test
  • Die erste Zeile betrifft die von CircleCI verwendete Schema-Version.
  • Die orbs sind wiederverwendbare Pakete, die vorkonfigurierte CircleCI-Konfigurationen enthalten. Sie ermöglichen die schnelle Integration spezifischer Tools oder Sprachen, ohne die Konfiguration neu schreiben zu müssen.
  • Die jobs sind Arbeitseinheiten. Sie enthalten eine Reihe von steps, die in einer spezifischen Umgebung ausgeführt werden. In diesem Fall beinhaltet der Job build-and-test ein Element docker, das die Ausführungsumgebung des Jobs definiert (hier handelt es sich um ein von CircleCI bereitgestelltes Docker-Image) und ein step-Element, das weiter unten beschrieben wird.
  • Die Schritte (steps) definieren die auszuführenden Aktionen im Rahmen eines Jobs:
    • checkout: Ruft den Quellcode aus dem Repository ab, um ihn in der CircleCI-Umgebung verfügbar zu machen.
    • python/install-packages: Dieser Befehl installiert die erforderlichen Abhängigkeiten mit dem Paketmanager pip.
    • run: Führt einen Befehl innerhalb des Jobs aus. Pytest wird hier verwendet, um Unit-Tests durchzuführen.
  • Schließlich sind die workflows ein Satz von Jobs, die in einer definierten Reihenfolge ausgeführt werden:
    • sample: Name des Workflows
    • jobs: Liste der im Workflow auszuführenden Jobs

Gegebenenfalls können wir die folgenden Änderungen vornehmen:

  • Um die erneute Installation der Pakete bei jeder Ausführung zu vermeiden (und somit die Build-Zeit zu verkürzen), kann ein Cache-Management implementiert werden:
- restore_cache:
   keys:
     - v1-dependencies-{{ checksum "requirements.txt" }}
- python/install-packages:
   pkg-manager: pip
- save_cache:
   key: v1-dependencies-{{ checksum "requirements.txt" }}
   paths:
     - ~/.cache/pip

So wird CircleCI versuchen, einen vorhandenen Cache basierend auf dem Hash der Datei requirements.txt wiederherzustellen. Wenn dieser verfügbar ist, wird er abgerufen, andernfalls wird er über pip installiert.

  • Wenn die Anwendung in die Produktion geht, können wir nach erfolgreichem Test eine automatisierte Bereitstellung hinzufügen:
workflows:
 version: 2
 deploy:
   jobs:
     - build-and-test
     - deploy:
         requires:
           - build-and-test
         filters:
           branches:
             only: main

4. Cloud-Integration

CircleCI lässt sich nahtlos in Cloud-Infrastrukturen integrieren, sei es Azure, AWS oder GCP. Hier werden wir eine AWS-Integration durchführen. Um es einfach zu machen, sollte zunächst ein orb hinzugefügt werden, der wie folgt ist:
aws-cli: circleci/aws-cli@4.1.1

Sowie ein job, der wie im folgenden Beispiel aussieht:

deploy-to-aws:
   docker:
     - image: cimg/python:3.12
   steps:
     - attach_workspace
         at: /home/circleci/project
     - aws-cli/setup
     - run:
         name: Configure AWS credentials
         command: |
           aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
           aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
           aws configure set default.region $AWS_DEFAULT_REGION
     - run:
         name: Deploy application to S3
         command: |
           aws s3 cp /home/circleci/project/ s3://$AWS_S3_BUCKET_NAME --recursive
     - run:
         name: Clear AWS credentials (for security)
         command: rm -f ~/.aws/credentials

Die vorhandenen Umgebungsvariablen (erkennbar am Zeichen $) müssen zuvor in den CircleCI-Einstellungen erstellt werden.

Best Practices für CI/CD

CircleCI empfiehlt mehrere Best Practices zur Optimierung von CI/CD-Pipelines.

Der CI/CD-Prozess sollte als essentiell für jedes Entwicklungsteam angesehen werden.

Manuelle Prozesse vermeiden, die die Entwicklung verlangsamen.

Konfigurationen wiederverwenden und Cache-Strategien implementieren.

Die Konfigurationen nicht duplizieren und bei jedem Build systematisch die Abhängigkeiten herunterladen.

Die CircleCI-Orbs verwenden, um wiederkehrende Aufgaben zu automatisieren.

Redundante Konfigurationen nicht manuell für jedes Projekt schreiben.

Die Pipelines sichern, indem private Umgebungsvariablen, mehrere Kontexte und administrative Kontrollen verwendet werden.

Sensible Informationen nicht in den Projektkonfigurationsdateien speichern.

Eine hohe Testabdeckung aufrechterhalten, indem Partner-Tools integriert werden (zum Beispiel Codecov, Cypress oder SonarCloud).

Code nicht ohne Tests oder ohne Überprüfung der Testabdeckung bereitstellen.

Automatisierte Benachrichtigungen mit Slack verwenden, um den Status der Pipelines zu verfolgen und schnell auf Fehler zu reagieren.

Keine Benachrichtigungen einrichten, was zu Verzögerungen bei der Erkennung von Problemen führen kann.

Beliebte Orbs wie Node, AWS-CLI und Python verwenden, um die Konfigurationen und die cloudbasierte Bereitstellung zu erleichtern.

Jedes Tool nicht manuell konfigurieren, um Fehler und Inkonsistenzen zu vermeiden.

Die Metriken der Pipelines analysieren, um Engpässe zu identifizieren und die Effizienz der Workflows zu verbessern.

Die Leistung der Pipelines überwachen, um die Bereitstellungen nicht zu verlangsamen.

Fazit

CircleCI ist eine leistungsstarke und flexible Lösung, die die Automatisierung und Optimierung von CI/CD-Prozessen ermöglicht.

DataScientest News

Melde Dich jetzt für unseren Newsletter an, um unsere Guides, Tutorials und die neuesten Entwicklungen im Bereich Data Science direkt per E-Mail zu erhalten.

Möchtest Du informiert bleiben?

Schreib uns Deine E-Mail-Adresse, damit wir Dir die neuesten Artikel zum Zeitpunkt der Veröffentlichung zusenden können!