Когда вы конвертируете .1 или 1/10 в base 2 (двоичный), вы получаете повторяющийся шаблон после десятичной точки, точно так же, как пытаетесь представить 1/3 в базе 10. Значение не является точным, и поэтому вы можете 't делать точную математику с ней, используя обычные методы с плавающей запятой.
Я полагаю, что вам нужно было это в виде скрипта, но если кто-то просто захочет просмотреть GUI Jenkins, этот список можно найти, выбрав раздел «Переменные среды» в контекстном меню слева каждой сборки Выберите проект => Выбрать build => Переменные среды
Вот быстрый скрипт, который вы можете добавить в качестве задания на конвейер, чтобы перечислить все переменные среды:
node {
echo(env.getEnvironment().collect({environmentVariable -> "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n"))
echo(System.getenv().collect({environmentVariable -> "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n"))
}
В этом списке будут перечислены переменные системы и Jenkins.
Ответы выше, теперь устарели из-за нового синтаксиса конвейера. Ниже распечатываются переменные среды.
script {
sh 'env > env.txt'
String[] envs = readFile('env.txt').split("\r?\n")
for(String vars: envs){
println(vars)
}
}
Я использую плагин 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)
Вы можете выполнить результат, используя шаг sh
/ bat
и readFile
:
node {
sh 'env > env.txt'
readFile('env.txt').split("\r?\n").each {
println it
}
}
К сожалению env.getEnvironment()
возвращает очень ограниченную карту переменных среды.
Другой, более сжатый способ:
node {
echo sh(returnStdout: true, script: 'env')
// ...
}
cf. https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script
Следующие работы:
@NonCPS
def printParams() {
env.getEnvironment().each { name, value -> println "Name: $name -> Value $value" }
}
printParams()
Обратите внимание, что это скорее всего произойдет с ошибкой при первом выполнении и потребует одобрения различных методов groovy для работы в изолированной песочнице jenkins. Это сделано в «управлении одобрением jenkins / in-process»
Список, который я включил:
еще один способ получить именно результат, упомянутый в вопросе:
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}