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
Vous devez vous connecter pour publier un commentaire.
Le Groovy DSL est toujours exécuté sur le master (en matous répertoire). Même si vous installez Étiquette du Nœud de Paramètre plugin et de l'ensemble de travail à être exécuté sur certains specyfic esclave. Si vous souhaitez accéder à partir de Groovy DSL de travail espace de travail sur l'esclave, vous pouvez utiliser le canal. Theres mon exemple de la création d'un fichier de créer des flux de travail espace de travail:
Moyen le plus facile est d'exécuter le fichier opérations en aval des emplois dans Execute script Groovy (pas dans l'accumulation de flux de travail) en cours d'exécution sur specyfic esclave. Vous devez avoir nœud plugin installé et passe nom d'esclave comme un paramètre dans le DSL de script:
construire("jobA", paramNode: "nodename")
Aussi, depuis le type de projet est de construire des flux, je crois que je ne peux pas utiliser le Script Groovy plugin. Il nécessite l'Jenkins projet de style libre.
En fait j'ai eu le mien de travail s'étendant sur celui-ci. Merci @jussuper.
Cette méthode a fonctionné pour moi aussi. Je voulais chercher un peu de contenu à partir d'un fichier généré par la compilation et l'analyse.
À l'aide de l'extrait de code mentionné dit "Aucun de ces biens: construire pour la classe'. Comment vais-je faire de cette construction de la variable connue?
OriginalL'auteur jussuper
La Flux De Travail Plugin "inspiré à l'Origine par le Construire Des Flux De Plugin" a la section suivante,son tutoriel:
La question suivante dans la génération de Flux de Plugin de commentaires est sans réponse depuis Jan 27, 2014:
Puisque vous écrivez que Limiter les endroits où ce projet peut être exécuté n'est pas pris en compte, il semble qu'il ne peut pas être fait. (Je ne l'ai pas essayé moi-même de vérifier. Je n'ai pas d'esclaves, ici, dans ma configuration.)
OriginalL'auteur Gerold Broser
Installer NodeLabel paramètre plugin. Il Fournit une option de paramètre Étiquette.
Alors vous pouvez utiliser ce paramètre dans votre DSL script pour passer un nom de nœud ou de la valeur.
OriginalL'auteur Mahi