итерация по переменным среды в Jenkins Pipeline Groovy [duplicate]

Когда вы конвертируете .1 или 1/10 в base 2 (двоичный), вы получаете повторяющийся шаблон после десятичной точки, точно так же, как пытаетесь представить 1/3 в базе 10. Значение не является точным, и поэтому вы можете 't делать точную математику с ней, используя обычные методы с плавающей запятой.

59
задан luka5z 8 May 2016 в 01:30
поделиться

10 ответов

1
ответ дан Andrey Regentov 27 August 2018 в 06:09
поделиться

Я полагаю, что вам нужно было это в виде скрипта, но если кто-то просто захочет просмотреть GUI Jenkins, этот список можно найти, выбрав раздел «Переменные среды» в контекстном меню слева каждой сборки Выберите проект => Выбрать build => Переменные среды

0
ответ дан claudod 27 August 2018 в 06:09
поделиться

Вот быстрый скрипт, который вы можете добавить в качестве задания на конвейер, чтобы перечислить все переменные среды:

node {
    echo(env.getEnvironment().collect({environmentVariable ->  "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n"))
    echo(System.getenv().collect({environmentVariable ->  "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n"))
}

В этом списке будут перечислены переменные системы и Jenkins.

5
ответ дан Daniel 27 August 2018 в 06:09
поделиться

Ответы выше, теперь устарели из-за нового синтаксиса конвейера. Ниже распечатываются переменные среды.

script {
        sh 'env > env.txt'
        String[] envs = readFile('env.txt').split("\r?\n")

        for(String vars: envs){
            println(vars)
        }
    }
2
ответ дан Eddie 27 August 2018 в 06:09
поделиться

Я использую плагин Blue Ocean и не люблю, когда каждый элемент среды получает свой собственный блок. Я хочу один блок со всеми строками.

Плохо печатает:

sh 'echo `env`'

Плохо печатает:

sh 'env > env.txt'
for (String i : readFile('env.txt').split("\r?\n")) {
    println i
}

Отпечатки хорошо:

sh 'env > env.txt'
sh 'cat env.txt'

Хорошо печатает: (как упоминалось @mjfroehlich)

echo sh(script: 'env', returnStdout: true)
6
ответ дан Jon Lauridsen 27 August 2018 в 06:09
поделиться

Вы можете выполнить результат, используя шаг sh / bat и readFile:

node {
    sh 'env > env.txt'
    readFile('env.txt').split("\r?\n").each {
        println it
    }
}

К сожалению env.getEnvironment() возвращает очень ограниченную карту переменных среды.

14
ответ дан luka5z 27 August 2018 в 06:09
поделиться

Другой, более сжатый способ:

node {
    echo sh(returnStdout: true, script: 'env')
    // ...
}

cf. https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script

54
ответ дан mjfroehlich 27 August 2018 в 06:09
поделиться

Следующие работы:

@NonCPS
def printParams() {
  env.getEnvironment().each { name, value -> println "Name: $name -> Value $value" }
}
printParams()

Обратите внимание, что это скорее всего произойдет с ошибкой при первом выполнении и потребует одобрения различных методов groovy для работы в изолированной песочнице jenkins. Это сделано в «управлении одобрением jenkins / in-process»

Список, который я включил:

  • BUILD_DISPLAY_NAME
  • BUILD_ID
  • BUILD_NUMBER
  • BUILD_TAG
  • BUILD_URL
  • CLASSPATH
  • HUDSON_HOME
  • HUDSON_SERVER_COOKIE
  • HUDSON_URL
  • JENKINS_HOME
  • JENKINS_SERVER_COOKIE
  • JENKINS_URL
  • JOB_BASE_NAME
  • JOB_NAME
  • JOB_URL
9
ответ дан Omri Spector 27 August 2018 в 06:09
поделиться

еще один способ получить именно результат, упомянутый в вопросе:

envtext= "printenv".execute().text
envtext.split('\n').each
{   envvar=it.split("=")
    println envvar[0]+" is "+envvar[1]
}

Это можно легко расширить, чтобы построить карту с подмножеством env vars, сопоставляющим критерии:

envdict=[:]
envtext= "printenv".execute().text
envtext.split('\n').each
{   envvar=it.split("=")
    if (envvar[0].startsWith("GERRIT_"))
        envdict.put(envvar[0],envvar[1])
}    
envdict.each{println it.key+" is "+it.value}
0
ответ дан Roman 27 August 2018 в 06:09
поделиться
33
ответ дан Wimateeka 27 August 2018 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: