Jenkins(1.561)が、マージリクエストWebフックによってトリガーされ、GitLab(6.7.5)に送信されたマージ(プル)リクエストをビルドするようにしたい。パラメータ化されたビルドと、Jenkinsプラグイン「GitLab Merge Request Builder」(1.2.0)および「GitLab Hook」(1.0.0)があります。Jenkins CIへの移行は、残念ながら実際の選択肢ではありません。
マージリクエストBuilderプラグインがある長い変数としてとして、マージリクエストを構築することができgitlabMergeRequestId
、gitlabTargetBranch
およびgitlabSourceBranch
利用可能です。これは、プラグインがリポジトリ自体をポーリングするとき、または手動ペイロード(例:)でビルドをトリガーするときにうまく機能しますcurl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters
が、フックでこれを行うことはできません。
GitLab Hookプラグインを使用すると、JSONペイロードで必要なデータを取得できますが、値に「間違った」キーがあります。
gitlabMergeRequestId
ですid
gitlabTargetBranch
ですtarget_branch
gitlabSourceBranch
ですsource_branch
GitLab Merge Request Builderプラグインの要件として、および変数値としてビルドパラメータを構成してみName
ましたDefault Value
。残念ながら(おそらく意図的に)、Default Value
フィールドの変数は置き換えられないため、Jenkinsはid ${id}
および同様のブランチ値を持つマージ要求を探しています。
GitLabから送信されたペイロードを構成する方法が見つからず、GitLab Hookプラグインにも、GitLab Merge Request Builderプラグインで使用されるパラメーター名にも構成オプションはありません。
Jenkinsに渡す前にPOSTからのペイロードをインターセプトして変更する小さなPHPスクリプトを書くことを検討しています。私はこれがうまくいくと確信していますが、それは間違いなく不必要に複雑に見えます。
私が見ることができる他の唯一の実際のオプションは、プラグインのソースを変更することですが、これにより、プラグインをPITAにアップグレードできます。
明らかなことを見落としたことがありますか、それとも、GitLabからJenkinsへのWebフックを使用してMerge Requestビルドをトリガーする簡単な方法はありませんか?