Automatisieren Sie den Workflow in der Shell

7

Ich komme von GUI-Schnittstellen und habe endlich verstanden, wie wichtig es ist, alles in Textform zu integrieren, aber ich weiß noch nicht genau, wie ich diese Leistung nutzen soll.

Ich habe festgestellt, dass der Workflow für ein bestimmtes Projekt folgendermaßen abläuft ...

# compile repo 1
cd ~/workspace/repo1
make -B
# deploys compiled code into repo2
make deploy

# commit repo 1
cd ~/workspace/repo1
git add .
git commit -m "changes"
git push origin master

# commit repo 2
cd ~/workspace/repo2
git add .
git commit -m "changes"
git push origin master

Meine Frage ist nicht so sehr, wie man das erreicht, sondern was ist das richtige Werkzeug dafür? Es scheint, dass ich ein Bash-Skript brauche, aber ich würde es gerne von den Experten wissen.

Methode der Aktion
quelle

Antworten:

8

Sie haben einen sehr guten Anfang, wenn Sie alles an einem Ort eingeben.

Kopieren Sie all das in eine Textdatei (z. B. workflow.shaber der Name spielt keine Rolle) und setzen Sie dies in die allererste Zeile der Datei :

#!/bin/sh

Sie haben jetzt ein Shell-Skript. Machen Sie es ausführbar:

chmod +x workflow.sh

Jetzt können Sie es wie einen Befehl ausführen:

./workflow.sh

Jeder dieser Befehle wird der Reihe nach ausgeführt, indem nur der Workflow aufgerufen wird.

Sie sind jetzt ein Systemprogrammierer für Anfänger. Sie können nur von dort hochgehen.

Aktualisieren

So geben Sie Änderungen an, ohne das Skript jedes Mal bearbeiten zu müssen, wenn Sie Änderungen vornehmen sollten:

git commit -m "changes"

Lesen:

git commit -m "$1"

Sie können dann Änderungen als Befehlszeilenargument übergeben:

./workflow "Describe changes made"

Ein weiteres nützliches Werkzeug sind Aliase und PATH. Sie können beispielsweise ein spezielles Verzeichnis erstellen ~/binund alle Skripte dort ablegen, dieses Verzeichnis zu Ihrer PATHVariablen hinzufügen und müssen nicht jedes Mal, wenn Sie es starten möchten, den vollständigen Pfad zum Skript eingeben. Bei Aliasen müssen Sie für jedes Skript einen Alias ​​erstellen. Manchmal ist der Alias ​​jedoch komfortabler, da Sie darin verschiedene Ausführungsparameter angeben können.

Bahamat
quelle
Vielen Dank! Würde das Skript nicht mehr ausgeführt, wenn es einen Fehler erhalten würde, z. B. lehnt git meine Änderungen ab, weil ich noch nicht gezogen habe?
Methodofaction
Nein, es würde nur das nächste auf der Liste tun (als ob Sie es blind in das Terminal eingegeben hätten). Was Sie fragen, heißt Flusskontrolle . Zu lernen, wie das geht, ist Ihr nächster Schritt, aber es ist ein größeres Thema, als ich hier schreiben kann. Versuchen Sie eine Google-Suche .
Bahamat
6
@Duopixel setzt die set -enächste Zeile nach She -Bang und das Skript wird nicht fortgesetzt, wenn ein Fehler auftritt.
Eile
1

Sie können Ihren Code mit Python-Utils organisieren: https://wiki.python.org/moin/FlowBasedProgramming

Ein weiteres Paket, das oben nicht erwähnt wurde, aber immer noch vielversprechend ist, ist Snakemake.

rudaoshi
quelle