Мне нужно прочитать значения из файла в моем конвейере. Я использую split(), который помещает их в массив. Мне нужно поместить их в Arraylist, поэтому я использую Arrays.asList(). Проблема, с которой я столкнулся, заключается в том, что я не могу использовать методы size() или length(), поэтому я не могу создать цикл for, например
for (ii = 0; ii < var.length; ii++)
or
for (ii = 0; ii < var.size; ii++)
потому что я получаю сообщение об ошибке: длина неклассифицированного поля java.util.Arrays$ArrayList
Поэтому я попытался использовать цикл for для каждого, но когда я выполняю какое-либо действие (например, команду ls) в моем блоке finally, он повторяется только 1 раз. Но если я просто запускаю команду «эхо», она повторяется для каждого элемента, как и предполагалось. Любые советы о том, как изменить мой код, чтобы он повторялся для каждого элемента в списке при использовании любой команды?
Работает корректно....
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
}
}
}
ВЫВОД (повторяется для каждого элемента):
[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
Но если я предприму какое-либо действие, такое как 'ls -l', оно повторится только 1 раз
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'
}
}
}
ВЫВОД (повторяется только 1 раз):
[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