2014-11-09 2 views
1

플러그인에 새 기능을 추가하려고 할 때 다음과 같은 문제가 발생했습니다. 목표는 빌드 중에 덮어 쓰여지는 환경 변수의 변경 사항을 잡는 것입니다.
예 : 쉘 스크립트에서 새 값을 가져 오는 문자열 변수 (param1).
jenkins에서 게시물 빌드 환경 변수를 가져 오는 중

@Extension 
public class MyRunListener extends RunListener<Run>{ 

    @Override 
    public Environment setUpEnvironment(AbstractBuild build, Launcher launcher, 
        BuildListener listener) throws IOException, InterruptedException { 
     return new Environment(){ 
      @Override 
      public boolean tearDown(AbstractBuild build, BuildListener listener) 
        throws IOException, InterruptedException { 
       EnvVars envVars = build.getEnvironment(listener); 
       String param1 = envVars.get("param1"); 
       return super.tearDown(build, listener); 
      } 
     }; 
    } 

} 

작업 실행 : PARAM1 = DEFAULTVALUE을
그래서, 나는 다음과 같은 코드를 추가. 그런 다음 작업이 param1 = newValue로 변경됩니다. 의 tearDown (...) 나는 PARAM1의 새 값을 얻으려고 방법 내부
,하지만 난 이 = DEFAULTVALUE이 아닌 새 값으로 덮어 쓴 PARAM1 변경, 전에 변수의 목록을 쉘 명령, 여기서 param1 = newValue.
프로그래밍 방식으로 새 값을 가져올 수 있습니까? 나는 속성 파일에 쓸 수 있고 그것을 읽을 수 있다는 것을 알고 있지만, 나는 "무대 뒤"해결책을 찾고있다.

자바에서

답변

0

, 환경 변수의 현재 값을 얻을 수있는 방법이된다 :

System.getProperty("param1") 
+0

Jeanne에게 감사하지만 jenkins가 * tearDown (...) *을 호출 할 때까지 프로세스가 이미 닫혀 있고 속성이 null입니다. – Moosh

0

@Moosh,

아니, 환경 변수는 문맥에서까지 을 통과 할 수 없다 Java 코드를 Jenkins 엔진에 추가하십시오. 당신이 말했듯이, 당신은 파일에 그것을 쓰고 그것을 파싱해야합니다.

다행히도, 상당히이 두려워하는 것처럼 아닙니다. 대신 별도의 특성 파일을 생성하는, 단순히 젠킨스 콘솔 로그에 값을 쓰고, 그 실행의 끝 부분에 도움이

$ curl http://jenkins-host/job/job-name/number/consoleText 

희망을 통해 로그의 텍스트를 얻는다.

관련 문제