web-dev-qa-db-ja.com

Jenkinsワークフロージョブ:パラメーターをブランチ指定子として使用する

ブランチ名をビルドパラメーターとして使用する古いフリースタイルの開発ビルドをワークフロービルドに移行したいと思います。これは今のところ問題なく機能しますが、実際に欠けているのは、パラメータを使用する機能だけです。 SCMからのワークフロースクリプトセクションのブランチ指定子としての「branch_name」。フリースタイルのビルドでは、これは正常に機能します。これをどのように達成できるかについてのアイデアはありますか?ビルドを開始する前に、開発者が常に構成を変更することは望ましくありません。

11
MBeck

JENKINS-28447 のように聞こえます:

Worflowジョブで[GroovyCPS DSL from SCM]オプションを選択すると、SCMプラグインがビルドパラメーターまたは環境変数を解決するように表示されません。 gitプラグインを使用していますが、他のジョブから使用する場合は、「BuildBranch」などのビルドパラメーターを指定し、ビルドするブランチを指定するときに使用できます。

回避策は、チュートリアルで説明されているように、チェックアウト後にloadを呼び出すインラインbootstrapスクリプトを使用することです。

2
Jesse Glick

「軽量チェックアウト」チェックボックスを無効にしてみてください。

Lightweight checkout screenshot

JENKINS-28447 の最新のコメントで

32

または、マルチブランチワークフロープロジェクトを作成してさらに進んで、各ブランチが独自の履歴で自動的に構築されるようにします。

0
Jesse Glick

ここで説明するワークフローDSLスクリプトがあります: https://groups.google.com/forum/#!msg/jenkinsci-users/jSKwSKbaXq8/dG2mn6iyDQAJ

そのスクリプトには、ワークフローに渡されるFREEBSD_SRC_URLというビルドパラメーターがあります。そのURLのさまざまなパラメータに基づいて、さまざまなブランチをチェックアウトできます。

Gitを使用している場合でも、ビルドパラメーターをスクリプトに渡すために同じ手法を使用できますが、少し異なる方法で行う必要があります。たとえば、ジョブでパラメータBRANCH_NAMEを定義し、ワークフロースクリプトで次のようなことを行うことができます。

String checkout_url = "https://github.com/jenkinsci/jenkins"
String branch_name = "master"

if (getBinding().hasVariable("CHECKOUT_URL")) {
    // override default URL from build parameter
    checkout_url = CHECKOUT_URL
}
if (getBinding().hasVariable("BRANCH_NAME")) {
    // override default branch from build parameter
    branch_name = BRANCH_NAME
}

node {
    // Do the git checkout
    git branch: "${branch_name}", url: "${checkout_url}"
}
0
Craig Rodrigues