programing

Jenkins 콘솔 출력에서 ​​에코 끄기

copyandpastes 2021. 1. 18. 22:14
반응형

Jenkins 콘솔 출력에서 ​​에코 끄기


나는 다음있어 가이드 라인을 어떻게 젠킨스와 안드로이드 APK에 서명하는 방법. KSTOREPWD 및 KEYPWD로 Jenkins 작업을 매개 변수화했습니다. Jenkins의 작업 구성 (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.


기본적으로 젠킨스 출시는 쉘 실행 스크립트를 함께 set -x. 이로 인해 모든 명령이 에코됩니다.

set +x명령 앞에 입력 하여 해당 동작을 일시적으로 재정의 할 수 있습니다. 물론 set -x다시 보여 주어야합니다.

빌드 단계의 맨 위에 다음을 배치하여 전체 스크립트에 대해이 동작을 재정의 할 수 있습니다.
#!/bin/bash +x


특정 상황 (gradle 및 jenkins 사용) 에서 환경 변수에 대한 Gradle의 패턴을 사용하여 암호 매개 변수를 사용할 수도 있습니다 ( ORG_GRADLE_PROJECT_prop). Gradle은 prop프로젝트에 속성 을 설정합니다 .

귀하의 경우 이것은 다음과 같이 보일 것입니다.

여기에 이미지 설명 입력

그리고 당신은 이것을 당신의 gradle.properties것과 같이 사용할 수 있습니다

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

BTW- 자격 증명 바인딩 플러그인사용하는 것이 좋습니다.KEYSTORE 여기에 이미지 설명 입력


다음은 공식 문서에 제안 된대로 더 안전한 방식으로 출력없이 sh매개 변수 를 작성하는 방법의 예입니다 . 기본 마법으로 작성되었습니다 수행 이 답변 .Jenkinsfileset +x

작은 따옴표는 환경 변수로서 쉘에 의해 비밀이 확장되도록합니다. 큰 따옴표는 Groovy가 비밀을 보간하기 때문에 잠재적으로 덜 안전하므로 일반적인 운영 체제 프로세스 목록 (클래식 UI의 Blue Ocean 및 파이프 라인 단계 트리)에서 실수로이를 공개합니다.

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

참조 URL : https://stackoverflow.com/questions/26797219/echo-off-in-jenkins-console-output

반응형