Как получить значение с карты с ключом в качестве переменной? - PullRequest
0 голосов
/ 15 мая 2019

У меня есть конвейер Jenkins, который состоит из:

parameters.groovy

    static Map<String, String> doMapping() {
        [
                'a-b-c': '1-2-3',
                'd-e-f': '4-5-6',
                'g-h-i': '7-8-9'
        ]
    }
    return this

Jenkinsfile

    Map<String, String> myMap = null
    ...
    pipeline {
      parameters {
        string(name: 'param1')
      }
      stages {
        stage('Stage 1', {
          ...
          steps {
            script {
              myMap = load('parameters.groovy').doMapping()
            }
          }
        }
        stage('Stage 2', {
          ...
          steps {
            script {
              String p = ""
              String v = ""
              if (params.PARAM1?.trim()) {
                p = params.PARAM1
                v = myMap.get(p)
                if (v == null) { // Set v to p if not found in the map
                  v = p
                }
                echo "v = ${v}"
                v = myMap.get('d-e-f')
                if (v == null) {
                  v = p
                }
                echo "v = ${v}"
              }
            }
          }
        }
      }
    }

Ввод:

param1 = d-e-f

Вывод:

[Pipeline] echo
v = d-e-f
[Pipeline] echo
v = 4-5-6

Почему запись карты не найдена, когда переменная используется в качестве ключа, и найдена, когда она жестко закодирована?

Я попытался проверить наличие пустых мест, но их не было, я проверил типы ключей карты, p, params.PARAM1 и v, и они являются java.lang.String.

...