Подтвердить что ты не робот

Отключение эха в выводе консоли Jenkins

Я следую руководству, как подписать Android apk с Дженкинсом. Я параметризировал работу Дженкинса с KSTOREPWD и KEYPWD. Часть конфигурации заданий Дженкинса (Build- > Execute shell) заключается в том, чтобы взять эти параметры и сохранить их в качестве переменных среды:

export KSTOREPWD=${KSTOREPWD}
export KEYPWD=${KEYPWD}
...
./gradlew assembleRelease

Проблема в том, что сборка завершена, кто-либо может получить доступ к сборке "Выход консоли" и посмотреть, какие пароли были введены; часть этого выхода:

08:06:57 + export KSTOREPWD=secretStorePwd
08:06:57 + KSTOREPWD=secretStorePwd
08:06:57 + export KEYPWD=secretPwd
08:06:57 + KEYPWD=secretPwd

Поэтому я хотел бы подавить эхо перед выходом из команд export и снова включить эхо после команд export.

4b9b3361

Ответ 1

По умолчанию Jenkins запускает Execute Shell script с set -x. Это заставляет все команды отвечать эхом

Вы можете набрать set +x до того, как какая-либо команда временно переопределит это поведение. Конечно, вам понадобится set -x, чтобы снова показать их.

Вы можете переопределить это поведение для всего script, поставив в верхней части шага сборки следующее:
#!/bin/bash +x

Ответ 2

В вашей конкретной ситуации (используя gradle и jenkins) вы также можете использовать параметр пароля, используя Gradle шаблон для переменных окружения (ORG_GRADLE_PROJECT_prop). gradle затем задает свойство prop в вашем проекте.

В вашем случае это будет выглядеть примерно так.

введите описание изображения здесь

И вы можете использовать его в своем gradle.properties, как этот

signingConfigs {
    release {
        storeFile file(KEYSTORE)
        storePassword KSTOREPWD
        keyAlias ALIAS
        keyPassword KEYPWD
    }
}

BTW - я рекомендую использовать плагин привязки учетных данных для KEYSTORE введите описание изображения здесь

Ответ 3

Вот пример того, как записать параметр sh в Jenkinsfile без вывода более безопасным способом, как это предлагается в официальной документации. set +x совершает основную магию, как было написано в этом ответе.

Одиночные кавычки будут вызвать раскрытие секрета оболочкой как средой переменная. Двойные кавычки потенциально менее безопасны, как секрет Groovy и так типичный процесс операционной системы списки (а также Blue Ocean и дерево шагов конвейера в классический пользовательский интерфейс) будет случайно раскрыть его:

Небезопасное, неправильное использование:

node {
  withCredentials([string(credentialsId: 'mytoken', variable: 'TOKEN')]) {
    sh /* WRONG! */ """
      set +x
      curl -H 'Token: $TOKEN' https://some.api/
    """
  }
}

Правильное использование ✅:

node {
  withCredentials([string(credentialsId: 'mytoken', variable: 'TOKEN')]) {
    sh '''
      set +x
      curl -H 'Token: $TOKEN' https://some.api/
    '''
  }
}