2017-05-04 4 views
1

Ich möchte etwas Mid-Pipeline setzen, die wartet, bis ein Web-Hook getroffen wird. Idealerweise wird meine Pipeline so etwas wie:Warte, bis ein Webhook ausgelöst wird

  1. Deploy QA
  2. Merge anfordern
  3. Deploy UAT
  4. Deploy

prod habe ich die "Merge Request" Bühne erstellen die Zusammenführungsanforderung (in GitLab). Dieser Teil ist erledigt. Ich möchte jetzt warten, bis die Zusammenführungsanforderung akzeptiert wird, bevor ich auf die nächste Stufe übergehe. Ich würde es lieben, ein Webhook zu sein.

Ich könnte einen Code schreiben, um die Anfrage abzufragen, aber ich möchte die Abfrage vermeiden, wenn ich kann.

Antwort

0

Ich komme dazu, indem ich meine Zusammenführungs-Anfrage über die GitLab API erstelle. Dann die API abfragen und darauf warten, dass der Status "zusammengeführt" wird. Ich hätte lieber einen Webhook, um die Umfrage zu vermeiden. Aber die waitUntil Funktion fügt langsam mehr Zeit zwischen Umfragen hinzu, so dass das System nicht zu sehr belastet wird.

1

Ich bin mir nicht sicher, ob es ein Plugin gibt, mit dem Sie die Jobausführung blockieren können, während Sie auf einen Webhook warten.

Ich denke, ein eher geradlinigen Ansatz wäre, um Ihre Pipeline in zwei aufgeteilt:

  • QA + Merge anfordern
  • UAT + Prod

Die zweite Pipeline konfiguriert werden kann, um zu sein ausgelöst mit der GitLab plugin for Jenkins. Wie ich es verstehe, können Sie the example in der README.md folgen, aber Ihr Auslöser sollte nur feuern, wenn ein Druck auf den Zielzweig gemacht wird, z. wenn alle Ihrer merge-Anfragen Ziel master:

triggers { 
    gitlab(triggerOnPush: true, triggerOnMergeRequest: false, branchFilterType: 'master') 
} 

Der Vorteil hierbei ist, dass Sie nicht einen Sklaven zu binden, während für die Webhook warten (was eine Weile in Abhängigkeit von der Größe der Veränderungen in der nehmen könnte Anfrage zusammenführen und wer überprüft sie).

Das einzige Problem, das dies aufwirft, ist, wenn Sie den Zustand zwischen den beiden Playbooks beibehalten müssen. Ich habe Pipelines zuvor geschrieben, die einen eindeutigen sha im Namen für verwandte Ressourcen verwenden. In Ihrem Szenario würden Sie den Zugriff auf diese Variable in der zweiten Pipeline verlieren.

+0

Dies ist eine Option, die ich in Betracht gezogen habe, ich schätze Ihre Antwort, aber dies ist eine extreme Problemumgehung, und dies ist der letzte Ausweg. Ich würde lieber den MR abfragen und dann die Pipeline in zwei Teile zerlegen. – Eddie

+0

Wenn Sie so arbeiten, würde ich gerne mehr darüber erfahren! Ich werde diesen Thread im Auge behalten, viel Glück! – nicr9

+0

Es ist getan, ich habe nicht getan, was Sie vorgeschlagen haben, lesen Sie die andere Antwort. Ich mache es ein wenig anders, Nachricht und ich werde es erklären. – Eddie

Verwandte Themen