2017-12-14 1 views
1

프로젝트 관련 유틸리티 병을위한 맞춤 Nexus가 있습니다. 나는이 항아리를 만들기 위해 젠킨스 (Jenkins)가 있습니다.젠킨스에 저장된 자격 증명을 호출하여 젠킨스 파일 내에서 맞춤 넥서스에 배포하려면 어떻게해야합니까?

프로젝트에서 gradle을 사용하고 Jenkinsfile을 사용하여 파이프 라인을 정의하고 싶습니다. 마지막 단계에서 제작 작업을 통해 Nexus에 이슈를 배포하고 싶습니다.

내 소스 저장소 (및 그에 해당하는 그라데이션 스크립트 나 Jenkinsfile에있는 Nexus)의 자격 증명을 원하지 않으므로 사용자 및 비밀번호가 포함 된 Jenkins Credentials 플러그인의 자격증 명 항목을 설정합니다. 넥서스.

Jenkinsfile에서 이러한 자격 증명을 참조하여 Nexus에 배포 할 수 있도록하려면 어떻게해야합니까?

현재, 내 배포 단계는 다음과 같습니다

stage('Publish') { 
    sh "gradle upload" 
} 

내가 모든이 목적을 위해 Gradle을 사용할 수 있습니까? 로컬에서 사용할 수는 있지만 Jenkinsfile 내에서 다른 명령을 사용하는 것이 좋습니다.

은 Gradle을, 나는 작업을 정의하려면이 옵션을 사용합니다. (I 로컬 환경 변수로 사용자와 암호를 설정 즉 물론, 젠킨스의 옵션이 아니다.)

def nexusUser = "$System.env.NEXUS_USER" 
def nexusPass = "$System.env.NEXUS_PASS" 

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url: "http://nexus.example.com/repository/maven-releases/") { 
       authentication(userName: nexusUser, password: nexusPass) 
      } 
     } 
    } 
} 

+0

환경 변수를 사용하지 않는 이유는 무엇입니까? – mkobit

+0

jenkins 설치시 환경 변수를 포함 할 수 있습니다. –

+0

Jenkins가 제공 한 글로벌 자격 증명을 사용할 수도 있습니다. –

답변

2

당신은 ~/.gradle/gradle.properties 외부 변수를 설정할 수 있습니다 nexusUser=superuser nexusPass=superpassword

당신은 어떤 줘야 환경 변수를 주입하는 withCredentials(){} 단계를 사용할 수 있습니다
+1

예 이것이 최적의 솔루션이라고 생각합니다. jenkins 사용자 (실제로 CI를 실행 중임)에서 변경해야한다는 것을 기억하십시오. –

0

l {} 블록 안에 만 보일 수 있습니다.

관련 문제