2016-09-21 4 views
4

Jenkins 2.0과 함께 사용하여 기존 빌드를 복제하는 파이프 라인 스크립트를 작성하려고합니다. 이 원래 빌드는 envInject 플러그인을 사용하여 Java 특성 파일을 읽었지 만 파이프 라인 Groovy 스크립트에서이를 수행하는 방법을 볼 수 없습니다. 내가 봤 거든 다음과 발견,하지만 작동하지 않습니다 (FileNotFoundException) :Jenkins 2.0 파이프 라인 스크립트에서 속성 파일을 읽는 방법

Properties props = new Properties() 
File propsFile = new File('./Builder/project.properties') 
props.load(propsFile.newDataInputStream()) 

고마워!

+0

속성 파일이 ** classpath **에있는 경우'new File ('project.properties')'를 사용하십시오. classpath에 없다면 ** 절대 ** 경로로 변경하십시오. 'new file ('C : \\ Users \\ John \\ Documents \\ project.properties') ' – smoggers

+0

감사합니다. 절대 경로는 Jenkins 작업 공간 체크 아웃의 일부이므로 하드 코딩을 꺼리게됩니다. Jenkins 빌드에서 classpath가 어떻게 설정되는지 확실하지 않습니까? –

답변

15

나는 어제와 오늘 이걸로 싸웠다. 이 기능을 사용하기가 더 쉬웠 으면합니다.

'Pipeline Utility Steps'플러그인을 가져옵니다.

readProperties 단계를 사용하십시오.

def props = readProperties file: 'dir/my.properties' 

한 단어의 경고 - 속성 파일에서 부울 (booleans)이 될 것으로 예상되는 내용이 문자열로 처리되었습니다.

+1

감사합니다. 이전 Env 플러그인과 거의 비슷하게 작동합니다. 이 이전 젠킨스 버전에서 잘 작동 SOFTWARE.VERSION = $ {SOFTWARE.VERSION} 3.6 RELEASE하지만 이러한 속성 @PeteSingleton 3.6 –

+0

이어야하는 젠킨스 2.0 RELEASE 매개 변수를 인식하지 못합니다 : 나는 두 가지 속성을 가지고 별도의 줄에. –

+0

안녕하세요, 그들은 별도의 줄에 있습니다 (복사/붙여 넣기 문제!) : –

2

나는 밖으로 시도 아래 완벽하게 잘 작동 :

test.properties 
Monday=abcdef 
Tuesday=kfgh 

def props = readProperties file:'/var/lib/jenkins/jobs/abc/test.properties' 
def Var1= props['Monday'] 
def Var2= props['Tuesday'] 
echo "Var1=${Var1}" 
echo "Var2=${Var2}" 
0

내가 readProperties에서 일반 텍스트를 보간하는 방법을 알아낼 수 없습니다, 그래서 난 그냥 변수를 확장 할 수있는 해결 방법을했다.