paint-brush
Bringen Sie Ihre DevOps mit Git Hooks auf Tourenvon@infinity
2,996 Lesungen
2,996 Lesungen

Bringen Sie Ihre DevOps mit Git Hooks auf Touren

von Rishabh Agarwal4m2023/09/07
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

DevOps ist zu einem integralen Bestandteil in der Welt der Softwareentwicklung für Unternehmen geworden, die ihre Entwicklungs- und Bereitstellungsprozesse vereinfachen möchten. Unter den verschiedenen verfügbaren DevOps-Technologien gibt es eine, die manchmal vernachlässigt wird, aber dennoch wirklich effektiv ist. Diese lebenswichtige Technologie ist nichts anderes als „Git Hooks“.
featured image - Bringen Sie Ihre DevOps mit Git Hooks auf Touren
Rishabh Agarwal HackerNoon profile picture

DevOps ist zu einem integralen Bestandteil in der Welt der Softwareentwicklung für Unternehmen geworden, die ihre Entwicklungs- und Bereitstellungsprozesse vereinfachen möchten. Unter den verschiedenen verfügbaren DevOps-Technologien gibt es eine, die manchmal vernachlässigt wird, aber dennoch wirklich effektiv ist.


Diese lebenswichtige Technologie ist nichts anderes als „ Git Hooks“ .


Git Hooks sind großartige Tools zum Automatisieren von Aufgaben, Durchsetzen von Codierungsstandards, Durchführen kontinuierlicher Bereitstellungen und Ausführen von Tests.


Lassen Sie uns sehen, wie wir Git Hooks nutzen können, um unsere DevOps-Praktiken zu revolutionieren!

Das Wichtigste zuerst: Was sind Hooks?

Schauen wir uns zunächst die offizielle Definition an:


Hooks sind Programme, die Sie in einem Hooks-Verzeichnis platzieren können, um an bestimmten Punkten der Git-Ausführung Aktionen auszulösen.


Zum Glück ist das eine wirklich einfache Definition!


Versuchen wir, einige der Fragen zu beantworten, die Leser möglicherweise zur Definition haben.


F) Was ist ein Hooks-Verzeichnis? Wo befindet es sich?

Ein Hooks-Verzeichnis ist ein Verzeichnis in einem Git-Repository, das ausführbare Programme oder Hooks enthält, die Git ausführt. Standardmäßig ist das Hooks-Verzeichnis $GIT_DIR/hooks . Benutzer können es auch mithilfe der Konfigurationsvariablen core.hooksPath konfigurieren.


F) Was sind die Ausführungspunkte von Git?

Git-Ausführungspunkte sind Schritte im Git-Workflow, an denen Hooks ausgeführt werden können. Pre-Commit, Post-Commit, Pre-Push, Post-Receive, Pre-Rebase und Post-Merge sind einige Beispiele für Git-Ausführungspunkte.


Um diesen Abschnitt zusammenzufassen, können wir die folgende Definition für Git-Hooks haben:


Git führt Skripte aus, die als „Hooks“ bekannt sind, vor oder nach bestimmten Vorgängen wie dem Festschreiben, Übertragen oder Zusammenführen von Code. Sie ermöglichen Ihnen, Aufgaben zu automatisieren, Richtlinien durchzusetzen und während des Entwicklungsprozesses mit der Codebasis zu interagieren. Git-Hooks werden im Verzeichnis .git/hooks Ihres Git-Repositorys gespeichert

Erstellen unserer allerersten Git-Hooks!

Versuchen wir, einen einfachen Git-Hook zu erstellen, der den regulären Ausdruck „TASK*“ in jede Commit-Nachricht einfügt.


Erstellen Sie ein neues Verzeichnis git_hooks_tut und initialisieren Sie darin ein neues Git-Repository.


 ~/projects$ mkdir git_hooks_tut ~/projects$ cd git_hooks_tut ~/projects/git_hooks_tut$ git init Initialized empty Git repository


Gehen wir in das Hooks-Verzeichnis und untersuchen dessen Inhalt.


 ~/projects/git_hooks_tut$ cd .git/hooks ~/projects/git_hooks_tut/.git/hooks$ ls applypatch-msg.sample pre-applypatch.sample pre-push.sample commit-msg.sample pre-commit.sample pre-rebase.sample fsmonitor-watchman.sample pre-merge-commit.sample pre-receive.sample post-update.sample prepare-commit-msg.sample update.sample


Das Hooks-Verzeichnis enthält einige Beispielskripte. Die Erweiterung .sample verhindert standardmäßig die Ausführung. Um einen Hook zu „installieren“, müssen Sie lediglich die Erweiterung .sample entfernen.


Wenn Sie mit einem neuen Skript ganz von vorn beginnen, können Sie auch einfach eine neue Datei mit einem Namen hinzufügen, der einem der oben aufgeführten Dateinamen entspricht, jedoch ohne die Erweiterung .sample .


Für unseren Anwendungsfall benötigen wir einen Commit-Msg-Hook. Fahren Sie fort und erstellen Sie ein neues Skript mit dem Namen commit-msg .


 ~/projects/git_hooks_tut/.git/hooks$ touch commit-msg


Fügen wir dem Commit-Msg-Skript die Logik hinzu, um unser commit-msg Nachrichtenmuster sicherzustellen.


 #!/bin/sh commit_msg_file=$1 commit_msg=$(cat "$commit_msg_file") # Check if the commit message starts with "TASK" if ! echo "$commit_msg" | grep -q "^TASK"; then echo "Commit message must start with 'TASK'" exit 1 fi


Machen Sie abschließend das commit-msg Skript ausführbar. Nicht ausführbare Skripte werden von Git übersprungen, selbst wenn sie im Hooks-Verzeichnis vorhanden sind.


 ~/projects/git_hooks_tut/.git/hooks$ chmod +x commit-msg


Und mit diesem Setup sind unsere Haken komplett! Lassen Sie es uns jetzt testen.


Wir werden nun eine neue Datei erstellen und versuchen, sie festzuschreiben; Zuerst mit einem ungültigen Nachrichtenformat und dann mit einem gültigen Nachrichtenformat.


 ~/projects/git_hooks_tut/.git/hooks$ cd ../.. ~/projects/git_hooks_tut$ touch README ~/projects/git_hooks_tut$ ls README ~/projects/git_hooks_tut$ git add README ~/projects/git_hooks_tut$ git commit -m "Added Readme File" Commit message must start with 'TASK' ~/projects/git_hooks_tut$ git commit -m "TASK-0000: Added Readme File" [master (root-commit) 7f3648a] TASK-000: Added Readme File


Es läuft bestens!

Welche verschiedenen Arten von Haken gibt es?

Mit Git können wir Hooks für eine Reihe von Ausführungspunkten erstellen. Einige davon sind wie folgt:


  1. Pre-Commit-Hook: Dieser Hook wird ausgeführt, bevor ein Commit erstellt wird. Es ermöglicht uns, die vorgenommenen Änderungen zu validieren.


  2. Pre-Receive-Hook: Der Pre-Receive-Hook wird im Remote-Repository ausgeführt, bevor Referenzen geändert werden, sodass Sie benutzerdefinierte Regeln oder Richtlinien anwenden können.


  3. Post-Receive-Hook: Dieser Hook wird nach der Aktualisierung der Referenzen auch im Remote-Repository ausgeführt. Es kann zum Versenden von Benachrichtigungen und/oder zum Ausführen zusätzlicher Aufgaben verwendet werden.


  4. Pre-Push-Hook: Dieser Hook wird ausgeführt, bevor ein Push ausgeführt wird. Dies kann verwendet werden, um bestimmte Richtlinien durchzusetzen, die davon abhalten, bestimmte Arten von Commits zu pushen.


  5. Prepare-Commit-Msg-Hook: Der Prepare-Commit-Msg-Hook wird ausgeführt, nachdem eine Commit-Nachricht erstellt wurde, sodass Sie die Commit-Nachricht ändern oder erweitern können.


Es gibt verschiedene andere Hooks, um Git besser anzupassen. Sie finden sie in den Git-Dokumenten .


Git-Hooks sind, wenn sie richtig eingesetzt werden, ein Werkzeug mit großem Potenzial! Wir Entwickler untergraben oft die Stärke solcher Tools, die viele komplexe Aufgaben lösen könnten.


Der Einsatz von Git Hooks verbessert DevOps auf jeder Ebene und könnte eine großartige Möglichkeit für Unternehmen sein, die DevOps in ihre Entwicklungszyklen integrieren möchten.


Herzlichen Glückwunsch, dass Sie es so weit geschafft haben! Ich hoffe, Sie haben heute etwas Neues gelernt.