81

Jenkins マルチブランチ パイプラインでステップを正しく実行するには、どのブランチが構築されているかを知る必要があります。

devアーティファクトの作成に使用される、release、およびブランチを含む gitflow パターンをmaster使用しています。ブランチは自動デプロイされますが、他の 2 つのdevブランチは自動デプロイされません。またfeature、 、 、bugfixおよびhotfixブランチがあります。これらのブランチはビルドする必要がありますが、アーティファクトを生成しないでください。コードに問題がある場合に開発者に通知するためにのみ使用する必要があります。

標準ビルドでは、どのブランチがビルドされているかを知るために変数にアクセスできます$GIT_BRANCHが、その変数はマルチブランチ パイプラインに設定されていません。私も試してみましたが、パラメーターとしてビルドenv.GIT_BRANCHに渡そうとしました。$GIT_BRANCH何も機能していないようです。ビルドはビルドされているブランチを認識しているため (コンソール出力の上部にブランチ名が表示されます)、使用できるものがあると想定しました-それへの参照が見つかりません。

4

6 に答える 6

4

Jenkins マルチブランチ パイプライン ジョブでは、次の 2 つのブランチを考慮する必要があります。

  1. Jenkins ジョブ ブランチ - env.BRANCH_NAME. これは git ブランチと同じ名前の場合がありますが、PR-123 などと呼ばれることもあります。
  2. git ブランチ - env.GIT_BRANCH. これは git の実際のブランチ名です。

したがって、ジョブには BRANCH_NAME=PR-123 および GIT_BRANCH=my-scm-branch-name が含まれる場合があります

于 2020-06-05T10:59:12.870 に答える
1

もう 1 つの方法は、gitコマンドを使用して現在のジェンキンス パイプラインのブランチ名を取得することです。たとえば、次のスニペットを追加して、Jenkinsfile.

...
script {
    def BRANCH = sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
    echo ${BRANCH}
}
...
于 2019-12-27T21:27:12.387 に答える
0

このstackoverflow投稿の例が役立つことがわかりました:JenkinsワークフロープラグインのGit変数

sh '//...
    git rev-parse --abbrev-ref HEAD > GIT_BRANCH'
    git_branch = readFile('GIT_BRANCH').trim()
    echo git_branch
    //...
   '
于 2016-05-07T03:08:44.277 に答える