use of com.orion.ops.consts.app.StageType in project orion-ops by lijiahangmax.
the class ApplicationInfoController method checkConfig.
/**
* 检查配置
*
* @param request request
*/
private void checkConfig(ApplicationConfigRequest request) {
StageType stageType = Valid.notNull(StageType.of(request.getStageType()));
List<ApplicationConfigActionRequest> actions;
ApplicationConfigEnvRequest env = Valid.notNull(request.getEnv());
if (StageType.BUILD.equals(stageType)) {
// 构建检查产物路径
Valid.notBlank(env.getBundlePath());
// 检查操作
actions = Valid.notEmpty(request.getBuildActions());
} else if (StageType.RELEASE.equals(stageType)) {
// 发布序列
Valid.notNull(env.getReleaseSerial());
// 异常处理
Valid.notNull(env.getExceptionHandler());
// 发布检查机器id
Valid.notEmpty(request.getMachineIdList());
// 检查操作
actions = Valid.notEmpty(request.getReleaseActions());
} else {
throw Exceptions.unsupported();
}
// 检查操作
for (ApplicationConfigActionRequest action : actions) {
Valid.notBlank(action.getName());
ActionType actionType = Valid.notNull(ActionType.of(action.getType(), stageType.getType()));
// 检查命令
if (ActionType.BUILD_COMMAND.equals(actionType) || ActionType.RELEASE_COMMAND.equals(actionType)) {
Valid.notBlank(action.getCommand());
}
}
// 检查检出操作唯一性
int checkoutActionCount = actions.stream().map(ApplicationConfigActionRequest::getType).map(ActionType::of).filter(ActionType.BUILD_CHECKOUT::equals).mapToInt(s -> Const.N_1).sum();
Valid.lte(checkoutActionCount, 1, MessageConst.CHECKOUT_ACTION_PRESENT);
// 检查传输操作唯一性
int transferActionCount = actions.stream().map(ApplicationConfigActionRequest::getType).map(ActionType::of).filter(ActionType.RELEASE_TRANSFER::equals).mapToInt(s -> Const.N_1).sum();
Valid.lte(transferActionCount, 1, MessageConst.TRANSFER_ACTION_PRESENT);
if (transferActionCount != 0) {
// 传输目录
Valid.notBlank(env.getTransferPath());
}
}
use of com.orion.ops.consts.app.StageType in project orion-ops by lijiahangmax.
the class ApplicationEnvServiceImpl method configAppEnv.
@Override
@Transactional(rollbackFor = Exception.class)
public void configAppEnv(ApplicationConfigRequest request) {
ApplicationEnvService self = SpringHolder.getBean(ApplicationEnvService.class);
StageType stageType = StageType.of(request.getStageType());
List<ApplicationEnvRequest> list = Lists.newList();
Long appId = request.getAppId();
Long profileId = request.getProfileId();
ApplicationConfigEnvRequest requestEnv = request.getEnv();
// 构建产物目录
String bundlePath = requestEnv.getBundlePath();
if (!Strings.isBlank(bundlePath)) {
ApplicationEnvRequest bundlePathEnv = new ApplicationEnvRequest();
bundlePathEnv.setKey(ApplicationEnvAttr.BUNDLE_PATH.getKey());
bundlePathEnv.setValue(bundlePath);
bundlePathEnv.setDescription(ApplicationEnvAttr.BUNDLE_PATH.getDescription());
list.add(bundlePathEnv);
}
// 产物传输目录
String transferPath = requestEnv.getTransferPath();
if (!Strings.isBlank(transferPath)) {
ApplicationEnvRequest transferPathEnv = new ApplicationEnvRequest();
transferPathEnv.setKey(ApplicationEnvAttr.TRANSFER_PATH.getKey());
transferPathEnv.setValue(transferPath);
transferPathEnv.setDescription(ApplicationEnvAttr.TRANSFER_PATH.getDescription());
list.add(transferPathEnv);
}
// 产物传输类型
String transferDirType = requestEnv.getTransferDirType();
if (!Strings.isBlank(transferDirType)) {
ApplicationEnvRequest transferDirTypeEnv = new ApplicationEnvRequest();
transferDirTypeEnv.setKey(ApplicationEnvAttr.TRANSFER_DIR_TYPE.getKey());
transferDirTypeEnv.setValue(TransferDirType.of(transferDirType).getValue());
transferDirTypeEnv.setDescription(ApplicationEnvAttr.TRANSFER_DIR_TYPE.getDescription());
list.add(transferDirTypeEnv);
}
// 发布序列
Integer releaseSerial = requestEnv.getReleaseSerial();
if (releaseSerial != null) {
ApplicationEnvRequest releaseSerialEnv = new ApplicationEnvRequest();
releaseSerialEnv.setKey(ApplicationEnvAttr.RELEASE_SERIAL.getKey());
releaseSerialEnv.setValue(SerialType.of(releaseSerial).getValue());
releaseSerialEnv.setDescription(ApplicationEnvAttr.RELEASE_SERIAL.getDescription());
list.add(releaseSerialEnv);
}
// 异常处理
Integer exceptionHandler = requestEnv.getExceptionHandler();
if (exceptionHandler != null) {
ApplicationEnvRequest exceptionHandlerEnv = new ApplicationEnvRequest();
exceptionHandlerEnv.setKey(ApplicationEnvAttr.EXCEPTION_HANDLER.getKey());
exceptionHandlerEnv.setValue(ExceptionHandlerType.of(exceptionHandler).getValue());
exceptionHandlerEnv.setDescription(ApplicationEnvAttr.EXCEPTION_HANDLER.getDescription());
list.add(exceptionHandlerEnv);
}
// 构建检查是否有构建序列
if (StageType.BUILD.equals(stageType)) {
self.checkInitSystemEnv(appId, profileId);
}
// 添加环境变量
for (ApplicationEnvRequest env : list) {
env.setAppId(appId);
env.setProfileId(profileId);
self.addAppEnv(env);
}
}
use of com.orion.ops.consts.app.StageType in project orion-ops by lijiahangmax.
the class ApplicationActionServiceImpl method configAppAction.
@Override
@Transactional(rollbackFor = Exception.class)
public void configAppAction(ApplicationConfigRequest request) {
Long appId = request.getAppId();
Long profileId = request.getProfileId();
StageType stageType = StageType.of(request.getStageType());
// 删除
LambdaQueryWrapper<ApplicationActionDO> deleteWrapper = new LambdaQueryWrapper<ApplicationActionDO>().eq(ApplicationActionDO::getAppId, appId).eq(ApplicationActionDO::getProfileId, profileId).eq(ApplicationActionDO::getStageType, stageType.getType());
applicationActionDAO.delete(deleteWrapper);
// 插入
List<ApplicationConfigActionRequest> actions;
if (StageType.BUILD.equals(stageType)) {
actions = request.getBuildActions();
} else if (StageType.RELEASE.equals(stageType)) {
actions = request.getReleaseActions();
} else {
throw Exceptions.unsupported();
}
for (ApplicationConfigActionRequest action : actions) {
ApplicationActionDO insert = new ApplicationActionDO();
insert.setAppId(appId);
insert.setProfileId(profileId);
insert.setActionName(action.getName());
insert.setActionType(action.getType());
insert.setStageType(stageType.getType());
insert.setActionCommand(action.getCommand());
applicationActionDAO.insert(insert);
}
}
use of com.orion.ops.consts.app.StageType in project orion-ops by lijiahangmax.
the class ApplicationInfoServiceImpl method configAppProfile.
@Override
@Transactional(rollbackFor = Exception.class)
public void configAppProfile(ApplicationConfigRequest request) {
Long appId = request.getAppId();
Long profileId = request.getProfileId();
// 查询应用和环境
ApplicationInfoDO app = Valid.notNull(applicationInfoDAO.selectById(appId), MessageConst.APP_ABSENT);
ApplicationProfileDO profile = Valid.notNull(applicationProfileDAO.selectById(profileId), MessageConst.PROFILE_ABSENT);
StageType stageType = StageType.of(request.getStageType());
if (StageType.RELEASE.equals(stageType)) {
// 配置机器
applicationMachineService.configAppMachines(request);
}
// 配置环境变量
applicationEnvService.configAppEnv(request);
// 配置发布
applicationActionService.configAppAction(request);
// 设置日志参数
EventParamsHolder.addParams(request);
EventParamsHolder.addParam(EventKeys.APP_NAME, app.getAppName());
EventParamsHolder.addParam(EventKeys.PROFILE_NAME, profile.getProfileName());
}
Aggregations