Ein Mitarbeiter und ich sind auf ein Problem gestoßen, zu dem wir mehrere Meinungen haben.
Derzeit haben wir ein Git-Repository, in dem wir alle unsere Cronjobs aufbewahren. Es gibt ungefähr 20 Cron und sie hängen nicht wirklich zusammen, außer dass es sich um kleine Python-Skripte handelt, die für einige Aktivitäten unerlässlich sind. Wir verwenden eine fabric.py
Datei zum Bereitstellen und eine requirements.txt
Datei zum Verwalten der Anforderungen für alle Skripts.
Grundsätzlich geht es darum, ob wir alle diese Skripte in einem einzigen Git-Repository aufbewahren oder ob wir sie in ihre eigenen Repositorys aufteilen sollen. Indem Sie sie in einem Repository aufbewahren, ist es einfacher, sie auf einem Server bereitzustellen. Wir können nur eine Cron-Datei für alle Skripte verwenden.
Dies fühlt sich jedoch falsch an, da die 20 Cronjobs nicht logisch miteinander verbunden sind. Wenn Sie eine requirements.txt
Datei für alle Skripte verwenden, ist es außerdem schwierig, die Abhängigkeiten für ein bestimmtes Skript zu ermitteln, und alle müssen dieselben Paketversionen verwenden.
Wir könnten alle Skripte in ihre eigenen Repositorys aufteilen, aber dies schafft 20 verschiedene Repositorys, an die man sich erinnern und mit denen man sich befassen muss. Die meisten dieser Skripte sind nicht sehr umfangreich und diese Lösung scheint übertrieben zu sein.
Eine verwandte Frage ist, ob wir für alle Cronjobs eine große Crontab-Datei oder für jede eine separate Datei verwenden. Wie vermeidet es eine crontab-Installation, die andere zu überschreiben, wenn jede eine eigene Installation hat? Dies scheint auch ein Schmerz zu sein, da dann 20 verschiedene Cron-Dateien nachverfolgt werden müssten.
Kurz gesagt, unsere Hauptfrage und -frage ist, ob wir sie alle eng als ein Repository zusammenfassen oder ob wir sie mit ihren eigenen requirements.txt und fabfile.py in ein eigenes Repository aufteilen. Wir haben das Gefühl, dass wir wahrscheinlich auch über eine wirklich einfache Lösung nachdenken. Gibt es einen einfacheren Weg, um mit diesem Problem umzugehen?