2017-01-12 6 views
0

特定のディレクトリのサブフォルダをループして何かを起動するパイプラインジェンキンジョブを作成しようとしています。問題は、ファイルシステムにアクセスすることです。なんらかの理由で、ファイルシステムを全く読み取っていないように見えます。jenkinsパイプラインでサブフォルダを読み取る方法

これは私が当然のフォルダがサーバー上に存在しているが、実行は常に第2のエコーを返す。

node ('label') { 
    workspacePath = '/opt/installersWS' 
    ws(workspacePath){ 
     stage ("test"){ 
      ...some stuff... 
      runtimeBuildDir = new File(workspacePath + "/components") 
      echo runtimeBuildDir.getPath() 
      if (runtimeBuildDir.exists()){ 
       echo "search for subfolders" 
      } else { 
       echo "main folder not existing" 
      } 

     } 
    } 
} 

を使用していスニペットです

更新: このように与えられたすべてのgradle/java命令は、ノードを対象としておらず、マスター上で実行されていることがわかりました。これがディレクトリを見つけられなかった理由です。だから私はパイプラインがどのように機能しているか完全に誤解していた。

私はそれをどのように取得することができますか?例えば、シェルステップからgradleプロパティを設定する方法はありますか?

おかげで、

答えて

0

ミケーレこれは、私はそれを解決方法は、私は、ディレクトリの名前のリストをcicleして操作することができましたそして、出力

def subfolders = sh(returnStdout: true, script: 'ls -d RuntimeBuild/*').trim().split(System.getProperty("line.separator")) 

を返されたシェルを実行している、ありますそれら。

1

以下、私の問題を解決しました。それは同じものを探している人を助けることができます。 以下のようにパイプラインでディレクトリのリストを返す関数を使用して、リストにサブフォルダを追加することができます。

@NonCPS 
def readDir() 
{ 
    def dirsl = [] 
    new File("${workspace}").eachDir() 
    { 
     dirs -> println dirs.getName() 
     if (!dirs.getName().startsWith('.')) { 
      dirsl.add(dirs.getName()) 
     } 
    } 
    dirsl 
} 

パイプラインスクリプトでは、以下のような関数を呼び出して必要な処理を行います。

stage ('Build'){ 

    dirsl = readDir() 
    def size = dirsl.size() 
    print size 
    for (int i = 0; i < size; i++) { 
     "Do whatever appropriate" 
    } 
} 
関連する問題