2014-11-07 1 views
40

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

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

Проблема заключается в том, когда сборка закончена любой желающий может получить доступ к билд „Console Output“ и посмотреть, какие пароли были введены; часть этой продукции:

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

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

ответ

80

По умолчанию Jenkins запускает Выполняет оболочку сценарий с set -x. Это заставляет все команды быть эхом

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

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

+4

Кстати я нашел '#/bin/bash' также работал! меня. – vikingsteve

1

В вашей конкретной ситуации (с использованием Gradle и Дженкинс), вы также можете использовать пароль параметр, используя Gradle's pattern for environment variables (ORG_GRADLE_PROJECT_prop). Gradle затем установить prop свойство на вашем проекте.

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

enter image description here

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

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

BTW - я рекомендую использовать credentials binding plugin для KEYSTORE enter image description here