web-dev-qa-db-ja.com

GitLab Webフックからのマージ要求のためのJenkinsビルドのトリガー

Jenkins(1.561)が、マージリクエストWebフックによってトリガーされる、GitLab(6.7.5)に送信されたマージ(プル)リクエストを構築するようにしたい。パラメータ化されたビルドと、Jenkinsプラグイン「GitLab Merge Request Builder」(1.2.0)および「GitLab Hook」(1.0.0)があります。 Jenkins CIへの移行は、残念ながら実際の選択肢ではありません。

Merge Request Builderプラグインis変数gitlabMergeRequestIdgitlabTargetBranch、およびgitlabSourceBranchが使用可能である限り、マージ要求を構築できます。これは、プラグインがリポジトリ自体をポーリングするとき、または手動のペイロード(例:curl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters)でビルドをトリガーするときにうまく機能しますが、フックでこれを行うことはできません。

GitLab Hookプラグインを使用すると、JSONペイロードで必要なデータを取得できますが、値に「間違った」キーがあります。

  • gitlabMergeRequestIdid
  • gitlabTargetBranchtarget_branchです
  • gitlabSourceBranchsource_branchです

GitLab Merge Request Builderプラグインの要件をNameとして、変数値をDefault Valueとして ビルドパラメータの設定 を試しました。残念ながら(おそらく意図的に)、Default Valueフィールドの変数はnotに置き換えられているため、JenkinsはID ${id}および同様のブランチ値を持つマージリクエストを探しています。

GitLabから送信されたペイロードを構成する方法が見つからず、GitLab Hookプラグインにも、GitLab Merge Request Builderプラグインで使用されるパラメーター名にも構成オプションはありません。

私は小さなPHPスクリプトを記述してPOSTからペイロードをインターセプトして変更する前に、それをJenkinsに渡す前に記述します。これはうまくいくと確信していますが、それは明らかに不必要に複雑に見えます。

私が見ることができる他の唯一の実際のオプションは、プラグインのソースを変更することですが、これにより、プラグインをPITAにアップグレードできます。

明らかなことを見落としたことがありますか、それとも、GitLabからJenkinsへのWebフックを使用してMerge Requestビルドをトリガーする簡単な方法はありませんか?

10
Martin Lehmann

プラグインGitlab Merge Request Builder Pluginを見てください。ManageJenkinsからJenkinsを構成し、merger request builderでgitlab urlを設定してください。 https://github.com/timols/jenkins-gitlab-mergeの指示に従ってください-request-builder-plugin1

2

これをチェックしてください 新しいプラグイン アウト(gitlab-plugin)、多分それは役に立ちます。このプラグインは、JenkinsをGitlabHQで使用するGitlabCI Webサービスとしてエミュレートします。

0
xaniasd

JenkinsのGeneric Webhook Triggerを使用できます。 Webhook JSON構造からビルドに任意の値を提供できます。

https://wiki.jenkins.io/display/JENKINS/Generic+Webhook+Trigger+Plugin

0
Tomas Bjerre