# 提测流程配置
# 提测演示流程加载到示例项目中的配置流程
本文中所用到的介质如需获取请发邮件到cservice@primeton.com邮箱申请。邮件申请格式: 1.项目编号: 2.项目名称: 3.最终客户: 4.普元销售: 5.合同内部编号: 6.申请产品名称及原由:
一、通过postman导入提测流程工作流模板
将【postman-模板导入导出接口】文件夹内的【devops-config-export-import.postman_collection.json】导入postman软件
使用postman调用import-platform-data接口
importType参数一定要传part。(传all将会覆盖原有工作项配置!)
body》form-data》选择【提测流程json模板】文件夹内json文件(如DevOpsPlatformData_20231031154700.json)
二、配置项目模板选用该提测流程工作项方案
平台管理》模板管理》项目模板
克隆一个默认项目模板,将工作项方案改为【带提测流程的工作项方案】
在项目管理中新建一个项目,选用新建的项目模板。
# 提测演示流程内容说明
此处仅对工作流注意事项额外说明,详情流程参考【提测流程.xlsx】提测流程设计表格。
一、工作流部分说明
故事工作流中 【待测试,测试中,验证通过】状态可以根据对应提测工作流状态变化而同步流转。
提测工作流中 提测选取的故事工作项范围为【待测试,测试中,验证通过】状态的工作项。
规划的测试用例范围为选取的故事关联的测试用例范围,为了能正常选取,请完成测试用例的创建。
完成测试用例的规划时,会自动创建一个对应的测试计划。
开始测试时,会将测试计划置为进行中。
二、其他说明
故事和提测类型工作项的创建编辑添加了角色权限限制,请查看工作流配置按需修改。
该模板不包含泳道的配置,请自行配置泳道。
# 制品晋级流程配置
# 制品晋级演示流程加载到示例项目中的配置流程
本文中所用到的介质如需获取请发邮件到cservice@primeton.com邮箱申请。邮件申请格式: 1.项目编号: 2.项目名称: 3.最终客户: 4.普元销售: 5.合同内部编号: 6.申请产品名称及原由:
一、通过postman导入制品晋级工作流模板
将【postman-模板导入导出接口】文件夹内的【devops-config-export-import.postman_collection.json】导入postman软件
使用postman调用import-platform-data接口
importType参数一定要传part。(传all将会覆盖原有工作项配置!)
body》form-data》选择【制品晋级json模板】文件夹内json文件(如DevOpsPlatformData_20231122163245.json)
二、配置项目模板选用该制品晋级工作项方案
平台管理》模板管理》项目模板
克隆一个默认项目模板,将工作项方案改为【带制品晋级的工作项方案】
在项目管理中新建一个项目,选用新建的项目模板。
三、关联介质库
制品晋级工作项流程需要保证项目关联了一个测试库,一个投产库。
四、配置制品晋级流水线
执行本章结尾的sql,可以生成一个平台级制品晋级nexus库模板。
创建一个流水线,选择该模板即可获得一个制品晋级流水线,需要确保流水线命名中带有制品晋级,才能保证制品晋级任务可以选择到该流水线。
# 制品晋级演示流程内容说明
详情流程参考【制品晋级.xlsx】制品晋级设计表格。
一、制品晋级工作项流程说明
创建制品晋级类型工作项
选择需要制品晋级的源介质库
保证库中有介质
选择投产库执行晋级,并选择需要执行的制品晋级流水线
在工作项流转时会自动调用该流水线并传入对应参数
根据流水线执行结果,自行完成制品晋级工作项的确认或回退。
制品晋级nexus库模板sql
INSERT INTO dps_template(TEMPLATE_ID, TEMPLATE_TYPE, TEMPLATE_SCOPE, SCOPE_TARGET_ID, TEMPLATE_NAME, DESCRIPTION, TEMPLATE_CONTENT, VIEW_INFO, DEL_FLAG, CREATE_USER, CREATE_TIME, UPDATE_USER, UPDATE_TIME, ARTIFACT_TYPE, TECHNOLOGY_TYPE, BUILD_TYPE, COMPONENT_TYPE)
VALUES ('product-promotion-nexus-export', 'build-definition', 'PLATFORM', NULL, '制品晋级-nexus-export', NULL, '{\"definitionId\":\"2481\",\"definitionName\":\"demojar制品晋级-nexus\",\"pipelineId\":\"4321\",\"projectId\":\"1121\",\"templateId\":null,\"description\":null,\"retention\":\"{\\\"maxSuccessCount\\\":10,\\\"maxFailCount\\\":5}\",\"variableDefine\":\"[{\\\"value\\\":\\\"983\\\",\\\"description\\\":\\\"源制品仓库\\\",\\\"asParameter\\\":1,\\\"name\\\":\\\"sourceArtifactRepositoryId\\\",\\\"type\\\":\\\"artifactRepo\\\",\\\"label\\\":null,\\\"enumSetting\\\":{\\\"data\\\":[{\\\"label\\\":\\\"男\\\",\\\"value\\\":\\\"man\\\"},{\\\"value\\\":\\\"woman\\\"},\\\"girl\\\"],\\\"multiSelect\\\":false},\\\"isEdit\\\":false,\\\"dataIndex\\\":0},{\\\"value\\\":\\\"/20231024\\\",\\\"description\\\":\\\"源路径\\\",\\\"asParameter\\\":1,\\\"name\\\":\\\"sourcePath\\\",\\\"type\\\":\\\"variable\\\",\\\"label\\\":null,\\\"enumSetting\\\":{\\\"data\\\":[{\\\"label\\\":\\\"男\\\",\\\"value\\\":\\\"man\\\"},{\\\"value\\\":\\\"woman\\\"},\\\"girl\\\"],\\\"multiSelect\\\":false},\\\"isEdit\\\":false,\\\"dataIndex\\\":1},{\\\"value\\\":null,\\\"description\\\":\\\"includes\\\",\\\"asParameter\\\":1,\\\"name\\\":\\\"includes\\\",\\\"type\\\":\\\"variable\\\",\\\"label\\\":null,\\\"enumSetting\\\":{\\\"data\\\":[{\\\"label\\\":\\\"男\\\",\\\"value\\\":\\\"man\\\"},{\\\"value\\\":\\\"woman\\\"},\\\"girl\\\"],\\\"multiSelect\\\":false},\\\"isEdit\\\":false,\\\"dataIndex\\\":2},{\\\"value\\\":null,\\\"description\\\":\\\"excludes\\\",\\\"asParameter\\\":1,\\\"name\\\":\\\"excludes\\\",\\\"type\\\":\\\"variable\\\",\\\"label\\\":null,\\\"enumSetting\\\":{\\\"data\\\":[{\\\"label\\\":\\\"男\\\",\\\"value\\\":\\\"man\\\"},{\\\"value\\\":\\\"woman\\\"},\\\"girl\\\"],\\\"multiSelect\\\":false},\\\"isEdit\\\":false,\\\"dataIndex\\\":3},{\\\"value\\\":\\\"941\\\",\\\"description\\\":\\\"目标制品仓库\\\",\\\"asParameter\\\":1,\\\"name\\\":\\\"targetArtifactRepositoryId\\\",\\\"type\\\":\\\"artifactRepo\\\",\\\"label\\\":null,\\\"enumSetting\\\":{\\\"data\\\":[{\\\"label\\\":\\\"男\\\",\\\"value\\\":\\\"man\\\"},{\\\"value\\\":\\\"woman\\\"},\\\"girl\\\"],\\\"multiSelect\\\":false},\\\"isEdit\\\":false,\\\"dataIndex\\\":4}]\",\"timeoutScope\":0,\"successCallback\":null,\"failCallback\":null,\"successCallbackScript\":null,\"failCallbackScript\":null,\"delFlag\":\"0\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-17 10:17:45\",\"updateUser\":\"yanggy\",\"updateTime\":\"2023-10-19 18:12:35\",\"enginePipeline\":{\"pipelineId\":\"4321\",\"pipelineName\":\"demojar制品晋级-nexus-1121\",\"projectId\":\"1121\",\"description\":null,\"stageIds\":\"4721\",\"engineId\":null,\"engineNode\":null,\"envType\":null,\"everyNewJob\":null,\"autoDeleteJob\":null,\"customGroovyTemplateIds\":null,\"estimatedDuration\":10939,\"extension\":\"{\\\"notifyOnlyIfFailed\\\":false}\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-17 10:17:45\",\"updateUser\":\"yanggy\",\"updateTime\":\"2023-10-24 11:37:23\",\"engineContainer\":null,\"targetRunInfo\":{\"runInfoId\":\"engine-pipeline:4321\",\"targetType\":\"engine-pipeline\",\"targetId\":\"4321\",\"latestInstanceId\":\"9281\",\"theState\":null,\"theTime\":null,\"theCount\":0,\"theDetails\":null,\"extend\":null,\"latestInstance\":{\"pipelineInstanceId\":\"9281\",\"projectId\":\"1121\",\"pipelineId\":\"4321\",\"pipelineName\":\"demojar制品晋级-nexus-1121\",\"everyNewJob\":\"true\",\"autoDeleteJob\":\"true\",\"instanceStatus\":\"success\",\"systemType\":\"3\",\"pipelineType\":\"build\",\"engineId\":\"2\",\"engineJobName\":\"build-1121-DEMOPROJECT1016-demojar制品晋级-nexus-4321-9281\",\"engineBuildNumber\":1,\"pipelineParams\":null,\"pipelineHandlers\":null,\"beginTime\":\"2023-10-24 12:12:08\",\"endTime\":\"2023-10-24 12:12:18\",\"estimatedDuration\":10939,\"pipelineDuration\":10939,\"globalData\":null,\"approvalRegex\":null,\"detailsDelFlag\":\"0\",\"delFlag\":\"0\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-24 11:36:55\",\"updateUser\":\"yanggy\",\"updateTime\":\"2023-10-24 11:37:18\",\"pipelineProgress\":1,\"enginePipeline\":null,\"enginePipelineInstanceDetails\":null,\"engineStageInstances\":[{\"stageInstanceId\":\"12141\",\"stageName\":\"1:Nexus制品晋级\",\"projectId\":\"1121\",\"pipelineInstanceId\":\"9281\",\"pipelineId\":\"4321\",\"stageTpId\":\"119\",\"stageTpIcon\":\"/static/images/component_logo/nexus-artifacts-promotion.svg\",\"stageId\":\"4721\",\"stageRunMode\":\"serial\",\"beginTime\":\"2023-10-24 12:12:08\",\"endTime\":\"2023-10-24 12:12:18\",\"instanceStatus\":\"success\",\"estimatedDuration\":10887,\"stageDuration\":10887,\"stageResult\":null,\"sort\":1,\"delFlag\":\"0\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-24 11:36:55\",\"updateUser\":\"yanggy\",\"updateTime\":\"2023-10-24 11:37:18\",\"stageProgress\":1,\"nodeName\":\"master\",\"stageDisable\":\"\",\"engineStage\":null,\"stageResultObj\":null}],\"pipelineResultObj\":null}},\"engineStages\":[{\"stageId\":\"4721\",\"stageName\":\"Nexus制品晋级\",\"projectId\":\"1121\",\"pipelineId\":\"4321\",\"estimatedDuration\":10887,\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":\"yanggy\",\"updateTime\":\"2023-10-24 11:37:23\",\"stageRunMode\":\"serial\",\"stageDisable\":\"\",\"engineStageAttributes\":[{\"attrId\":\"136210\",\"stageId\":\"4721\",\"attrValue\":\"\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"disable\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"01\",\"attrDefName\":\"disable\",\"attrDefLabel\":\"禁用\",\"stageTpId\":\"all-common\",\"sort\":1,\"category\":\"10:高级\",\"isRequired\":false,\"tip\":\"设置为true则跳过此步骤\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136220\",\"stageId\":\"4721\",\"attrValue\":null,\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"failedContinue\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"02\",\"attrDefName\":\"failedContinue\",\"attrDefLabel\":\"失败后继续运行\",\"stageTpId\":\"all-common\",\"sort\":1,\"category\":\"11:高级(失败)\",\"isRequired\":false,\"tip\":\"该任务失败任然执行后续任务,不会中断\",\"defaultValue\":null,\"controlType\":\"checkbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136221\",\"stageId\":\"4721\",\"attrValue\":\"\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"failedCallback\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"021\",\"attrDefName\":\"failedCallback\",\"attrDefLabel\":\"失败回调\",\"stageTpId\":\"all-common\",\"sort\":2,\"category\":\"11:高级(失败)\",\"isRequired\":false,\"tip\":\"任务失败后调用其它构建定义\",\"defaultValue\":null,\"controlType\":\"combobox\",\"valueProvider\":\"{\\\"url\\\":\\\"api/ci/builddefs?projectId=:projectId\\\",\\\"textField\\\":\\\"definitionName\\\",\\\"valueField\\\":\\\"definitionId\\\",\\\"value\\\":\\\"\\\", \\\"multiSelect\\\":false}\",\"options\":\"{\\\"needClean\\\": \\\"true\\\"}\",\"checkPolicy\":null}},{\"attrId\":\"136212\",\"stageId\":\"4721\",\"attrValue\":\"serial\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"runMode\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"03\",\"attrDefName\":\"runMode\",\"attrDefLabel\":\"运行模式\",\"stageTpId\":\"all-common\",\"sort\":3,\"category\":\"10:高级\",\"isRequired\":false,\"tip\":\"流水线任务运行模式,有串行,并行,异步三种模式\",\"defaultValue\":\"serial\",\"controlType\":\"dict\",\"valueProvider\":\"{\\\"type\\\":\\\"dictcombobox\\\",\\\"dictTypeId\\\":\\\"DPS_ENGINE_STAGE_RUN_MODE\\\"}\",\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136213\",\"stageId\":\"4721\",\"attrValue\":\"\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"nodeLabel\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"04\",\"attrDefName\":\"nodeLabel\",\"attrDefLabel\":\"节点\",\"stageTpId\":\"all-common\",\"sort\":4,\"category\":\"10:高级\",\"isRequired\":false,\"tip\":\"指定引擎中的执行节点,配置为节点名称或label\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136215\",\"stageId\":\"4721\",\"attrValue\":\"\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"exportGlobal\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"05\",\"attrDefName\":\"exportGlobal\",\"attrDefLabel\":\"属性导出\",\"stageTpId\":\"all-common\",\"sort\":6,\"category\":\"10:高级\",\"isRequired\":false,\"tip\":\"把属性导出到global数据区,{属性名}|{变量名},多个逗号分隔\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136211\",\"stageId\":\"4721\",\"attrValue\":\"\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"stageTimeout\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"07\",\"attrDefName\":\"stageTimeout\",\"attrDefLabel\":\"超时时间(秒)\",\"stageTpId\":\"all-common\",\"sort\":2,\"category\":\"10:高级\",\"isRequired\":false,\"tip\":\"该步骤执行时间超过设置时间则失败\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136222\",\"stageId\":\"4721\",\"attrValue\":\"\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"cycleExpression\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"08\",\"attrDefName\":\"cycleExpression\",\"attrDefLabel\":\"循环执行表达式\",\"stageTpId\":\"all-common\",\"sort\":1,\"category\":\"15:高级(循环)\",\"isRequired\":false,\"tip\":\"循环执行表达式值为true时循环执行\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136223\",\"stageId\":\"4721\",\"attrValue\":\"\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"maxCycleExecuteCount\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"09\",\"attrDefName\":\"maxCycleExecuteCount\",\"attrDefLabel\":\"最大循环执行次数\",\"stageTpId\":\"all-common\",\"sort\":2,\"category\":\"15:高级(循环)\",\"isRequired\":false,\"tip\":\"循环执行表达式不为空时有用,默认100\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136224\",\"stageId\":\"4721\",\"attrValue\":\"\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"cycleInterval\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"10\",\"attrDefName\":\"cycleInterval\",\"attrDefLabel\":\"循环执行间隔(秒)\",\"stageTpId\":\"all-common\",\"sort\":3,\"category\":\"15:高级(循环)\",\"isRequired\":false,\"tip\":null,\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136225\",\"stageId\":\"4721\",\"attrValue\":\"\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"cycleItems\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"11\",\"attrDefName\":\"cycleItems\",\"attrDefLabel\":\"循环对象\",\"stageTpId\":\"all-common\",\"sort\":4,\"category\":\"15:高级(循环)\",\"isRequired\":false,\"tip\":\"循环对象必须是一个数组、collection或者Map类型的值,可以使用${cycleItem}获取循环单个元素\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136205\",\"stageId\":\"4721\",\"attrValue\":\"${sourceArtifactRepositoryId}\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"sourceArtifactRepositoryId\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"119001\",\"attrDefName\":\"sourceArtifactRepositoryId\",\"attrDefLabel\":\"源制品仓库\",\"stageTpId\":\"119\",\"sort\":1,\"category\":\"1:基本信息\",\"isRequired\":true,\"tip\":null,\"defaultValue\":null,\"controlType\":\"combobox\",\"valueProvider\":\"{\\\"url\\\":\\\"api/ci/artifact-repos?projectId=:projectId&envType=:envType&systemCategory=nexus\\\",\\\"textField\\\":\\\"repoName,repoUrl\\\",\\\"valueField\\\":\\\"repoId\\\",\\\"value\\\":\\\"\\\", \\\"multiSelect\\\":false}\",\"options\":\"{\\\"needClean\\\": \\\"true\\\"}\",\"checkPolicy\":null}},{\"attrId\":\"136206\",\"stageId\":\"4721\",\"attrValue\":\"${sourcePath}\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"sourcePath\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"119002\",\"attrDefName\":\"sourcePath\",\"attrDefLabel\":\"源路径\",\"stageTpId\":\"119\",\"sort\":2,\"category\":\"1:基本信息\",\"isRequired\":false,\"tip\":\"同步的是源路径下的制品,如果不配置,默认是根路径\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136207\",\"stageId\":\"4721\",\"attrValue\":\"${includes}\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"includes\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"119003\",\"attrDefName\":\"includes\",\"attrDefLabel\":\"includes\",\"stageTpId\":\"119\",\"sort\":3,\"category\":\"1:基本信息\",\"isRequired\":false,\"tip\":\"包含的匹配策略,多个用逗号分隔\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136208\",\"stageId\":\"4721\",\"attrValue\":\"${excludes}\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"excludes\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"119004\",\"attrDefName\":\"excludes\",\"attrDefLabel\":\"excludes\",\"stageTpId\":\"119\",\"sort\":4,\"category\":\"1:基本信息\",\"isRequired\":false,\"tip\":\"排除的匹配策略,多个用逗号分隔\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136209\",\"stageId\":\"4721\",\"attrValue\":\"${targetArtifactRepositoryId}\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"targetArtifactRepositoryId\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"119005\",\"attrDefName\":\"targetArtifactRepositoryId\",\"attrDefLabel\":\"目标制品仓库\",\"stageTpId\":\"119\",\"sort\":5,\"category\":\"1:基本信息\",\"isRequired\":true,\"tip\":null,\"defaultValue\":null,\"controlType\":\"combobox\",\"valueProvider\":\"{\\\"url\\\":\\\"api/ci/artifact-repos?projectId=:projectId&envType=:envType&systemCategory=nexus\\\",\\\"textField\\\":\\\"repoName,repoUrl\\\",\\\"valueField\\\":\\\"repoId\\\",\\\"value\\\":\\\"\\\", \\\"multiSelect\\\":false}\",\"options\":\"{\\\"needClean\\\": \\\"true\\\"}\",\"checkPolicy\":null}},{\"attrId\":\"136216\",\"stageId\":\"4721\",\"attrValue\":null,\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"stageBeforeScript\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"14\",\"attrDefName\":\"stageBeforeScript\",\"attrDefLabel\":\"前置脚本\",\"stageTpId\":\"all-common\",\"sort\":7,\"category\":\"10:高级(前后置脚本)\",\"isRequired\":false,\"tip\":\"任务执行前置脚本\",\"defaultValue\":null,\"controlType\":\"editor\",\"valueProvider\":\"{\\\"type\\\":\\\"groovy\\\"}\",\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136217\",\"stageId\":\"4721\",\"attrValue\":null,\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"stageAfterScript\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"15\",\"attrDefName\":\"stageAfterScript\",\"attrDefLabel\":\"后置脚本\",\"stageTpId\":\"all-common\",\"sort\":8,\"category\":\"10:高级(前后置脚本)\",\"isRequired\":false,\"tip\":\"任务执行后置脚本\",\"defaultValue\":null,\"controlType\":\"editor\",\"valueProvider\":\"{\\\"type\\\":\\\"groovy\\\"}\",\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136218\",\"stageId\":\"4721\",\"attrValue\":null,\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"stageExceptionScript\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"16\",\"attrDefName\":\"stageExceptionScript\",\"attrDefLabel\":\"异常脚本\",\"stageTpId\":\"all-common\",\"sort\":9,\"category\":\"10:高级(前后置脚本)\",\"isRequired\":false,\"tip\":\"任务执行异常脚本\",\"defaultValue\":null,\"controlType\":\"editor\",\"valueProvider\":\"{\\\"type\\\":\\\"groovy\\\"}\",\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136214\",\"stageId\":\"4721\",\"attrValue\":\"\",\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"container\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"17\",\"attrDefName\":\"container\",\"attrDefLabel\":\"容器\",\"stageTpId\":\"all-common\",\"sort\":5,\"category\":\"10:高级\",\"isRequired\":false,\"tip\":\"指定Pod Template中的容器名称\",\"defaultValue\":null,\"controlType\":\"textbox\",\"valueProvider\":null,\"options\":null,\"checkPolicy\":null}},{\"attrId\":\"136219\",\"stageId\":\"4721\",\"attrValue\":null,\"createUser\":\"yanggy\",\"createTime\":\"2023-10-19 18:12:35\",\"updateUser\":null,\"updateTime\":null,\"attrDefName\":\"stageGroovyDefineScript\",\"engineStageAttributeDefinition\":{\"attrDefId\":\"18\",\"attrDefName\":\"stageGroovyDefineScript\",\"attrDefLabel\":\"定义脚本\",\"stageTpId\":\"all-common\",\"sort\":10,\"category\":\"10:高级(前后置脚本)\",\"isRequired\":false,\"tip\":\"任务相关的定义脚本\",\"defaultValue\":null,\"controlType\":\"editor\",\"valueProvider\":\"{\\\"type\\\":\\\"groovy\\\"}\",\"options\":null,\"checkPolicy\":null}}],\"engineStageTemplate\":{\"stageTpId\":\"119\",\"stageTpName\":\"nexus-artifacts-promotion\",\"stageTpLabel\":\"Nexus制品晋级\",\"stageTpType\":\"tool\",\"stageTpTypeLabel\":\"工具\",\"stageTags\":\"build,deploy\",\"stageTpIcon\":\"/static/images/component_logo/nexus-artifacts-promotion.svg\",\"commonStageTps\":\"all-common\",\"stageHandler\":\"com.primeton.devops.ci.helper.CiResourceStageHandler\",\"estimatedDuration\":60000,\"description\":\"把Nexus一个仓库的制品晋级到另一个仓库中\",\"isHidden\":false,\"engineStageAttributeDefinitions\":[]},\"stageIndex\":1}],\"latestStatus\":\"success\",\"latestExecuteTime\":\"2023-10-24 11:36:55\",\"latestExecutor\":\"yanggy\"},\"latestStatus\":\"success\",\"latestExecuteTime\":\"2023-10-24 11:36:55\",\"latestExecutor\":\"yanggy\",\"latestBuildId\":\"6141\",\"latestBuildNumber\":\"202310241136-9281-1\",\"latestExecutorEmpName\":\"杨桂焱\",\"latestExecutorAvatar\":\"\",\"latestExecutorStatus\":\"on\",\"componentIds\":\"DEMOPROJECT1016-demoJar\",\"componentNames\":\"demoJar\",\"labels\":[{\"labelType\":\"build-definition\",\"projectId\":\"1121\",\"targetId\":\"2481\",\"labelName\":\"制品晋级\",\"labelCategory\":null,\"labelCount\":0,\"sortno\":0}],\"delayTriggerTime\":null}', NULL, '0', 'sysadmin', '2023-11-22 15:50:09', NULL, NULL, NULL, NULL, NULL, NULL);
# 其他场景配置
# 创建工作项时,添加工作项关联工作项能力
目的是在创建工作项时,可以关联单个工作项,通过创建工作项页面配置特定组件实现。
下文以默认创建工作项页面为例,加上关联工作项能力
页面json内容可以直接复制如下脚本。
{
"list": [
{
"type": "grid",
"layout": true,
"icon": "icon-grid",
"attrDefLabel": "布局器",
"columns": [
{
"span": 12,
"list": [
{
"type": "WorkitemIteration",
"icon": "el-icon-set-up",
"attrDefLabel": "所属迭代",
"attrDefName": "iterationId",
"options": {
"class": "w-100p",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"placeholder": "--",
"showLabel": true,
"labelWidth": "",
"filterable": true,
"disabled": false,
"clearable": true
},
"key": "1693298853000_28513",
"model": "WorkitemIteration_1693298853000_28513",
"rules": []
},
{
"type": "WorkitemVersion",
"icon": "el-icon-share",
"attrDefLabel": "所属版本",
"attrDefName": "versionId",
"options": {
"class": "w-100p",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"placeholder": "--",
"showLabel": true,
"labelWidth": "",
"clearable": true,
"filterable": true,
"multiple": false,
"show-not-in-version": false
},
"key": "1693298901000_71288",
"model": "WorkitemVersion_1693298901000_71288",
"rules": []
}
]
},
{
"span": 12,
"list": [
{
"type": "WorkitemModule",
"icon": "el-icon-menu",
"attrDefLabel": "所属模块",
"attrDefName": "moduleId",
"options": {
"class": "w-100p",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"placeholder": "--",
"showLabel": true,
"labelWidth": "",
"disabled": false,
"clearable": true,
"filterable": true,
"visible": ""
},
"key": "1693298881000_68784",
"model": "WorkitemModule_1693298881000_68784",
"rules": []
}
]
}
],
"options": {
"gutter": 10,
"justify": "start",
"align": "top",
"class": ""
},
"key": "1600407380000_45493",
"model": "grid_1600407380000_45493",
"rules": []
},
{
"type": "parentWorkitem",
"icon": "el-icon-s-help",
"attrDefLabel": "父工作项",
"attrDefName": "parentWorkitemId",
"options": {
"class": "w-100p",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"placeholder": "--",
"showLabel": true,
"labelWidth": "",
"disabled": false,
"clearable": true,
"valueProvider": {
"workitemTypeIds": ""
}
},
"key": "1693365048000_73845",
"model": "parentWorkitem_1693365048000_73845",
"rules": []
},
{
"type": "WorkitemRelation",
"icon": "el-icon-s-help",
"attrDefLabel": "前置工作项",
"attrDefName": "preWorkitemId",
"options": {
"class": "",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"placeholder": "--",
"showLabel": true,
"labelWidth": "",
"disabled": false,
"clearable": true,
"valueProvider": {
"workitemTypeIds": ""
}
},
"key": "1709625186000_62588",
"model": "WorkitemRelation_1691486926000_23820",
"rules": []
},
{
"type": "input",
"icon": "icon-input",
"attrDefLabel": "标题",
"attrDefName": "title",
"defaultValue": "",
"options": {
"size": "mini",
"labelWidth": "",
"showLabel": true,
"width": "100%",
"placeholder": "",
"pattern": "",
"disabled": false,
"clearable": true,
"checkRules": [],
"customCheckRules": [],
"class": "",
"style": "",
"event": "",
"required": true,
"readonly": null,
"tip": null,
"maxlength": 0,
"type": "input",
"showWordLimit": true,
"prefixIcon": "",
"suffixIcon": "",
"prepend": "",
"append": "",
"limit": null,
"dataType": "string"
},
"key": "1693298971000_32756",
"model": "input_1693298971000_32756",
"rules": []
},
{
"type": "WorkitemVersion",
"icon": "el-icon-share",
"attrDefLabel": "影响版本",
"attrDefName": "affectVersionIds",
"options": {
"class": "w-100p",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"placeholder": "--",
"showLabel": true,
"labelWidth": "",
"clearable": true,
"filterable": true,
"multiple": true,
"show-not-in-version": false
},
"key": "1693299022000_21556",
"model": "WorkitemVersion_1693299022000_21556",
"rules": []
},
{
"type": "grid",
"layout": true,
"icon": "icon-grid",
"attrDefLabel": "布局器",
"columns": [
{
"span": 12,
"list": [
{
"type": "WorkitemAssignee",
"icon": "el-icon-user",
"attrDefLabel": "责任人",
"attrDefName": "assignee",
"options": {
"class": "",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"showLabel": true,
"labelWidth": "",
"placeholder": "--",
"disabled": false,
"clearable": true
},
"key": "1693299038000_60649",
"model": "WorkitemAssignee_1693299038000_60649",
"rules": []
},
{
"type": "WorkitemEnvType",
"icon": "el-icon-s-data",
"attrDefLabel": "环境类型",
"attrDefName": "envType",
"options": {
"class": "w-100p",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"placeholder": "--",
"showLabel": true,
"labelWidth": "",
"disabled": false,
"clearable": true,
"visible": ""
},
"key": "1693299049000_44099",
"model": "WorkitemEnvType_1693299049000_44099",
"rules": []
},
{
"type": "WorkitemPriority",
"icon": "el-icon-s-opportunity",
"attrDefLabel": "优先级",
"attrDefName": "priority",
"options": {
"class": "",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"placeholder": "--",
"showLabel": true,
"labelWidth": "",
"size": "large",
"visible": "this.form.workitemType.workitemTypeId === '4' || this.form.workitemType.workitemTypeId != '5' "
},
"key": "1693299064000_60309",
"model": "WorkitemPriority_1693299064000_60309",
"rules": []
},
{
"type": "timeEstimate",
"icon": "el-icon-time",
"attrDefLabel": "预估时间",
"attrDefName": "timeEstimate",
"options": {
"class": "w-100p",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": "ex: 3w 4d 12h",
"showLabel": true,
"labelWidth": "",
"disabled": false,
"clearable": true,
"visible": ""
},
"key": "1693365065000_81091",
"model": "timeEstimate_1693365065000_81091",
"rules": []
},
{
"type": "WorkitemDatePicker",
"icon": "el-icon-time",
"attrDefLabel": "开始时间",
"attrDefName": "beginTime",
"options": {
"class": "w-100p",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"showLabel": true,
"labelWidth": "",
"disabled": false,
"showDiffDays": false,
"clearable": true
},
"key": "1693299090000_43090",
"model": "WorkitemDatePicker_1693299090000_43090",
"rules": []
},
{
"type": "dueTime",
"icon": "el-icon-time",
"attrDefLabel": "到期时间",
"attrDefName": "dueTime",
"options": {
"class": "w-100p",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"showLabel": true,
"labelWidth": "",
"disabled": false,
"clearable": true
},
"key": "1693365074000_68036",
"model": "dueTime_1693365074000_68036",
"rules": []
}
]
},
{
"span": 12,
"list": [
{
"type": "WorkitemLevel",
"icon": "el-icon-warning",
"attrDefLabel": "严重等级",
"attrDefName": "bugLevel",
"options": {
"class": "",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"placeholder": "--",
"showLabel": true,
"labelWidth": "",
"size": "large",
"visible": "this.form.workitemType.workitemTypeId === '4' || this.form.workitemType.workitemTypeId === '5' "
},
"key": "1693299120000_10118",
"model": "WorkitemLevel_1693299120000_10118",
"rules": []
},
{
"type": "WorkitemStoryDegree",
"icon": "el-icon-s-data",
"attrDefLabel": "故事点",
"attrDefName": "storyDegree",
"options": {
"class": "w-100p",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"placeholder": "--",
"showLabel": true,
"labelWidth": "",
"disabled": false,
"clearable": true,
"visible": "this.form.workitemType.workitemTypeId === '2'"
},
"key": "1693299192000_30878",
"model": "WorkitemStoryDegree_1693299192000_30878",
"rules": []
},
{
"type": "select",
"icon": "icon-select",
"attrDefLabel": "关联类型",
"attrDefName": "associationType",
"defaultValue": "",
"options": {
"size": "mini",
"labelWidth": "",
"showLabel": true,
"width": "100%",
"placeholder": "",
"pattern": "",
"disabled": false,
"clearable": true,
"checkRules": [],
"customCheckRules": [],
"class": "",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": null,
"valueProvider": {
"dictTypeId": "",
"dataSource": "remote",
"method": "get",
"params": [
{
"label": "",
"key": "allContent",
"value": "true"
}
],
"tableColumnFields": [],
"dataField": "",
"bodyParams": null,
"labelField": "sourceTypeLabel,associationTypeLabel",
"valueField": "sourceTypeLabel",
"dataFilters": [],
"url": "/api/pm/workitem-association-type",
"enumData": []
},
"multiple": false
},
"key": "1709624025000_18771",
"model": "select_1709624025000_18771",
"rules": []
},
{
"type": "WorkitemTarget",
"icon": "el-icon-s-help",
"attrDefLabel": "关联工作项",
"attrDefName": "targetWorkitemId",
"options": {
"required": false,
"placeholder": "--",
"class": "auto-hide-border w-100p",
"showLabel": true,
"labelWidth": "",
"clearable": true,
"valueProvider": {
"workitemTypeIds": ""
},
"targetworkitemRanage": "only"
},
"key": "1710914249000_52641",
"model": "WorkitemTarget_1710914249000_52641",
"rules": []
},
{
"type": "switch",
"icon": "icon-switch",
"attrDefLabel": "创建双向链接",
"attrDefName": "createReverse",
"defaultValue": true,
"options": {
"size": "mini",
"labelWidth": "",
"showLabel": true,
"width": "100%",
"placeholder": "",
"pattern": "",
"disabled": false,
"clearable": true,
"checkRules": [],
"customCheckRules": [],
"class": "",
"style": "",
"event": "",
"required": false,
"readonly": null,
"tip": "开启创建反向关联"
},
"key": "1709625392000_19458",
"model": "switch_1709625392000_19458",
"rules": []
}
]
}
],
"options": {
"gutter": 10,
"justify": "start",
"align": "top",
"class": "",
"visible": ""
},
"key": "1602234554000_51594",
"model": "grid_1602234554000_51594",
"rules": []
},
{
"type": "WorkitemUpload",
"icon": "icon-upload",
"attrDefLabel": "附件",
"attrDefName": "attachments",
"options": {
"special": true,
"showLabel": false,
"labelWidth": "",
"readonly": false,
"required": false,
"showVersionSelect": true,
"class": ""
},
"key": "1693299242000_36489",
"model": "WorkitemUpload_1693299242000_36489",
"rules": []
},
{
"type": "editor",
"icon": "icon-fuwenbenkuang",
"attrDefLabel": "描述",
"attrDefName": "description",
"options": {
"showLabel": true,
"labelWidth": "",
"defaultValue": "",
"required": false,
"readonly": false,
"width": ""
},
"key": "1693299257000_67511",
"model": "editor_1693299257000_67511",
"rules": []
},
{
"type": "editor",
"icon": "icon-fuwenbenkuang",
"attrDefLabel": "环境描述",
"attrDefName": "envDesc",
"options": {
"showLabel": true,
"labelWidth": "",
"defaultValue": "",
"required": false,
"readonly": false,
"width": ""
},
"key": "1705287386000_46354",
"model": "editor_1705287386000_46354",
"rules": []
}
],
"options": {
"labelWidth": "100px",
"labelPosition": "right",
"labelSuffix": ""
}
}
加上页面后需要通过工作项方案新建页面选择该页面,并在新建的后处理实现关联工作项信息的入库。
新建的后处理groovy脚本示例如下:
try {
// 创建工作项关联工作项信息
if (formData.targetWorkitemId != null && formData.associationType != null) {
def rWorkitemWorkitem = com.primeton.devops.specs.model.pm.RWorkitemWorkitem.FACTORY.create()
rWorkitemWorkitem.sourceWorkitemId = workitem.workitemId
rWorkitemWorkitem.associationType = formData.associationType
rWorkitemWorkitem.targetWorkitemId = formData.targetWorkitemId
rWorkitemWorkitem.createReverse = formData.createReverse==true?true:false
helper.getSpringBean("com.primeton.devops.pm.service.RWorkitemWorkitemService").createRWorkitemWorkitem(rWorkitemWorkitem)
}
} catch(Exception ex){
throw new Exception("关联工作项报错", ex)
}