у меня есть список, определенный в Groovy как:
all_services:[processor-create, processor-update, read-service]
как я могу предоставить этот список для цикла for для каждой переменной переменной playbook $ {service}
script {
sh("""
ansible-playbook -i localhost, cleanup.yml --extra-vars=@${service}.yml
""")
...
Так что playbook должен запускаться, если в списке есть 2 элемента, тогда он должен запускаться 2 раза для каждого элемента.
Позвольте мне выразить это ясно.
У меня есть отличный сценарий, он состоит из нескольких этапов:
stages {
stage('Prepare') {
agent any
steps {
script {
if (params.DEPLOY_ALL_SERVICES == true){
all_services = new ArrayList(Arrays.asList("${params.ALL_SERVICES}".split("\\+")))
println "all_services:" + all_services
} else{
if (params.DEPLOY_ALL_EX_SERVICES == true){
all_ex_services = new ArrayList(Arrays.asList("${params.ALL_EX_SERVICES}".split("\\+")))
println "deploy all ex services:" + all_account_services
all_services += all_ex_services
}
println "All Services:" + all_services
}
}
}
}
stage('Create conf'){
agent any
steps {
script {
def services = "$all_services"
println services // it works till here, it's printing the list, if add single quotes to list then hopefully it should loop through it
services.each {service ->
sh("""
ansible-playbook -i localhost, cleanup.yml --extra-vars=@${service}.yml
""")
}
}
}
}
}
Когда я выполняю конвейер, он может напечатать список на консоли, но не может предоставить этот список в def services = "$ all_services", он не получает весь список для выполнения цикла.
Услуги вывода на консоль println:
[processor-create, processor-update, ex-service]
an exception which occurred:
in field com.cloudbees.groovy.cps.impl.FunctionCallEnv.locals
in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@1a3dd25b
in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@7f249352
in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
in object com.cloudbees.groovy.cps.impl.LoopBlockScopeEnv@59936027
in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@6a3531fb
in field com.cloudbees.groovy.cps.impl.CallEnv.caller