2016-11-24 37 views
5

私はJenkinsジョブを手動構成からDSLに変換しています。つまり、現在のジョブを作成するDSLスクリプトを作成しようとしています。 。Jenkins DSLを使用して「アーティファクトをコピーするためのビルドセレクタ」を追加

ジョブは現在パラメータ化されており、パラメータの1つが「アーティファクトのコピー作成のためのビルドセレクタ」タイプです。ジョブXMLで、それがcopyartifactプラグインであり、具体的にはBuildSelectorParameterを使用する必要があることがわかります。

しかし、Jenkins DSL APIは、このプラグインを使用してパラメータを設定する手引きがありません。必要なものではないビルドステップを作成するために役立ちます。

また、APIのパラメータオプションではこれと関連するものが見つかりません。

DSLシードスクリプトに何かを含めると、生成されたジョブで画像に一致するパラメータが作成されます。

parameter

私はのconfigureブロックを使用する必要がある場合は、初心者のために、この上のドキュメントはかなり役に立たないので、その上の任意のヒントはに歓迎されるであろう。

答えて

3

ビルドセレクタパラメータを設定するのにconfigureブロックを使用する方法は他にありません。これは私がそれを設定するために使用するものである:

freeStyleJob { 
    ... 
    configure { project -> 
     def paramDefs = project/'properties'/'hudson.model.ParametersDefinitionProperty'/'parameterDefinitions' 
     paramDefs << 'hudson.plugins.copyartifact.BuildSelectorParameter'(plugin: "[email protected]") { 
      name('BUILD_SELECTOR') 
      description('The build number to deploy') 
      defaultSelector(class: 'hudson.plugins.copyartifact.SpecificBuildSelector') { 
       buildNumber() 
      } 
     } 
    } 
} 

はそれを達成するために、私は手動でビルドセレクタパラメータでジョブを作成しました。そして、私の場合には、関連する部分を見てジェンキンスの下で、ジョブのXML設定を探しました:

<project> 
    ... 
    <properties> 
     <hudson.model.ParametersDefinitionProperty> 
      <parameterDefinitions> 
       ... 
       <hudson.plugins.copyartifact.BuildSelectorParameter plugin="[email protected]" 
        <name>BUILD_SELECTOR</name> 
        <description></description> 
        <defaultSelector class="hudson.plugins.copyartifact.SpecificBuildSelector"> 
         <buildNumber></buildNumber> 
        </defaultSelector> 
       </hudson.plugins.copyartifact.BuildSelectorParameter> 
      </parameterDefinitions> 
     </hudson.model.ParametersDefinitionProperty> 
    </properties> 
    ... 
</project> 

あなたは次のことを理解しておく必要がありconfigure句使用していることを複製するには:

  • をconfigure句の最初の引数はjobノードです。
  • /演算子を使用すると、指定されたノードを持つノードの子が返されます(存在しない場合)。
  • <<演算子を使用すると、右側のオペランドに指定されたノードが左側のオペランドに追加されます。ノードを作成するときに、コンストラクタ内の属性を次のように指定できます。myNodeName(attrributeName: 'attributeValue')
  • 新しいノードにラムダを渡して内部構造を設定できます。
+0

job('my-job'){ steps{ copyArtifacts('job-id') { includePatterns('artifact-name') buildSelector { latestSuccessful(true) } } } } 

完全な例configureブロックがどのように機能するかをゆっくりと研究しましたが、この答えは、どうやって一緒になるのかということをよりよく理解することができます。 – shaneoh

0

私は(コピーアーティファクトプラグイン付き)ジェンキンスバージョン1.6を持っていて、このようにDSLでそれを行うことができます:私はしました。この質問をしているので

job('03-create-hive-table'){ 
    steps{ 
     copyArtifacts('seed-job-stash') { 
      includePatterns('jenkins-jobs/scripts/landing/hive/landing-table.sql') 
      buildSelector { latestSuccessful(true) } 
     } 
     copyArtifacts('02-prepare-landing-dir') { 
      includePatterns('jenkins-jobs/scripts/landing/shell/02-prepare-landing-dir.properties') 
      buildSelector { latestSuccessful(true) } 
     } 
     shell(readFileFromWorkspace('jenkins-jobs/scripts/landing/03-ps-create-hive-table.sh')) 
    } 
    wrappers { 
     environmentVariables { 
      env('QUEUE', 'default') 
      env('DB_NAME', 'table_name') 
      env('VERSION', '20161215') 
     } 
     credentialsBinding { file('KEYTAB', 'mycred') } 
    } 
    publishers{ archiveArtifacts('03-create-landing-hive-table.properties') } 
} 
+0

これをパラメータとして追加しますか?ビルドのステップとしてアーティファクトをコピーするには? – shaneoh

+0

私はそれをビルドステップとして持っています。たとえば、私の仕事全体がこのように見えます(答えて編集) – Babu

+0

OK - あなたの例を見ても、ビルドのパラメータをどのように作成しているのか分かりません。代わりにコピーアーティファクトビルドステップを作成しているようです。 – shaneoh

関連する問題