2016-09-08 20 views
5

プロジェクトでは保護ブランチを使用しており、ターゲットブランチとのマージのためにPRのベースブランチを最新にする必要があります。また、ターゲットブランチが変更されたときに、使用するプラグインがすべてのオープンPRを自動的に再構築するため、Jenkinsを使用してPRのアンマジドヘッドを構築しています。したがって、ターゲットブランチの最新版を公開せずにPRを開いた場合、Jenkinsのパイプラインをすぐに停止して、最初にマージする必要があることをコミッターに通知したいと考えています。ターゲットブランチでPRが最新であることを確認してください

GitHub APIを使用して、プルリクエストがターゲットブランチで最新であるかどうかを確認できます。これに最も近いのはプルリクエストの「マージ可能」属性のようですが、ブランチがすでに最新であるかどうかではなく、安全な自動マージを実行できるかどうかを示すように見えます。

見ることのできるダイレクトAPI jsonタグはありますか?もしそうでなければ、gitコマンドで手動でこれをチェックする簡単な方法はありますか?

+0

[必須ステータスチェック](https://github.com/blog/2051-protected-branches-and-required-status-checks)には、「マージ前にブランチを最新にする」オプションがあります。これはあなたの質問のAPI部分には答えませんが、それは考慮すべき有効なワークフローかもしれません。 – osowskit

答えて

5

GitHubがこの情報をAPIで公開するかどうかは分かりませんが、Gitコマンドで手動で検出できます。マージベースと呼ばれるものを探して、このコミットがmaster(またはメインブランチが何であれ)のヒントと同じであることを確認します。あなたがビルドステップとしてこのスクリプトが含まれている場合、終了値が必要な場合はジェンキンスがジョブを失敗させる必要があります

if [ $(git merge-base @ master) == $(git rev-parse master) ] 
then 
    echo "Your branch is up to date." 
    exit 0 
else 
    echo "You need to merge/rebase." 
    exit 1 
fi 

スクリプトの形で

が、それは次のようになります。

関連する問題