JenkinsでGitマージドライバを使用する方法

JenkinsでGitマージドライバを使用する方法

私は最近、Gitマージドライバを使用してpom.xml-sを自動的にマージする方法を探していました。ローカルで動作しますが、Jenkinsにこのソリューションを追加したいと思います。これまでは運がありません。

私がしたこと:

1) /root/.gitconfig に次の行を追加しました。

[merge "pommerge"]
    name = A custom merge driver for Maven's pom.xml
    driver = /usr/bin/mergepom.py %O %A %B

2) 同じディレクトリに .gitattributes ファイルを作成し、次の行を追加します。

pom.xml merge=pommerge

3) mergepom.py を /usr/bin に移動します。

答え1

まず、次の説明に従ってドライバセクションへの絶対パスを使用する必要があります。https://github.com/ralfth/pom-merge-driver(私はあなたが使用しているものまたはそのフォークのいずれかを推測しています。) -/usr/bin/mergepom.py %O %A %Bあなたの場合はドライバーです。

次に、システム全体のgit属性ファイルはおそらく$ HOME/.config/git/attributesになければなりません。https://stackoverflow.com/a/28027656

3番目はもう少し哲学的な点です。 Jenkinsを使用してファイルを自動的にマージすることは、通常、ユーザーがマージを実行し、Jenkinsがマージを評価するようにワークフローを変更することを考慮に入れることができます。 Jenkinsジョブがマージを実行するのはなぜですか(リリースブランチをマスターブランチに自動的にマージ)?ユーザーはこれを行うことができますか、それを行う必要がありますか?

答え2

はい、場所はすでに/usr/bin/mergepom.py%O%A%Bです。ローカル環境から元のパスをコピーしました。

確認してみると $HOME/.config の下には何もありません。しかし、/usr/share/git-core/contrib/hooksでいくつかのフックが見つかりました。いつかこれをテストします。

マージの競合は依然として手動で解決する必要がありますが、直接マージがある場合、Jenkinsはpom.xml-sを手動で確認するのにかかる自動マージにかかる時間を大幅に短縮します。私が作業しているプロジェクトには約75個のpom.xml-sがあります。

関連情報