# 前端开发规范
# 文件夹/文件命名规范
文件名必须用 蛇形命名法
,例如:user-list.vue
相关模块文件必须放在同一目录下,目录入口文件必须命名为 index.vue
# Vue 组件命名规范
组件的命名需遵从以下原则:
- 有意义的 : 不过于具体,也不过于抽象
- 简短 : 2 到 3 个单词
- 具有可读性 : 以便于沟通交流
同时还需要注意:
- 必须符合自定义元素规范 : 使用连字符分隔单词,切勿使用保留字。
- app-前缀作为命名空间 : 如果非常通用的话可使用一个单词来命名,这样可以方便于其它项目里复用。
# 路由命名规范
路由 path 必须使用蛇形命名法
,例如 /user/user-index,必须符合 restfull 定义规范
路由跳转必须使用 name
定位, 禁止直接使用 path
定位,
# 组件模板规范
模板中禁止出现复杂的三元表达式和计算式,应用 computed
、method
代替。
模板中禁止出现行内样式
# 验证组件的 props
props
应尽量使用原始数据类型,并强制要求增加数据类型限制。
# Javascript 规范
Javascript 代码 统一采用 ES6
规范编写.
如无特殊需要,function()
一律用箭头函数代替
禁止出现使用 "+" 号连接动态字符串,应使用魔术字符串代替
处理异步代码时,统一使用 async await
方式编写,禁止使用 *, yield
必须符合项目定义的 ESLint
标准,代码必须统一格式化
# 后端开发规范
# 总体命名规范
- 命名即设计。好的代码,有意义的名字,一看就懂。
- 项目名、包名、目录名,以模块为基准;类名、方法名、流程名、rest 资源名以模型为基准。
- 表名不要超过30个字符,所以可以用缩写。其他不建议用缩写。rest 里面要用-分隔,其他命名要驼峰式。
- 除了常量、枚举类外,不建议大写。
# Restful命名规范
规范
- 统一前缀,一般是所有path前缀为/api;
- 统一前缀后面一般是系统名(或者模块名),然后是资源名
- 资源名:
- 使用名词,而不是动词
- 使用复数,而不是单数
- 资源名必须小写,或者用短横线“-”连接,如tree-node
- HTTP Method
- GET:从服务器中查询一个或多个资源
- DELETE:在服务器中删除资源
- PUT:在服务器中更新资源
- POST:在服务器新建一个资源
- 其他方法一般不用
- @PathVariable还是@RequestParam:一般来讲,通过资源唯一标识查询单个资源实体时,将唯一标识放在path上,即用@PathVariable。而通过资源其他属性来做过滤查询的话,则用@RequestParam。
- 资源操作:如果资源需要做一些具体的操作可以用actions作为path(尽量避免用action)
- RestEasy改造成Spring Restful 请参考【FAQ】-【RESTEasy更新为Spring RESTful说明】
示例(restful 和 swagger)
@RequestMapping(value = "/api/ci/builddefs", consumes = {MediaType.APPLICATION_JSON_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE})
@Api(tags="IBuildDefinitionController", description = "构建定义管理对外接口")
public interface IBuildDefinitionController {
/**
* 获取构建定义
*
* @param buildDefinitionId 构建定义ID
* @return 构建定义
* @throws Exception
*/
@GetMapping(value = "/{buildDefinitionId}")
@ApiOperation("获取构建定义")
BuildDefinition getBuildDefinition(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId) throws Exception;
/**
* 获取构建定义详细信息
*
* @param buildDefinitionId 构建定义ID
* @return 构建定义详细信息
* @throws Exception
*/
@GetMapping(value = "/{buildDefinitionId}/details")
@ApiOperation("获取构建定义详细信息")
BuildDefinition getBuildDefinitionDetails(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId) throws Exception;
/**
* 查询项目所有的构建定义
*
* @param projectId 项目ID
* @param projectCode 项目code
* @param definitionName 模糊匹配构建定义名称
* @param includeClosed 包含已关闭的构建定义
* @param labelName 标签名称
* @return 构建定义列表
* @throws Exception
*/
@GetMapping
@ApiOperation("查询项目所有的构建定义")
List<BuildDefinition> queryBuildDefinitions(@RequestParam(name = "projectId", required = false) @ApiParam("项目ID") String projectId,
@RequestParam(name = "projectCode", required = false) @ApiParam("项目Code") String projectCode,
@RequestParam(name = "definitionName", required = false) @ApiParam("模糊匹配构建定义名称") String definitionName,
@RequestParam(name = "includeClosed", required = false) @ApiParam("包含已关闭的") String includeClosed,
@RequestParam(name = "labelName", required = false) @ApiParam("标签名称") String labelName) throws Exception;
@GetMapping(value = "/actions/query-with-page")
@ApiOperation("分页查询项目所有的构建定义")
default PageResultList<BuildDefinition> queryBuildDefinitionsWithPage(
@RequestParam(name = "projectId", required = false) @ApiParam("项目ID") String projectId,
@RequestParam(name = "projectCode", required = false) @ApiParam("项目Code") String projectCode,
@RequestParam(name = "definitionName", required = false) @ApiParam("模糊匹配构建定义名称") String definitionName,
@RequestParam(name = "includeClosed", required = false) @ApiParam("包含已关闭的") String includeClosed,
@RequestParam(name = "labelName", required = false) @ApiParam("标签名称") String labelName,
@RequestParam(name = "pageIndex", required = false, defaultValue = "0") @ApiParam("第几页")int pageIndex,
@RequestParam(name = "pageSize", required = false, defaultValue = "0") @ApiParam("每页的数量")int pageSize) throws Exception {
return new PageResultList<>(queryBuildDefinitions(projectId, projectCode, definitionName, includeClosed, labelName), pageIndex, pageSize);
}
/**
* 根据ID列表查询项目所有的构建定义
*
* @param buildDefinitionIds 构建IDs
* @return 构建定义列表
* @throws Exception
*/
@PostMapping(value = "/actions/query-by-ids")
@ApiOperation("根据ID列表查询项目所有的构建定义")
List<BuildDefinition> queryBuildDefinitionsByIds(@MultiRequestBody @ApiParam("构建定义ID列表") String[] buildDefinitionIds) throws Exception;
/**
* 创建一个构建定义
*
* @param buildDefinition 构建定义
* @param componentIds 组件IDs
* @return 构建定义
* @throws Exception
*/
@PostMapping
@ApiOperation("创建一个构建定义")
@Permission("project_build_definition_create")
BuildDefinition createBuildDefinition(@MultiRequestBody @ApiParam("构建定义") BuildDefinition buildDefinition,
@MultiRequestBody @ApiParam("组件ID") String componentIds) throws Exception;
/**
* 克隆一个构建定义
*
* @param buildDefinitionId 构建定义ID
* @param buildDefinitionName 构建定义名称
* @param isDisable 是否是禁用,否则是删除任务ID列表
* @param disableOrRemoveStageIds 禁用或者删除任务ID列表
* @param buildParams 构建参数
* @return 构建定义
* @throws Exception
*/
@PostMapping(value = "/{buildDefinitionId}/clone")
@ApiOperation("克隆一个构建定义")
@Permission("project_build_definition_create")
BuildDefinition cloneBuildDefinition(
@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId,
@RequestParam(name = "buildDefinitionName", required = false) @ApiParam("构建定义名称") String buildDefinitionName,
@PathVariable(name = "isDisable", required = false) @ApiParam("是否是禁用") boolean isDisable,
@RequestParam(name = "disableOrRemoveStageIds", required = false) @ApiParam("禁用或者删除任务ID列表") String[] disableOrRemoveStageIds,
@MultiRequestBody @ApiParam("构建参数") Map<String, String> buildParams,
@MultiRequestBody @ApiParam("触发规则") List<Map<String, Object>> triggers) throws Exception;
/**
* 批量克隆构建定义
*
* @param buildDefinitionIds 构建定义ID数组,或者逗号分隔皆可
* @param buildDefinitionNamePrefix 构建定义名称前缀
* @param labelNames 标签名称
* @return 构建定义
* @throws Exception
*/
@PostMapping(value = "/actions/batch-clone")
@ApiOperation("批量克隆构建定义")
@Permission("project_build_definition_create")
List<BuildDefinition> cloneBuildDefinitions(@MultiRequestBody @ApiParam("构建定义ID数组,或者逗号分隔皆可") Object buildDefinitionIds,
@MultiRequestBody @ApiParam("构建定义名称前缀") String buildDefinitionNamePrefix,
@MultiRequestBody @ApiParam("标签") String labelNames) throws Exception;
/**
* 修改构建定义
*
* @param buildDefinition 构建定义
* @param componentIds 组件IDs
* @return 构建定义
* @throws Exception
*/
@PutMapping(value = "/{buildDefinitionId}")
@ApiOperation("修改构建定义")
@Permission("project_build_definition_edit")
BuildDefinition modifyBuildDefinition(@MultiRequestBody @ApiParam("构建定义") BuildDefinition buildDefinition,
@MultiRequestBody @ApiParam("组件ID") String componentIds) throws Exception;
/**
* 根据模板修改构建定义
*
* @param buildDefinitionId 构建定义ID
* @param templateId 模板ID
* @param reservedOldParams 是否保留原来的参数
* @return 构建定义
* @throws Exception
*/
@PutMapping(value = "/{buildDefinitionId}/by-template")
@ApiOperation("根据模板修改构建定义")
@Permission("project_build_definition_template_import")
BuildDefinition modifyBuildDefinitionByTemplate(
@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId,
@RequestParam(name = "templateId", required = false) @ApiParam("模板ID") String templateId,
@RequestParam(name = "reservedOldParams", required = false) @ApiParam("是否保留原来的参数") String reservedOldParams,
@MultiRequestBody @ApiParam("需要强制替换的参数名称列表,多个逗号分割") String forceReplaceParamNames) throws Exception;
/**
* 修改构建定义的默认参数值
*
* @param buildDefinitionId 构建定义ID
* @param buildParams 构建参数
* @return 构建定义
* @throws Exception
*/
@PutMapping(value = "/{buildDefinitionId}/build-params")
@ApiOperation("修改构建定义的默认参数值")
@Permission("project_build_definition_edit")
BuildDefinition modifyBuildDefinitionParams(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId,
@MultiRequestBody @ApiParam("构建参数") Map<String, String> buildParams) throws Exception;
/**
* 修改构建定义的名称
*
* @param buildDefinitionId 构建定义ID
* @param definitionName 构建名称
* @return 构建定义
* @throws Exception
*/
@PutMapping(value = "/{buildDefinitionId}/actions/modify-name")
@ApiOperation("修改构建定义的名称")
@Permission("project_build_definition_edit")
BuildDefinition modifyBuildDefinitionName(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId,
@MultiRequestBody @ApiParam("构建名称") String definitionName) throws Exception;
/**
* 批量修改构建定义的默认参数值
*
* @param buildDefinitionIds 构建定义ID数组,或者逗号分隔皆可
* @param buildParams 构建参数
* @return 数量
* @throws Exception
*/
@PutMapping(value = "/actions/batch-build-params")
@ApiOperation("批量修改构建定义的默认参数值")
@Permission("project_build_definition_edit")
int modifyBuildDefinitionsParams(@MultiRequestBody @ApiParam("构建定义ID数组,或者逗号分隔皆可") Object buildDefinitionIds,
@MultiRequestBody @ApiParam("构建定义名称被替换的段") String nameSegment,
@MultiRequestBody @ApiParam("构建定义新名称的段") String newNameSegment,
@MultiRequestBody @ApiParam("构建参数") Map<String, String> buildParams,
@MultiRequestBody @ApiParam("标签") String labelNames) throws Exception;
/**
* 打开构建定义
*
* @param buildDefinitionId 构建定义ID
* @return 构建定义
* @throws Exception
*/
@PutMapping(value = "/{buildDefinitionId}/actions/open")
@ApiOperation("打开构建定义")
@Permission("project_build_definition_open")
BuildDefinition openBuildDefinition(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId) throws Exception;
/**
* 批量打开构建定义
*
* @param buildDefinitionIds 构建定义ID数组,或者逗号分隔皆可
* @return 数量
* @throws Exception
*/
@PutMapping(value = "/actions/batch-open")
@ApiOperation("批量打开构建定义")
@Permission("project_build_definition_open")
int openBuildDefinitions(@MultiRequestBody @ApiParam("构建定义ID数组,或者逗号分隔皆可") Object buildDefinitionIds) throws Exception;
/**
* 关闭构建定义
*
* @param buildDefinitionId 构建定义ID,或者逗号分隔皆可
* @return 构建定义
* @throws Exception
*/
@PutMapping(value = "/{buildDefinitionId}/actions/close")
@ApiOperation("关闭构建定义")
@Permission("project_build_definition_close")
BuildDefinition closeBuildDefinition(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId) throws Exception;
/**
* 批量关闭构建定义
*
* @param buildDefinitionIds 构建定义ID数组
* @return 数量
* @throws Exception
*/
@PutMapping(value = "/actions/batch-close")
@ApiOperation("批量关闭构建定义")
@Permission("project_build_definition_close")
int closeBuildDefinitions(@MultiRequestBody @ApiParam("构建定义ID数组,或者逗号分隔皆可") Object buildDefinitionIds) throws Exception;
/**
* 打开构建定义自动触发
*
* @param buildDefinitionId 构建定义ID
* @return 构建定义
* @throws Exception
*/
@PutMapping(value = "/{buildDefinitionId}/actions/open-auto-trigger")
@ApiOperation("打开构建定义")
@Permission("project_build_definition_open")
BuildDefinition openBuildDefinitionAutoTrigger(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId) throws Exception;
/**
* 批量打开构建定义自动触发
*
* @param buildDefinitionIds 构建定义ID数组,或者逗号分隔皆可
* @return 数量
* @throws Exception
*/
@PutMapping(value = "/actions/batch-open-auto-trigger")
@ApiOperation("批量打开构建定义")
@Permission("project_build_definition_open")
int openBuildDefinitionAutoTriggers(@MultiRequestBody @ApiParam("构建定义ID数组,或者逗号分隔皆可") Object buildDefinitionIds) throws Exception;
/**
* 关闭构建定义自动触发
*
* @param buildDefinitionId 构建定义ID,或者逗号分隔皆可
* @return 构建定义
* @throws Exception
*/
@PutMapping(value = "/{buildDefinitionId}/actions/close-auto-trigger")
@ApiOperation("关闭构建定义")
@Permission("project_build_definition_close")
BuildDefinition closeBuildDefinitionAutoTrigger(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId) throws Exception;
/**
* 批量关闭构建定义自动触发
*
* @param buildDefinitionIds 构建定义ID数组
* @return 数量
* @throws Exception
*/
@PutMapping(value = "/actions/batch-close-auto-trigger")
@ApiOperation("批量关闭构建定义")
@Permission("project_build_definition_close")
int closeBuildDefinitionAutoTriggers(@MultiRequestBody @ApiParam("构建定义ID数组,或者逗号分隔皆可") Object buildDefinitionIds) throws Exception;
/**
* 删除构建定义
*
* @param buildDefinitionId 构建定义ID
* @return 构建定义
* @throws Exception
*/
@DeleteMapping(value = "/{buildDefinitionId}")
@ApiOperation("删除构建定义")
@Permission("project_build_definition_remove")
BuildDefinition removeBuildDefinition(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId) throws Exception;
/**
* 批量删除构建定义
*
* @param buildDefinitionIds 构建定义ID数组
* @return 构建定义
* @throws Exception
*/
@DeleteMapping(value = "/actions/batch-remove")
@ApiOperation("批量删除构建定义")
@Permission("project_build_definition_remove")
int removeBuildDefinitions(@MultiRequestBody @ApiParam("构建定义ID数组,或者逗号分隔皆可") Object buildDefinitionIds) throws Exception;
/**
* 执行构建
*
* @param buildDefinitionId 构建定义ID
* @param disableStageIds 禁用任务ID列表
* @param buildParams 构建参数
* @param buildTag 构建标签
* @param executeTime 指定的执行时间(延迟构建)
* @return 构建实例
* @throws Exception
*/
@PostMapping(value = "/{buildDefinitionId}/actions/execute")
@ApiOperation("执行构建")
@Permission("project_build_definition_execute")
BuildInstance executeBuildDefinition(
@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId,
@RequestParam(name = "disableStageIds", required = false) @ApiParam("禁用任务ID列表") String[] disableStageIds,
@MultiRequestBody @ApiParam("构建参数") Map<String, String> buildParams,
@MultiRequestBody @ApiParam("配置组信息") Map<String, String> configurationGroupInfo,
@MultiRequestBody @ApiParam("全局参数") Map<String, Object> globalData,
@RequestParam(name = "buildTag", required = false) @ApiParam("构建标签") String buildTag,
@RequestParam(name = "executeTime", required = false) @ApiParam("指定的执行时间(延迟构建):yyyy-MM-dd HH:mm:ss") String executeTime) throws Exception;
/**
* 执行构建 (通过项目编码和构建定义名称)
* @param projectCode 项目编码
* @param buildDefinitionName 构建定义名称
* @param buildParams 构建参数
* @param executeTime 指定的执行时间(延迟构建)
* @throws Exception
*/
@PostMapping(value = "/actions/execute")
@ApiOperation("执行构建")
@Permission("project_build_definition_execute")
BuildInstance executeBuildDefinitionByName(
@RequestParam(name = "projectCode", required = false) @ApiParam("项目编码") String projectCode,
@RequestParam(name = "buildDefinitionName", required = false) @ApiParam("构建定义名称") String buildDefinitionName,
@MultiRequestBody @ApiParam("构建参数") Map<String, String> buildParams,
@MultiRequestBody @ApiParam("配置组信息") Map<String, String> configurationGroupInfo,
@MultiRequestBody @ApiParam("全局参数") Map<String, Object> globalData,
@RequestParam(name = "executeTime", required = false) @ApiParam("指定的执行时间(延迟构建):yyyy-MM-dd HH:mm:ss") String executeTime) throws Exception;
/**
* 取消延迟构建
*
* @param buildDefinitionId 构建定义ID
* @throws Exception
*/
@PutMapping(value = "/{buildDefinitionId}/actions/cancel-delay-build")
@ApiOperation("取消延迟构建")
@Permission("project_build_instance_cancel")
void cancelDelayBuild(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId) throws Exception;
/**
* 取消构建
*
* @param buildDefinitionId 构建定义ID
* @param buildInstanceId 构建实例ID
* @throws Exception
*/
@PutMapping(value = "/{buildDefinitionId}/instances/{buildInstanceId}/actions/cancel")
@ApiOperation("取消构建")
@Permission("project_build_instance_cancel")
void cancelBuildDefinition(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId,
@PathVariable(name = "buildInstanceId", required = false) @ApiParam("构建实例ID") String buildInstanceId) throws Exception;
/**
* 分页查询构建实例历史
*
* @param buildDefinitionId 构建定义ID
* @param cascadeStageInstance 是否包含流水线任务实例信息
* @param pageIndex 起始页数
* @param pageSize 每页大小
* @return 构建实例历史列表
* @throws Exception
*/
@GetMapping(value = "/{buildDefinitionId}/instances")
@ApiOperation("查询构建实例历史")
PageResultList<BuildInstance> queryBuildInstances(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId,
@RequestParam(name = "cascadeStageInstance", required = false, defaultValue = "false") @ApiParam("是否包含流水线任务实例信息") boolean cascadeStageInstance,
@RequestParam(name = "pageIndex", required = false, defaultValue = "0") @ApiParam("起始页数") int pageIndex,
@RequestParam(name = "pageSize", required = false, defaultValue = "0") @ApiParam("每页大小") int pageSize) throws Exception;
/**
* 查询构建实例
*
* @param buildInstanceIds 构建实例Id集合
* @return 构建实例列表
* @throws Exception
*/
@PostMapping(value = "/instances/actions/query-by-instance-ids")
@ApiOperation("查询构建实例")
List<BuildInstance> queryBuildInstancesByInstanceId(@MultiRequestBody @ApiParam("构建实例Id集合") Object buildInstanceIds,
@RequestParam(name = "cascadeStageInstance", required = false) @ApiParam("是否包含流水线任务实例信息") boolean cascadeStageInstance) throws Exception;
/**
* 获取构建实例
*
* @param buildInstanceId 构建实例ID
* @return 构建实例
* @throws Exception
*/
@GetMapping(value = "/{buildDefinitionId}/instances/{buildInstanceId}")
@ApiOperation("获取构建实例")
BuildInstance getBuildInstance(@PathVariable(name = "buildInstanceId", required = false) @ApiParam("构建实例ID") String buildInstanceId,
@RequestParam(name = "retainDefinitionDetails", required = false) @ApiParam("保留定义详情") boolean retainDefinitionDetails) throws Exception;
/**
* 获取最新构建实例
*
* @param buildInstanceId 构建实例ID
* @return 构建实例
* @throws Exception
*/
@GetMapping(value = "/{buildDefinitionId}/actions/latest-instance")
@ApiOperation("获取最新构建实例")
BuildInstance getLatestBuildInstance(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId,
@RequestParam(name = "retainDefinitionDetails", required = false, defaultValue = "false") @ApiParam("保留定义详情") boolean retainDefinitionDetails) throws Exception;
/**
* 获取构建实例(通过projectCode、构建定义名称以及buildNumber查询单个构建实例详情)
*
* @param projectCode 项目Code
* @param definitionName 构建定义名称
* @param buildNumber 构建号
* @param pageIndex 起始页数
* @param pageSize 每页大小
* @return 构建实例
* @throws Exception
*/
@GetMapping(value = "/actions/query-instances")
@ApiOperation("获取构建实例")
PageResultList<BuildInstance> queryBuildInstancesByCode(
@RequestParam(name = "projectCode", required = false) @ApiParam("项目Code") String projectCode,
@RequestParam(name = "definitionName", required = false) @ApiParam("构建定义名称") String definitionName,
@RequestParam(name = "buildNumber", required = false) @ApiParam("构建号") String buildNumber,
@RequestParam(name = "pageIndex", required = false, defaultValue = "0") @ApiParam("起始页数")int pageIndex,
@RequestParam(name = "pageSize", required = false, defaultValue = "0") @ApiParam("每页大小")int pageSize) throws Exception;
/**
* 获取构建实例的全局数据区数据
*
* @param buildInstanceId 构建实例ID
* @return 构建实例的全局数据区数据
* @throws Exception
*/
@GetMapping(value = "/{buildDefinitionId}/instances/{buildInstanceId}/actions/global-data")
@ApiOperation("获取构建实例的全局数据区数据")
Map<String, Object> getBuildInstanceGlobalData(@PathVariable(name = "buildInstanceId", required = false) @ApiParam("构建实例ID") String buildInstanceId) throws Exception;
/**
* 重新执行构建
*
* @param buildInstanceId 构建实例ID
* @param disableStageIds 禁用任务ID列表
* @param buildParams 构建参数
* @return 构建实例
* @throws Exception
*/
@PostMapping(value = "/{buildDefinitionId}/instances/{buildInstanceId}/actions/reexecute")
@ApiOperation("重新执行构建")
@Permission("project_build_definition_execute")
BuildInstance reexecuteBuildDefinition(@PathVariable(name = "buildInstanceId", required = false) @ApiParam("构建实例ID") String buildInstanceId,
@MultiRequestBody @ApiParam("禁用任务ID列表") String disableStageIds,
@MultiRequestBody @ApiParam("构建参数") Map<String, String> buildParams) throws Exception;
/**
* 删除构建实例
*
* @param buildInstanceId 构建实例ID
* @return 构建实例
* @throws Exception
*/
@DeleteMapping(value = "/{buildDefinitionId}/instances/{buildInstanceId}")
@ApiOperation("删除构建实例")
@Permission("project_build_instance_remove")
BuildInstance removeBuildInstance(@PathVariable(name = "buildInstanceId", required = false) @ApiParam("构建实例ID") String buildInstanceId) throws Exception;
/**
* 清空构建历史
*
* @param buildDefinitionId 构建定义ID
* @return
* @throws Exception
*/
@DeleteMapping(value = "/{buildDefinitionId}/instances")
@ApiOperation("清空构建历史")
@Permission("project_build_instance_clear")
void clearBuildInstances(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId) throws Exception;
/**
* 获取构建控制台日志
*
* @param buildInstanceId 构建实例ID
* @param start 起始行数
* @return 构建控制台日志
* @throws Exception
*/
@GetMapping(value = "/{buildDefinitionId}/instances/{buildInstanceId}/consolelogs")
@ApiOperation("获取构建控制台日志")
BuildLog getBuildLog(@PathVariable(name = "buildInstanceId", required = false) @ApiParam("构建实例ID") String buildInstanceId,
@RequestParam(name = "start", required = false, defaultValue = "0") @ApiParam("起始行数") int start,
@RequestParam(name = "onlyKeyLog", required = false, defaultValue = "false") @ApiParam("只包含关键日志") boolean onlyKeyLog) throws Exception;
/**
* 获取某一个构建任务日志
*
* @param buildInstanceId 构建实例ID
* @param buildStageId 构建任务ID
* @param start 起始行数
* @return 构建任务日志
* @throws Exception
*/
@GetMapping(value = "/{buildDefinitionId}/instances/{buildInstanceId}/stagelogs")
@ApiOperation("获取某一个构建任务日志")
BuildLog getStageLog(@PathVariable(name = "buildInstanceId", required = false) @ApiParam("构建实例ID") String buildInstanceId,
@RequestParam(name = "buildStageId", required = false) @ApiParam("构建任务ID") String buildStageId,
@RequestParam(name = "start", required = false, defaultValue = "0") @ApiParam("起始行数") int start,
@RequestParam(name = "onlyKeyLog", required = false, defaultValue = "false") @ApiParam("只包含关键日志") boolean onlyKeyLog) throws Exception;
/**
* 根据构建定义ID和项目ID查询组件
* @param buildDefinitionId
* @param projectId
* @return
* @throws Exception
*/
@GetMapping(value = "/{buildDefinitionId}/components")
@ApiOperation("根据构建定义ID和项目ID查询组件")
PageResultList<Component> listComponentsByBuildDefinitionId(@PathVariable(name = "buildDefinitionId", required = false) @ApiParam("构建定义ID") String buildDefinitionId,
@RequestParam(name = "projectId", required = false) @ApiParam("项目ID") String projectId) throws Exception;
/**
* 查询组件关联的所有的构建定义 组件为空时查项目下所有构建定义
*
* @param projectId 项目ID
* @param componentId 组件ID
* @param includeClosed 包含已关闭的构建定义
* @return 构建定义列表
* @throws Exception
*/
@GetMapping(value = "/by-component")
@ApiOperation("查询组件关联的所有的构建定义")
List<BuildDefinition> queryBuildDefinitionsByComponentId(
@RequestParam(name = "projectId", required = false) @ApiParam("项目ID") String projectId,
@RequestParam(name = "componentId", required = false) @ApiParam("组件ID") String componentId,
@RequestParam(name = "includeClosed", required = false) @ApiParam("包含已关闭的") String includeClosed) throws Exception;
/**
* 查询应用关联的所有的构建定义 应用为空
* @param projectId
* 项目ID
* @param appId
* 应用ID
* @param includeClosed
* 包含已关闭的构建定义
* @return 构建定义列表
* @throws Exception
*/
@GetMapping(value = "/query-by-app")
@ApiOperation("查询应用关联的所有的构建定义")
List<BuildDefinition> queryBuildDefinitionsByAppId(
@RequestParam(name = "projectId", required = false) @ApiParam("项目ID") String projectId,
@RequestParam(name = "appId", required = false) @ApiParam("应用ID") String appId,
@RequestParam(name = "includeClosed", required = false) @ApiParam("包含已关闭的") String includeClosed) throws Exception;
}
# Java开发规范
- 代码不只是用于机器执行,更重要的是要给人看的。
- 命名规范
- 所有命名一定要通俗易懂,宁可长一点。
- 项目命名规范:一般是系统名-子系统名[-模块名]
- 包命名规范:固定前缀. 系统名 . 子系统名 . [ 模块名 ] .[ 子模块名 ].[代码类型]
- 固定前缀: 比如:com.gdrcu.itamp
- 代码类型:
- api:api接口
- spi:spi接口
- impl:实现接口
- model:模型
- exception:异常定义
- constant:常量定义
- util:工具类
- extension:扩展
- controller:rest对外接口及实现
- service:业务逻辑接口及实现
- dao:数据库模型操作
- 类命名规范:有意义的英文名词,接口一般以I为前缀,工具类一般以Util为后缀
- 方法命名规范:动宾结构。
- controller/service前缀: get(query)/create/remove/modify, get返回的是单个实体,query返回的是List或者Array;如果是其他业务,可以是使用其他更有意义的名字;
- dao前缀: get(query)/insert/delete/update, get返回的是单个实体,query返回的是List或者Array
- controller:方法不允许重名
- 代码文件规范
- 全部文件必须使用UTF-8编码
- 文件名不允许使用中文字符
- 文件名不允许使用空格,目录不允许大写
- 代码一定要统一格式化,要注意可阅读性
- 注释规范
- Class必须有注释说明(JavaDoc)
- 对外API的方法必须有注释说明(JavaDoc),参数也要说明
- restApI必须要有swagger注解
- Public方法建议有注释说明(JavaDoc)
- 关键复杂算法,一定要有注释说明
- 日志规范
- error 出错时,除了堆栈信息外的一些参数需要在此加入
- 不允许使用system.out,e.printStackTrace记录日志
- 异常规范
- 如果不知道如何处理异常,不要捕获异常
- 如果捕获异常,一定要记录异常日志信息,或者转译异常(一定要带着原始异常)
- 单元测试
- 类名:单元测试XXXTestCase,比如:UserTestCase
- 方法名:testXXX前缀,比如:testUser
- assertXXX,正向判断
- 可重复执行(增删改查,还原系统)
- 测试最外层即可(因为覆盖率很重要),比如controller;除非测试不到
- 代码提交日志规范
- TASK:完成JIRA系统中的任务 示例:TASK:12345,EPP部署
- BUG:修改BUG系统中的BUG
- Review:修改代码评审发现的缺陷
- Update:修改了XXX功能,或者新增了XXX,或者删除了XXXX,或者重构了XXX
- 禁止强推(git push -f)或者其他工具,比如eclipse
# 数据库规范
- 命名
- 总体
- 全部大写,一般不区分大小写
- 不能太长,不超过30个字符,如果超长,必须缩写
- 有意义的英文单词
- 不能有空格
- 不能使用中文
- 不建议使用中文拼音
- 一般没有阿拉伯数字
- 使用下划线连接
- 表名:系统名称缩写_对象名称,示例:DPS_DEPLOY_DESIGN,DPS_USER
- 列名:有意义的英文单词,示例:ORG_ID,ORG_CODE,ORG_NAME,CREATE_TIME,IS_EDITABLE,USER_NAME, PASSWORD等
- 值:不建议大写、缩写。建议小写,中杠分隔。
- 总体
- 列类型
- 一个表一般都要有主键(除了关联表之外),主键一般是数字构成,即使是varchar类型(主键是给计算机用的)
- varchar类型,一定要设置合适的长度
- 时间类型,一定要选取合适类型,有的只有日期,有的只有时间,有的全有,比如date,time,timestamp
- 表设计时,注意增加扩展列的可能性,考虑一定的冗余