Как я могу мужчине groovy в Jenkins замаскировать вывод переменной так же, как это делается для учетных данных? - PullRequest
1 голос
/ 09 января 2020

Есть ли в groovy способ для Jenkins взять произвольную переменную String - скажем, результат вызова API другого сервиса - и заставить Jenkins маскировать ее в выводе консоли, как это происходит автоматически для значений, считываемых из учетных данных менеджер

1 Ответ

0 голосов
/ 10 января 2020

ОБНОВЛЕНИЕ РЕШЕНИЯ: Чтобы скрыть вывод переменной, вы можете использовать плагин Mask Password

Вот пример:

String myPassword = 'toto'
node {
  println "my password is displayed: ${myPassword}"
  wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[password: "${myPassword}", var: 'PASSWORD']]]) {
   println "my password is hidden by stars: ${myPassword}"
   sh 'echo "my password wont display: ${myPassword}"'
   sh "echo ${myPassword} > iCanUseHiddenPassword.txt"
  }
  // password was indeed saved into txt file
  sh 'cat iCanUseHiddenPassword.txt'
}

https://wiki.jenkins.io/display/JENKINS/Mask+Passwords+Plugin

ОРИГИНАЛЬНЫЙ ОТВЕТ с решением регулярных выражений:

Допустим, вы хотите скрыть пароль, заключенный в кавычки, следующий код выведет My password is "****"

import java.util.regex.Pattern

String myInput = 'My password is "password1"'

def regex = Pattern.compile( /(?<=\")[a-z0-9]+(?=\")/, Pattern.DOTALL);

def matchList = myInput =~ regex

matchList.each { m ->
  myInput = myInput.replaceAll( m, '****')
}
println myInput

, который нужно заменить a-z0-9 по шаблону допустимых символов в вашем пароле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...