2016-06-21 16 views
1

Ich habe ein Projekt, wo Ich mag würde Gitlab CI verwenden, um die folgenden zu automatisieren:Wie überprüft man, ob alle Commits mit GitLab CI kompiliert werden?

  1. Bestätigen Sie, dass übergibt die Tests am Kopf jedes geschoben Zweiges begehen.
  2. Bestätigen Sie, dass jedes Commit innerhalb eines Pushed-Feature-Zweiges ordnungsgemäß kompiliert wird.

Bisher habe ich gelöst 1 durch einen einfachen Job my_test_job, die erfolgreich läuft meine Tests auf jedem Zweig Drück mvn verify genannt zu schaffen.

Wie kann ich 2 lösen? Der Befehl zum Erstellen des Projekts lautet mvn package, aber ich weiß nicht, wie dies bei jedem Commit eines Push-Zweigs ausgeführt werden soll.

Meine aktuelle Gitlab-ci.yml Datei:

image: maven:3.3.3-jdk-8 

stages: 
    - test 

my_test_job: 
    script: mvn verify 

tl; dr - ich würde Gitlab CI gerne bestätigen, dass jeder innerhalb eines gedrückten Funktionszweiges ohne Fehler kompiliert begehen.

Danke!

Antwort

1

nur so ein Gedanke, den ich nicht persönlich versucht:

Sie können ein Shell-Skript durch Gitlab-ci.yml laufen denen nimm den Zweig auf, überprüfe sein Git Protokoll und eins nach dem anderen prüfe jedes Commit und überprüfe ob es kompiliert wird.

+0

Danke! Wenn ich Sie richtig verstehe, würde dies bedeuten, dass jeder gedrückte Zweig durchläuft und die * gesamte * Historie erstellt, einschließlich der Commits, die bereits in der Vergangenheit erstellt wurden. Ich denke, das wird technisch funktionieren, aber es würde sehr schlecht skalieren, wenn das Repository größer wird. Es würde auch bedeuten, dass die Commits-Seite nicht den Build-Status für die einzelnen Commits anzeigen würde. – disposableme

+0

Ja. Es ist eine Art Hack. Übrigens ist es möglich, nur für einen bestimmten Zweig spezifische Commits zu erhalten. Siehe http://stackoverflow.com/questions/5720343/using-git-show-all-commits-that-exist-only-on-one-specific-branch-and-not-a –