import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.buildforge.services.client.api.APIClientConnection;
import com.buildforge.services.client.dbo.Build;
import com.buildforge.services.client.dbo.Environment;
import com.buildforge.services.client.dbo.EnvironmentEntry;
import com.buildforge.services.client.dbo.Project;
import com.buildforge.services.common.ServiceException;
public class BFJavaServices {
private static Log log = LogFactory.getLog(BFJavaServices.class);
private static int ENVIRONMENT_BY_NAME = 1; // 1 Available , 0 : N/A
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("BFJavaClient!!!");
String hostname = "166.125.8.97";
int bfPort = 3966;
String projectName = "[DEV]HYIN_Label_Deploy";
String envGroupName = "DEPLOY_REQ_Env";
int envGroupID = 4;
APIClientConnection conn;
try {
conn = new APIClientConnection(hostname, bfPort);
conn.authUser("root", "root");
Project project = Project.findByName(conn, projectName);
log.debug( project.getProjectId() + "|" + project.getName() );
//List<EnvironmentEntry> paramList = new ArrayList();
List paramList = new ArrayList();
Environment environ = null;
if( ENVIRONMENT_BY_NAME == 0) {
environ = Environment.findById(conn, envGroupID);
log.debug(environ.getName());
} else {
// 좀 기분나쁘지만, 돌면서 찾아 내자.
// 이름으로 먼저 찾아낸 후, 그 ID를 이용해서 실제로 다시 findById를 이용해야 한다.
List envList = Environment.findAll(conn); // 이건 껍데기만 찾아내는 것으로 보인다.
for(int i=0; i < envList.size() ; i++) {
Environment tempEnv = (Environment)envList.get(i);
log.debug(tempEnv.getName());
if( envGroupName.equals( tempEnv.getName()) ) {
environ = tempEnv;
log.debug("Matched Environment Group = " + environ.getName() + "|" + environ.getEnvGroupId() );
environ = Environment.findById(conn, environ.getEnvGroupId()); // 이걸 왜 해야 하는지 이해는 안가지만.
break;
}
}
}
List envEntryList = environ.getEntries();
log.debug( envEntryList );
// for(int j=0; j < envEntryList.size() ; j++) {
// EnvironmentEntry envEntry = (EnvironmentEntry)envEntryList.get(j);
// log.debug(envEntry.getParameterName() + "|" + envEntry.getParameterValue() );
// }
EnvironmentEntry en = environ.getEntry("CSR_NO");
log.debug("Environment : " + en);
log.debug("pre PARAM VALUE " + en.getParameterName() + "|" + en.getParameterValue());
en.setParameterValue("AMS00000042");
paramList.add( en );
EnvironmentEntry en2 = environ.getEntry("SUB_CSR_NO");
log.debug("pre PARAM VALUE " + en2.getParameterName() + "|" + en2.getParameterValue());
en2.setParameterValue("AMS00000042");
paramList.add( en2 );
log.debug("PARAM NAME : " + en.getParameterName() + "|" + en.getParameterValue());
log.debug("PARAM NAME : " + en2.getParameterName() + "|" + en2.getParameterValue());
//en.update(); // 실제 환경변수를 바꾸어 버리는 결과를 가져옴.
//project.fire();
Build currentBuild = project.fire(null, null, false, paramList);
log.debug("Project " + project.getName() + " is fired " + currentBuild.getBuildId() );
// 요로케 호출해야 정상적으로 동적으로 환경변수 값을 주면서, 프로젝트를 시작할 수 있음.
conn.logout();
conn.close();
} catch (IOException e) {
log.error("", e);
} catch (ServiceException e) {
log.error("", e);
}
}
}
이 글은 스프링노트에서 작성되었습니다.