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変数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
フィールドの変数はnotに置き換えられているため、JenkinsはID ${id}
および同様のブランチ値を持つマージリクエストを探しています。
GitLabから送信されたペイロードを構成する方法が見つからず、GitLab Hookプラグインにも、GitLab Merge Request Builderプラグインで使用されるパラメーター名にも構成オプションはありません。
私は小さなPHPスクリプトを記述してPOSTからペイロードをインターセプトして変更する前に、それをJenkinsに渡す前に記述します。これはうまくいくと確信していますが、それは明らかに不必要に複雑に見えます。
私が見ることができる他の唯一の実際のオプションは、プラグインのソースを変更することですが、これにより、プラグインをPITAにアップグレードできます。
明らかなことを見落としたことがありますか、それとも、GitLabからJenkinsへのWebフックを使用してMerge Requestビルドをトリガーする簡単な方法はありませんか?
プラグインGitlab Merge Request Builder Pluginを見てください。ManageJenkinsからJenkinsを構成し、merger request builderでgitlab urlを設定してください。 https://github.com/timols/jenkins-gitlab-mergeの指示に従ってください-request-builder-plugin1
これをチェックしてください 新しいプラグイン アウト(gitlab-plugin)、多分それは役に立ちます。このプラグインは、JenkinsをGitlabHQで使用するGitlabCI Webサービスとしてエミュレートします。
JenkinsのGeneric Webhook Triggerを使用できます。 Webhook JSON構造からビルドに任意の値を提供できます。
https://wiki.jenkins.io/display/JENKINS/Generic+Webhook+Trigger+Plugin