web-dev-qa-db-ja.com

Jenkins Multibranch Pipeline:ブランチ名変数とは何ですか?

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

これが重要な理由の例を次に示します。 gitflowパターンを使用しています。アーティファクトの作成に使用される開発、リリース、およびマスターブランチがあります。 devブランチは自動デプロイされますが、他の2つはデプロイされません。また、機能、バグ修正、および修正プログラムのブランチがあります。これらのブランチはビルドする必要がありますが、アーティファクトは生成されません。これらは、コードに問題がある場合に開発者に通知するために使用する必要があります。正しい手順を実行するには、どのブランチが構築されているかを知る必要があります。

任意の助けをいただければ幸いです。

47

env.BRANCH_NAME変数にはブランチ名が含まれています。

Pipeline Groovy Plugin 2.18 の時点で、BRANCH_NAMEを使用することもできます(envは必須ではありませんが、受け入れられます)。

84

この目的専用の変数はまだありません( JENKINS-30252 )。それまでの間、サブプロジェクト名はブランチ名から取得されるという事実を利用して、

env.JOB_NAME.replaceFirst('.+/', '')

これは解決されました。 KrzysztofKrasońの答え を参照してください。

10
Jesse Glick

このstackoverflowの投稿の例は有用であることがわかりました: Jenkins WorkflowプラグインのGit変数

sh '//...
    git rev-parse --abbrev-ref HEAD > GIT_BRANCH'
    git_branch = readFile('GIT_BRANCH').trim()
    echo git_branch
    //...
   '
0
jus4kikz