2017-11-09 5 views
0

I以下の構造:ビルド

  • gitの(gitlab)リポジトリ私は2ブランチ(DEVとマスターを)持っている(詳細はありますが、私は」
  • このプロジェクトでプッシュ/マージアクションが実行されたときにウェブフックを作るconfigurated gitLab。
  • ジンキンがインストールされたポッドを持つオープンコンテナ
  • オープンシフトジンキンプロジェクトで定義された2つのパイプライン、devブランチを構築するパイプライン、およびマスターブランチを構築するパイプライン。
  • ジェンキンス2.19.3

  • gitlab 10.1
  • 3.4 openshift:pielineはGroovyで書かれた、といくつかのgit、Mavenを作り、OCは

バージョンをコマンドしています私ができること: 2つのパイプラインを開始し、2つのブランチを構築するdev/masterをプッシュします。私はプッシュ/マージイベントがdevまたはmaster上で行われたことをフィルタリングする方法を知らないので、2つのビルドを開始します。 ので、私はこれをしたい:ビルドにDBを使用して、いくつかの統合テストがあり、パイプラインが同時に起動した場合は、その後、彼らはテスト-DB

  • にいくつかの災害を作成し、理由がない

    • 2つのパイプラインは、それらが表すブランチが関与していないときに開始されます。正しいブランチを持つパイプラインだけを開始する必要があります。

    これを解決するには2つの方法があります。 Gitlabでは、定義されたブランチ上でWebhookイベントを駆動する可能性はありません。 (またはそこにあり、私はどのようにわからない?) パイプライン上で私は魔女の枝をチェックするいくつかのコードを書くことができた/プッシュをマージされています。しかし、私はこのチェックをどのように正確に行うのか分かりません。

    他にもオプションがありますか? 可能であれば、私はワークフローを変更したくないですが、私は良いアイデアを聞くために開いています。

    関連情報が不明な場合は、私にお尋ねください。コンテキストが非常に大きいので、私はコードを公開していません。主に、正しい解決策や解決方法が必要です。

  • 答えて

    0

    私は自分で道を見つけました。

    私はそれがエレガントではないと思うが、現時点では私の問題を解決します。よりよい解決策がある場合は、私はに開いている

    def lastMerge = sh(returnStdout: true, script: 'git show :/^Merge --pretty=format:"%H"').trim() 
    def hash = sh(returnStdout: true, script: 'git log -1 origin/master --pretty=format:"%H"').trim() 
    if(lastMerge==hash){ 
        doTheJob() 
    } 
    

    私が行うすべては、パイプラインでのgitで最後のマージのハッシュとこのように枝の最後のハッシュをチェックすることですそれを聞きます。