2014-11-07 7 views
40

Ich folge guideline wie Android Apk mit Jenkins zu unterzeichnen. Ich habe Jenkins Job mit KSTOREPWD und KEYPWD parametrisiert. Ein Teil von Jenkins' Job-Konfiguration (Build-> Shell-Execute) ist es, diese Parameter zu übernehmen und sie als Umgebungsvariablen:Echo aus in Jenkins Console Output

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

Das Problem ist, wenn der Build über jemand ist, den Build zugreifen können ‚Console Output‘ und sehen, welche Passwörter eingegeben wurden; Teil dieser Ausgabe:

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

So würde Ich mag Echo, bevor sie aus export Befehle Ausgabe zu unterdrücken und erneut aktivieren Echo nach export Befehle.

Antwort

80

Standardmäßig startet Jenkins Shell Skript mit set -x ausführen. Dies führt dazu, dass alle Befehle wiederholt werden.

Sie können set +x vor jedem Befehl eingeben, um dieses Verhalten vorübergehend zu überschreiben. Natürlich benötigen Sie set -x, um sie wieder zu zeigen.

Sie können dieses Verhalten für das gesamte Skript überschreiben die folgenden an der Spitze des Build-Schritt, indem sie:
#!/bin/bash +x

+4

Übrigens fand ich '#/bin/bash' auch gearbeitet! mich. – vikingsteve

1

In Ihrer spezifischen Situation (gradle und jenkins verwenden) Sie auch ein Passwort Parameter verwenden könnte, mit Gradle's pattern for environment variables (ORG_GRADLE_PROJECT_prop). Gradle wird dann eine prop Eigenschaft auf Ihrem Projekt festgelegt.

In Ihrem Fall wäre dies etwas so aussieht

enter image description here

Und Sie können es in Ihrem gradle.properties wie diese BTW

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

verwenden - Ich empfehle, mit der credentials binding plugin für KEYSTORE enter image description here