28

Jenkins Pipeline プラグイン (別名ワークフロー) を他のMultibranchプラグインで拡張して、ブランチとプル リクエストを自動的に構築できます。

複数の構成を実行するための好ましい方法は何ですか? たとえば、Java 7 と Java 8 を使用してビルドします。これは、マトリックス構成 (言語バージョン、フレームワーク バージョンなどの複数の組み合わせのため) またはビルド バリアントと呼ばれることがよくあります。

私は試した:

  • それらを別々のステップとして連続して実行しstageます。良いですが、必要以上に時間がかかります。
  • parallelそれらをステップ内で実行しnodeます。stage動作しますが、視覚化方法に関する既知の制限のために、並列内のステップを使用できません。

これを行うための推奨される方法はありますか?

4

5 に答える 5

6

Jenkins で複数の構成を実行するための推奨される方法として、Declarative Matrixをお勧めします。コードを複製することなく、すべての構成に対して定義されたステージを実行できます。

例:

pipeline {
    agent none
    stages {
        stage('Test') {
            matrix {
                agent {
                    label "${NODENAME}"
                }
                axes {
                    axis {
                        name 'NODENAME'
                        values 'java7node', 'java8node'
                    }
                }
                stages {
                    stage('Test') {
                        steps {
                            echo "Do Test for ${NODENAME}"
                        }
                    }
                }
            }
        }
    }
}

宣言型 Matrix はネイティブの宣言型パイプライン機能であるため、追加のプラグインのインストールは必要ありません。

matrix ディレクティブに関するJenkinsのブログ投稿。

于 2020-02-07T13:05:03.313 に答える
3

@StephenKing が指摘したように、Blue Ocean は現在のステージ ビューよりも並列ブランチをより適切に表示します。計画されているステージ ビューの今後のバージョンでは、すべてのブランチを表示できますが、ネスト構造を視覚的に示すことはありません (構成を連続して実行した場合と同じように見えます)。

いずれにせよ、より深刻な問題は、 JENKINS-27395および関連するリクエストの解決を保留して、基本的にビルド全体の成功/失敗ステータスのみを取得することです。

于 2016-08-25T15:25:58.903 に答える
2

複数のプラットフォームで各コミットをテストするために、次のベース Jenkinsfile スケルトンを使用しました。

def test_platform(label, with_stages = false)
{
    node(label)
    {
        // Checkout
        if (with_stages) stage label + ' Checkout'
        ...

        // Build
        if (with_stages) stage label + ' Build'
        ...

        // Tests
        if (with_stages) stage label + ' Tests'
        ...
    }
}

/*
parallel ( failFast: false,
    Windows: { test_platform("Windows") },
    Linux:   { test_platform("Linux")   },
    Mac:     { test_platform("Mac")     },
)
*/

test_platform("Windows", true)
test_platform("Mac",     true)
test_platform("Linux",   true)

これにより、逐次実行から並列実行への切り替えが比較的簡単になり、それぞれに長所と短所があります。

  • 並列実行ははるかに高速に実行されますが、ステージのラベル付けは含まれていません
  • 順次実行はかなり遅くなりますが、「Windows チェックアウト」、「Windows ビルド」、「Windows テスト」、「Mac チェックアウト」などのラベルが付いたステージのおかげで、詳細なレポートが得られます)。

より良い解決策が見つかるまで、当面は順次実行を使用しています。

于 2016-08-29T09:21:04.353 に答える
1

少なくともBlueOcean UIには安心感があるようです。これが私が得たものです(tk-*ノードは並列ステップです):

ここに画像の説明を入力

于 2016-07-19T19:44:04.577 に答える