Смешивайте и сопоставляйте переменные оболочки с переменными Groovy в Jenkinsfile

Я пробовал различные варианты приведенного ниже кода, ни один из них, похоже, не работает.

def runScript(command){
    sh '''#!/bin/bash
        file="env.txt"
        while IFS='=' read -r key value
        do
            export ${key}="${value}"
        done < "$file"
        pwd
        "${command}"
    '''
}

command - это динамическая команда оболочки, которую я хочу выполнить после воссоздания переменных среды из env.txt

Любая идея ?


person coding_idiot    schedule 20.11.2018    source источник


Ответы (1)


Использовать этот

   def runScript(command){
        sh '''#!/bin/bash
            file="env.txt"
            while IFS='=' read -r key value
            do
                export ${key}="${value}"
            done < "$file"
            pwd
        ''' + "${command}"
    }

Одиночные кавычки ''' создадут многострочный сценарий оболочки. Кавычки " получат значение переменной команды и объединят его со сценарием оболочки. Обратите внимание, что есть две переменные оболочки key & value, поэтому ''' нельзя заменить на """

Использованная литература :

Доступ к переменной Groovy из шага оболочки в Jenkins трубопровод

Как передать переменные из Jenkinsfile в команду оболочки

person coding_idiot    schedule 20.11.2018
comment
Вы также можете просто заменить "" "на" "" - person Joerg S; 23.11.2018
comment
@JoergS, который не будет работать, потому что он также попытается заменить переменные key & value, что неверно. - person coding_idiot; 26.11.2018