BF의 Java API가 7.0.X 에서 7.1.X로 올라오면서, 몇가지 변경이 있다.
특히, 환경 변수 세팅하는 부분... 혹시나.. 어려움을 겪으실 지 모를 분들을 위해, 예전 7.0.X 버전 것을 조금 손 봤습니다.
/**
* 빌드포지 프로젝트를 실행시키는 메소드
*
* @param info
* @param buildPrjNm
* @return
* @throws IOException
* @throws ServiceException
*/
private String fireBFJob(BuildInfo info, String buildPrjNm, HashMap param) throws IOException, ServiceException {
String buildID = "";
APIClientConnection conn;
BuildEnvironment environ;
log.debug("BuildForge Connect.....");
conn = new APIClientConnection(HOSTNAME, BF_PORT);
conn.authUser(AUTH_ID, AUTH_PW);
Project project = Project.findByName(conn, buildPrjNm);
// As of 7.1, We need to use Build.Request & Build
Build.Request buildRequest= new Build.Request( project );
Build currentBuild = Build.create(buildRequest); // Project를 실행하기 위한 Job을 하나 만든다.
// 그 Job에 할당된, 환경변수그룹을 찾아낸다. Not Enviroment , But BuildEnvironment
environ = BuildEnvironment.findByUuid(conn, currentBuild.getBuildEnvironmentUuid());
log.debug(" Project From BF : " + project.getUuid().trim() + ":" + project.getName() );
log.debug(" Enviroment Form BF : " + environ.getName());
if (environ != null) {
// 넘겨진 param(HashMap)을 가지고 환경 구성
log.debug("BuildForge 환경 구성");
Iterator paramIter = param.keySet().iterator();
while (paramIter.hasNext()) {
String paramKey = (String) paramIter.next();
String paramValue = (String) param.get(paramKey);
BuildEnvironmentEntry en = environ.getEntry(paramKey);
log.debug("BF 환경정보(기본값) : " + en.getParameterName() + "|" + en.getParameterValue());
currentBuild.updateBuildEnvEntryValue(en.getUuid(), paramValue); // 빌드 잡 인스턴스의 환경이므로, 직접적으로 세팅이 안된다.
}
// 환경 변수 설정 확인 용
BuildEnvironment modifiedEnviron = BuildEnvironment.findByUuid(conn, currentBuild.getBuildEnvironmentUuid());
Iterator modifiedEnvironEntries = modifiedEnviron.getEntries().iterator();
while( modifiedEnvironEntries.hasNext() ) {
BuildEnvironmentEntry modifiedEntry = (BuildEnvironmentEntry)modifiedEnvironEntries.next();
log.debug("BF 환경정보(변경값) : " + modifiedEntry.getParameterName() + "|" + modifiedEntry.getParameterValue() );
}
// 환경 변수 설정 확인 용 끝
log.debug("Before fire..");
buildID = currentBuild.getUuid();
Build.fireBuild(conn, currentBuild.getUuid() );
log.debug("Project : " + project.getName() + " is fired " + buildID);
} else {
log.error("Project에 할당된 환경 변수 그룹이 없습니다.");
}
return buildID;
}
이 글은 스프링노트에서 작성되었습니다.