Accéder à des fichiers sur un nœud esclave de Jenkins maître à l'aide de Groovy

Je suis en utilisant le Jenkins Construire des Flux de plugin pour atteindre la parallélisation. Le Groovy DSL n'certaines opérations sur les fichiers. Même si l'option Restrict where this project can be run est configuré pour exécuter le travail sur un esclave, le DSL fonctionne sur le master. Ce n'est pas prévu.

Quelqu'un pourrait-il me dire comment je peux limiter le DSL à exécuter à l'esclave? Même si il ya une façon que nous pouvons accéder à l'esclave système de fichiers via le DSL, cela devrait fonctionner.

En général, comment peut-on accéder à des fichiers sur un nœud esclave de Jenkins maître à l'aide Groovy?

def fp = new hudson.FilePath(build.workspace.channel, "/srv/jenkins/workspace/myworkspace_on_slave_node")
assert fp.exists()      //returns true :)

def ant = new AntBuilder()

if (fp != null) {
  def scanner = ant.fileScanner {    //fails here :(, says /srv/jenkins/workspace/myworkspace_on_slave_node not found
    //grab ALL files requested to be run
    fileset(dir: "$fp", includes: "**/*.java")
  }

  //now lets iterate over - print - and count test files
  int numFiles = 0
  for (f in scanner) {
    println("Found file $f")    
    numFiles++
  }
  println("Total files $numFiles")
}

L'espace de travail est-il sur le nœud esclave, mais le code ci-dessus est un échec quand je suis en essayant d'ouvrir le FileSet pour le Chemin d'accès à distance.

OriginalL'auteur naspras | 2015-08-03