Jenkins pipeline - Comment parcourir une liste

Je suis tenu de lire les valeurs d'un fichier dans mon pipeline. Je suis en utilisant split() qui les met dans une Tableau. J'ai besoin de les mettre dans un Arraylist donc je suis en utilisant Tableaux.asList(). Le problème que je rencontre est que je ne suis pas en mesure d'utiliser le size() ou length() méthodes donc je ne peux pas faire une boucle for comme

for (ii = 0; ii < var.length; ii++)

ou

for (ii = 0; ii < var.size; ii++)

parce que je reçois l'erreur: non classifié champ de java.util.Tableaux$ArrayList longueur

J'ai donc essayé d'utiliser une boucle for each, mais quand je prends un peu d'action (comme la commande ls par exemple) dans mon bloc finally il ne parcourt 1 fois. Mais si je viens de lancer la commande 'echo' il itère pour chaque élément comme il est censé le faire. Des conseils sur la façon de modifier mon code pour obtenir l'itération pour chaque élément de la liste lors de l'utilisation de n'importe quelle commande?

Fonctionne correctement....

node{
    wrap([$class: 'ConfigFileBuildWrapper', managedFiles: [[fileId: 'dest_hosts.txt', targetLocation: '', variable: 'DEST_HOST']]]) {
        HOST = Arrays.asList(readFile(env.DEST_HOST).split("\\r?\\n"))
        deploy(HOST)
    }
}

@NonCPS
def deploy(host){
    for (String target : host){
        try {
            echo target
        }
        finally {
           echo target
        }
    }
}

De SORTIE (itérations pour chaque élément):

[Pipeline] node
Running on <obfuscated>
[Pipeline] {
[Pipeline] wrap
provisoning config files...
copy managed file [<obfuscated>] to file:/var/lib/jenkins/<obfuscated>
[Pipeline] {
[Pipeline] readFile
[Pipeline] echo
www.testhost.com
[Pipeline] echo
www.testhost.com
[Pipeline] echo
www.testhost2.com
[Pipeline] echo
www.testhost2.com
[Pipeline] }
Deleting 1 temporary files
[Pipeline] //wrap
[Pipeline] }
[Pipeline] //node
[Pipeline] End of Pipeline
Finished: SUCCESS

Mais si je prends un peu d'action, tels que 'ls-l' il ne parcourt 1 fois

node{
    wrap([$class: 'ConfigFileBuildWrapper', managedFiles: [[fileId: 'dest_hosts.txt', targetLocation: '', variable: 'DEST_HOST']]]) {
        HOST = Arrays.asList(readFile(env.DEST_HOST).split("\\r?\\n"))
        deploy(HOST)
    }
}

@NonCPS
def deploy(host){
    for (String target : host){
        try {
            echo target
        }
        finally {
           sh 'ls -l'
        }
    }
}

De SORTIE (uniquement itère 1 heure):

[Pipeline] node
Running on <obfuscated>
[Pipeline] {
[Pipeline] wrap
provisoning config files...
copy managed file [<obfuscated>] to file:/var/lib/jenkins/<obfuscated>
[Pipeline] {
[Pipeline] readFile
[Pipeline] echo
www.testhost.com
[Pipeline] sh
[sandbox%2Fpipeline-test-new1] Running shell script
+ ls -l
total 8
-rw-r--r-- 1 jenkins jenkins 10 Jun 17 16:07 someFile
[Pipeline] }
Deleting 1 temporary files
[Pipeline] //wrap
[Pipeline] }
[Pipeline] //node
[Pipeline] End of Pipeline
Finished: SUCCESS

OriginalL'auteur mdo123 | 2016-07-07