Script Jenkins Pipeline / Groovy com variáveis indefinidas

Estou tentando converter meu grande trabalho Jenkins de várias configurações em sintaxe de pipeline, para que eu possa, entre outras coisas, dividi-lo em vários nós e combinar meus vários estágios em um único trabalho. Aqui está a parte em que estou tendo problemas:

def build_test_configs = [:]
def compilers = ['gnu', 'icc']
def configs = ['debug', 'default', 'opt']

for (int i = 0; i < configs.size(); i++) {
    for (int j = 0; j < compilers.size(); j++) {
        def node_name = ""
        if ("${compilers[j]}" == "gnu") {
            node_name = "node001"
        } else {
            node_name = "node002"
        }
        build_test_configs["${node_name} ${configs[i]}"] = {
            node ("${node_name}") {
                stage("Build Test ${node_name} ${compilers[j]} ${configs[i]}") {
                    unstash "${node_name}-tarball"
                    sh "$HOME/software/jenkins_scripts/nightly.sh ${configs[i]} ${compilers[j]} yes $WORKSPACE"
                }
            }
        }
    }
}

parallel build_test_configs

Meu problema é que${compilers[j] e$configs[i] são indefinidos quando chego à parte em que estou tentando criar um dicionário debuild_test_configs na linha 13. Parece que a verificação na linha 8 está funcionando muito bem.

Atualizar

Não tenho uma mensagem de erro propriamente dita. O script não produz nenhum erro de tempo de execução. A saída inesperada é que os nomes dos estágios são:

Teste de construção node001 null nullTeste de construção node001 null nullTeste de compilação node002 null null

E anightly.sh script está sendo passadonull parâmetros também.

questionAnswers(1)

yourAnswerToTheQuestion