From 1f4ea9850c13196b5b090d0816cb8fb7dc1c963d Mon Sep 17 00:00:00 2001 From: "mian-bin@hotmail.com" Date: Tue, 25 Mar 2025 18:14:03 +0800 Subject: [PATCH] =?UTF-8?q?v2=20=E6=8F=90=E4=BA=A4=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=EF=BC=8C=E4=BD=86=E6=98=AF=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E8=BF=90=E8=A1=8C=EF=BC=8C=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E8=A6=81=E8=BF=90=E8=A1=8C=EF=BC=8C=E6=8A=8Aci-process?= =?UTF-8?q?=E5=8D=B8=E8=BD=BDpom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/CopilotChatHistory.xml | 6 + .idea/compiler.xml | 32 ++- .idea/encodings.xml | 10 + .idea/gradle.xml | 8 + .idea/jarRepositories.xml | 10 +- .idea/misc.xml | 11 + modules/ci-commons/common-api/pom.xml | 31 +++ .../ci/common/api}/constant/BaseConstant.java | 2 +- .../api}/constant/LeafAllocConstant.java | 2 +- .../ci/common/api}/constant/OpsHeader.java | 2 +- .../ci/common/api}/enums/BkStyleEnum.java | 2 +- .../common/api}/enums/CommonStatusEnum.java | 0 .../common/api}/enums/DateIntervalEnum.java | 0 .../common/api}/enums/SubjectScopeType.java | 2 +- .../common/api}/enums/SystemModuleEnum.java | 2 +- .../ci/common/api}/enums/UserTypeEnum.java | 0 .../common/api}/functions/Preconditions.java | 2 +- .../api}/operationid/LeafAllocMapper.java | 2 +- .../api}/operationid/LeafAllocService.java | 2 +- .../operationid/LeafAllocServiceImpl.java | 2 + .../operationid/SegmentIdGeneratorImpl.java | 8 +- .../api}/operationid/entity/LeafAlloc.java | 0 .../api}/operationid/entity/Segment.java | 2 +- .../operationid/entity/SegmentBuffer.java | 3 +- .../api}/operationid/entity/Status.java | 2 +- .../src/main/resources/application.properties | 1 + .../common/api/CommonApiApplicationTests.java | 13 + modules/ci-commons/common-pipeline/.gitignore | 33 +++ modules/ci-commons/common-pipeline/pom.xml | 26 ++ .../pipeline/CommonPipelineApplication.java | 13 + .../CommonPipelineAutoConfiguration.java | 30 +++ .../pipeline/DispatchSubInfoFetcher.java | 18 ++ .../DispatchSubInfoRegisterLoader.java | 42 ++++ .../pipeline/DispatchSubTypeFetcher.java | 18 ++ .../DispatchSubTypeRegisterLoader.java | 42 ++++ .../pipeline/ElementSubTypeFetcher.java | 18 ++ .../ElementSubTypeRegisterLoader.java | 50 ++++ .../common/pipeline/EnvReplacementParser.java | 54 +++++ .../pipeline/ExprReplacementOptions.java | 34 +++ .../ci/common/pipeline/IModelTemplate.java | 31 +++ .../cd/casic/ci/common/pipeline/Model.java | 72 ++++++ .../casic/ci/common/pipeline/ModelUpdate.java | 36 +++ .../ci/common/pipeline/NameAndValue.java | 24 ++ .../pipeline/PipelineVersionWithModel.java | 55 +++++ .../PipelineVersionWithModelRequest.java | 38 +++ .../pipeline/container/AgentReuseMutex.java | 107 +++++++++ .../common/pipeline/container/Container.java | 76 ++++++ .../common/pipeline/container/MutexGroup.java | 36 +++ .../pipeline/container/NormalContainer.java | 142 +++++++++++ .../ci/common/pipeline/container/Stage.java | 105 +++++++++ .../pipeline/container/TriggerContainer.java | 110 +++++++++ .../pipeline/container/VMBuildContainer.java | 169 +++++++++++++ .../pipeline/enums/BranchVersionAction.java | 23 ++ .../pipeline/enums/BuildFormPropertyType.java | 42 ++++ .../pipeline/enums/BuildPropertyType.java | 19 ++ .../pipeline/enums/BuildRecordTimeStamp.java | 32 +++ .../pipeline/enums/BuildScriptType.java | 23 ++ .../ci/common/pipeline/enums/BuildStatus.java | 115 +++++++++ .../pipeline/enums/BuildTaskStatus.java | 21 ++ .../ci/common/pipeline/enums/CertType.java | 22 ++ .../ci/common/pipeline/enums/ChannelCode.java | 42 ++++ .../ci/common/pipeline/enums/CharsetType.java | 21 ++ .../pipeline/enums/CodePullStrategy.java | 32 +++ .../pipeline/enums/CodeTargetAction.java | 25 ++ .../pipeline/enums/ContainerMutexStatus.java | 22 ++ .../common/pipeline/enums/DependOnType.java | 28 +++ .../common/pipeline/enums/DeployStatus.java | 22 ++ .../common/pipeline/enums/DockerVersion.java | 23 ++ .../pipeline/enums/EnvControlTaskType.java | 28 +++ .../pipeline/enums/GitPullModeType.java | 21 ++ .../pipeline/enums/JobRunCondition.java | 25 ++ .../pipeline/enums/ManualReviewAction.java | 21 ++ .../enums/PipelineInstanceTypeEnum.java | 36 +++ .../pipeline/enums/PipelineStorageType.java | 27 +++ .../ci/common/pipeline/enums/Platform.java | 15 ++ .../enums/ProjectPipelineCallbackStatus.java | 15 ++ .../ci/common/pipeline/enums/SVNVersion.java | 23 ++ .../ci/common/pipeline/enums/SourceType.java | 15 ++ .../pipeline/enums/StageRunCondition.java | 18 ++ .../ci/common/pipeline/enums/StartType.java | 88 +++++++ .../ci/common/pipeline/enums/SvnDepth.java | 22 ++ .../ci/common/pipeline/enums/TclsType.java | 22 ++ .../ci/common/pipeline/enums/VMBaseOS.java | 22 ++ .../common/pipeline/enums/VMBuildResult.java | 22 ++ .../common/pipeline/enums/VersionStatus.java | 38 +++ .../pipeline/option/JobControlOption.java | 65 +++++ .../pipeline/option/MatrixControlOption.java | 54 +++++ .../pipeline/option/StageControlOption.java | 57 +++++ .../ci/common/pipeline/pojo/AtomBaseInfo.java | 40 ++++ .../pipeline/pojo/BuildContainerType.java | 19 ++ .../pipeline/pojo/BuildEnvParameters.java | 22 ++ .../pipeline/pojo/BuildFormProperty.java | 69 ++++++ .../common/pipeline/pojo/BuildFormValue.java | 22 ++ .../ci/common/pipeline/pojo/BuildNo.java | 26 ++ .../pipeline/pojo/BuildNoUpdateReq.java | 20 ++ .../pipeline/pojo/BuildParameterGroup.java | 24 ++ .../common/pipeline/pojo/BuildParameters.java | 30 +++ .../common/pipeline/pojo/DependOnConfig.java | 22 ++ .../pipeline/pojo/JobHeartbeatRequest.java | 22 ++ .../pipeline/pojo/MatrixPipelineInfo.java | 42 ++++ .../pojo/PipelineModelAndSetting.java | 24 ++ .../common/pipeline/pojo/StagePauseCheck.java | 207 ++++++++++++++++ .../pipeline/pojo/StageReviewGroup.java | 39 +++ .../pipeline/pojo/StageReviewRequest.java | 24 ++ .../pipeline/pojo/StoreInitPipelineReq.java | 24 ++ .../pipeline/pojo/StoreInitPipelineResp.java | 22 ++ .../pojo/TemplateInstanceCreateRequest.java | 44 ++++ .../src/main/resources/application.properties | 1 + .../CommonPipelineApplicationTests.java | 13 + modules/ci-commons/pom.xml | 195 +-------------- .../commonapi/constant/CommonConstants.java | 136 ----------- .../commonapi/constant/CommonMessageCode.java | 222 ------------------ .../commons/commonapi/enums/AgentStatus.java | 57 ----- .../commonapi/enums/BuildReviewType.java | 11 - .../commons/commonapi/enums/BusTypeEnum.java | 6 - .../enums/CheckoutRepositoryType.java | 24 -- .../ci/commons/commonapi/enums/CrudEnum.java | 8 - .../commons/commonapi/enums/EnumLoader.java | 41 ---- .../commons/commonapi/enums/EnumModifier.java | 8 - .../commonapi/enums/FrontendTypeEnum.java | 26 -- .../commonapi/enums/I18nSourceEnum.java | 6 - .../enums/I18nTranslateTypeEnum.java | 6 - .../ci/commons/commonapi/enums/OSType.java | 11 - .../commons/commonapi/enums/PlatformEnum.java | 36 --- .../commonapi/enums/RepositoryType.java | 15 -- .../enums/RequestChannelTypeEnum.java | 10 - .../ci/commons/commonapi/enums/ScmType.java | 1 - .../commonapi/enums/SystemModuleEnum.java | 46 ---- .../commonapi/enums/TaskStatusEnum.java | 12 - .../enums/TriggerRepositoryType.java | 25 -- .../commons/commonapi/pojo/AgentResult.java | 47 ---- .../commonapi/pojo/AtomMonitorData.java | 62 ----- .../commonapi/pojo/BuildHistoryPage.java | 42 ---- .../ci/commons/commonapi/pojo/CommonEnv.java | 26 -- .../ci/commons/commonapi/pojo/ErrorCode.java | 33 --- .../ci/commons/commonapi/pojo/ErrorInfo.java | 35 --- .../ci/commons/commonapi/pojo/ErrorType.java | 75 ------ .../commonapi/pojo/FieldLocaleInfo.java | 17 -- .../commons/commonapi/pojo/I18Variable.java | 23 -- .../commons/commonapi/pojo/I18nFieldInfo.java | 33 --- .../commons/commonapi/pojo/I18nMessage.java | 20 -- .../ci/commons/commonapi/pojo/IdValue.java | 11 - .../ci/commons/commonapi/pojo/LocaleInfo.java | 11 - .../commonapi/pojo/MessageCodeDetail.java | 26 -- .../casic/ci/commons/commonapi/pojo/OS.java | 31 --- .../pojo/OrganizationDetailInfo.java | 26 -- .../casic/ci/commons/commonapi/pojo/Page.java | 34 --- .../ci/commons/commonapi/pojo/Pagination.java | 19 -- .../pojo/PipelineAsCodeSettings.java | 11 - .../ci/commons/commonapi/pojo/Result.java | 43 ---- .../commonapi/pojo/ShardingRoutingRule.java | 30 --- .../commonapi/pojo/ShardingRuleTypeEnum.java | 8 - .../commons/commonapi/pojo/SimpleResult.java | 30 --- .../casic/ci/commons/commonapi/pojo/Zone.java | 25 -- .../pojo/agent/AgentErrorExitData.java | 39 --- .../commonapi/pojo/agent/AgentPropsInfo.java | 59 ----- .../pojo/agent/DockerInitFileInfo.java | 45 ---- .../pojo/agent/NewHeartbeatInfo.java | 120 ---------- .../pojo/agent/ThirdPartyBuildInfo.java | 27 --- .../pojo/agent/ThirdPartyDockerBuildInfo.java | 35 --- .../commonapi/pojo/agent/UpgradeItem.java | 39 --- modules/ci-environment/pom.xml | 14 +- .../ci/event/dispatcher/EventDispatcher.java | 15 ++ .../dispatcher/SampleEventDispatcher.java | 22 ++ .../cd/casic/ci/event/enums/ActionType.java | 23 ++ ...PipelineBuildStatusBroadCastEventType.java | 25 ++ .../enums/PipelineLabelChangeTypeEnum.java | 16 ++ .../java/cd/casic/ci/event/pojo/IEvent.java | 32 +++ .../event/pojo/pipeline/IPipelineEvent.java | 28 +++ .../pipeline-ci-process-api/pom.xml | 4 + .../api/process/enums/HistorySearchType.java | 18 ++ .../api/process/enums/OperationLogType.java | 57 +++++ .../api/process/enums/VariableType.java | 168 +++++++++++++ .../api/process/pojo/mq/IDispatchEvent.java | 24 ++ .../mq/PipelineAgentShutdownDemoteEvent.java | 30 +++ .../pojo/mq/PipelineAgentShutdownEvent.java | 30 +++ .../mq/PipelineAgentStartupDemoteEvent.java | 48 ++++ .../pojo/mq/PipelineAgentStartupEvent.java | 49 ++++ .../mq/PipelineBuildLessShutdownEvent.java | 26 ++ .../mq/PipelineBuildLessStartupEvent.java | 36 +++ modules/ci-worker/pom.xml | 48 ++-- modules/pom.xml | 2 + 182 files changed, 4095 insertions(+), 2042 deletions(-) create mode 100644 modules/ci-commons/common-api/pom.xml rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/constant/BaseConstant.java (87%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/constant/LeafAllocConstant.java (98%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/constant/OpsHeader.java (99%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/enums/BkStyleEnum.java (97%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/enums/CommonStatusEnum.java (100%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/enums/DateIntervalEnum.java (100%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/enums/SubjectScopeType.java (93%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/enums/SystemModuleEnum.java (97%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/enums/UserTypeEnum.java (100%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/functions/Preconditions.java (90%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/operationid/LeafAllocMapper.java (88%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/operationid/LeafAllocService.java (92%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/operationid/LeafAllocServiceImpl.java (96%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/operationid/SegmentIdGeneratorImpl.java (98%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/operationid/entity/LeafAlloc.java (100%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/operationid/entity/Segment.java (90%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/operationid/entity/SegmentBuffer.java (93%) rename modules/ci-commons/{src/main/java/cd/casic/ci/commons => common-api/src/main/java/cd/casic/ci/common/api}/operationid/entity/Status.java (76%) create mode 100644 modules/ci-commons/common-api/src/main/resources/application.properties create mode 100644 modules/ci-commons/common-api/src/test/java/cd/casic/ci/common/api/CommonApiApplicationTests.java create mode 100644 modules/ci-commons/common-pipeline/.gitignore create mode 100644 modules/ci-commons/common-pipeline/pom.xml create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/CommonPipelineApplication.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/CommonPipelineAutoConfiguration.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubInfoFetcher.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubInfoRegisterLoader.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubTypeFetcher.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubTypeRegisterLoader.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ElementSubTypeFetcher.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ElementSubTypeRegisterLoader.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/EnvReplacementParser.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ExprReplacementOptions.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/IModelTemplate.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/Model.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ModelUpdate.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/NameAndValue.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/PipelineVersionWithModel.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/PipelineVersionWithModelRequest.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/AgentReuseMutex.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/Container.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/MutexGroup.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/NormalContainer.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/Stage.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/TriggerContainer.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/VMBuildContainer.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BranchVersionAction.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildFormPropertyType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildPropertyType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildRecordTimeStamp.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildScriptType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildStatus.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildTaskStatus.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CertType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ChannelCode.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CharsetType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CodePullStrategy.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CodeTargetAction.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ContainerMutexStatus.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DependOnType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DeployStatus.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DockerVersion.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/EnvControlTaskType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/GitPullModeType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/JobRunCondition.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ManualReviewAction.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/PipelineInstanceTypeEnum.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/PipelineStorageType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/Platform.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ProjectPipelineCallbackStatus.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SVNVersion.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SourceType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/StageRunCondition.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/StartType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SvnDepth.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/TclsType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VMBaseOS.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VMBuildResult.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VersionStatus.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/JobControlOption.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/MatrixControlOption.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/StageControlOption.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/AtomBaseInfo.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildContainerType.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildEnvParameters.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormProperty.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormValue.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildNo.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildNoUpdateReq.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildParameterGroup.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildParameters.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/DependOnConfig.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/JobHeartbeatRequest.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/MatrixPipelineInfo.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/PipelineModelAndSetting.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StagePauseCheck.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StageReviewGroup.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StageReviewRequest.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StoreInitPipelineReq.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StoreInitPipelineResp.java create mode 100644 modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/TemplateInstanceCreateRequest.java create mode 100644 modules/ci-commons/common-pipeline/src/main/resources/application.properties create mode 100644 modules/ci-commons/common-pipeline/src/test/java/cd/casic/ci/common/pipeline/CommonPipelineApplicationTests.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/constant/CommonConstants.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/constant/CommonMessageCode.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/AgentStatus.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/BuildReviewType.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/BusTypeEnum.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/CheckoutRepositoryType.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/CrudEnum.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/EnumLoader.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/EnumModifier.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/FrontendTypeEnum.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/I18nSourceEnum.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/I18nTranslateTypeEnum.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/OSType.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/PlatformEnum.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/RepositoryType.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/RequestChannelTypeEnum.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/ScmType.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/SystemModuleEnum.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/TaskStatusEnum.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/TriggerRepositoryType.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/AgentResult.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/AtomMonitorData.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/BuildHistoryPage.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/CommonEnv.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorCode.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorInfo.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorType.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/FieldLocaleInfo.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18Variable.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18nFieldInfo.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18nMessage.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/IdValue.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/LocaleInfo.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/MessageCodeDetail.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/OS.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/OrganizationDetailInfo.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Page.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Pagination.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/PipelineAsCodeSettings.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Result.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ShardingRoutingRule.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ShardingRuleTypeEnum.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/SimpleResult.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Zone.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/AgentErrorExitData.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/AgentPropsInfo.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/DockerInitFileInfo.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/NewHeartbeatInfo.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/ThirdPartyBuildInfo.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/ThirdPartyDockerBuildInfo.java delete mode 100644 modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/UpgradeItem.java create mode 100644 modules/ci-event/src/main/java/cd/casic/ci/event/dispatcher/EventDispatcher.java create mode 100644 modules/ci-event/src/main/java/cd/casic/ci/event/dispatcher/SampleEventDispatcher.java create mode 100644 modules/ci-event/src/main/java/cd/casic/ci/event/enums/ActionType.java create mode 100644 modules/ci-event/src/main/java/cd/casic/ci/event/enums/PipelineBuildStatusBroadCastEventType.java create mode 100644 modules/ci-event/src/main/java/cd/casic/ci/event/enums/PipelineLabelChangeTypeEnum.java create mode 100644 modules/ci-event/src/main/java/cd/casic/ci/event/pojo/IEvent.java create mode 100644 modules/ci-event/src/main/java/cd/casic/ci/event/pojo/pipeline/IPipelineEvent.java create mode 100644 modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/HistorySearchType.java create mode 100644 modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/OperationLogType.java create mode 100644 modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/VariableType.java create mode 100644 modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/IDispatchEvent.java create mode 100644 modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentShutdownDemoteEvent.java create mode 100644 modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentShutdownEvent.java create mode 100644 modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentStartupDemoteEvent.java create mode 100644 modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentStartupEvent.java create mode 100644 modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessShutdownEvent.java create mode 100644 modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessStartupEvent.java diff --git a/.idea/CopilotChatHistory.xml b/.idea/CopilotChatHistory.xml index 2b5234c..7071cbb 100644 --- a/.idea/CopilotChatHistory.xml +++ b/.idea/CopilotChatHistory.xml @@ -3,6 +3,12 @@ + diff --git a/modules/ci-commons/common-api/pom.xml b/modules/ci-commons/common-api/pom.xml new file mode 100644 index 0000000..172c5ff --- /dev/null +++ b/modules/ci-commons/common-api/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + cd.casic.ci + ci-commons + ${revision} + ../pom.xml + + + cd.casic.ci + common-api + + ${revision} + jar + + common-api + + + + cd.casic.boot + commons + + + cd.casic.boot + spring-boot-starter-mybatis + + + + diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/constant/BaseConstant.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/constant/BaseConstant.java similarity index 87% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/constant/BaseConstant.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/constant/BaseConstant.java index 421766d..0cb1968 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/constant/BaseConstant.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/constant/BaseConstant.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.constant; +package cd.casic.ci.common.api.constant; /** * @Classname BaseConstant diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/constant/LeafAllocConstant.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/constant/LeafAllocConstant.java similarity index 98% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/constant/LeafAllocConstant.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/constant/LeafAllocConstant.java index 52e0eaf..fc1db6f 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/constant/LeafAllocConstant.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/constant/LeafAllocConstant.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.constant; +package cd.casic.ci.common.api.constant; /** * @Classname LeafAllocConstant diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/constant/OpsHeader.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/constant/OpsHeader.java similarity index 99% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/constant/OpsHeader.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/constant/OpsHeader.java index ce0ba6a..ce775ad 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/constant/OpsHeader.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/constant/OpsHeader.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.constant; +package cd.casic.ci.common.api.constant; /** diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/BkStyleEnum.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/BkStyleEnum.java similarity index 97% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/BkStyleEnum.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/BkStyleEnum.java index 0b0651d..601e4f5 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/BkStyleEnum.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/BkStyleEnum.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.enums; +package cd.casic.ci.common.api.enums; /** * @Classname StyleEnum diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/CommonStatusEnum.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/CommonStatusEnum.java similarity index 100% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/CommonStatusEnum.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/CommonStatusEnum.java diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/DateIntervalEnum.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/DateIntervalEnum.java similarity index 100% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/DateIntervalEnum.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/DateIntervalEnum.java diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/SubjectScopeType.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/SubjectScopeType.java similarity index 93% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/SubjectScopeType.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/SubjectScopeType.java index 9565c6c..b539cad 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/SubjectScopeType.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/SubjectScopeType.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.enums; +package cd.casic.ci.common.api.enums; /** diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/SystemModuleEnum.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/SystemModuleEnum.java similarity index 97% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/SystemModuleEnum.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/SystemModuleEnum.java index c42ae95..369c412 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/SystemModuleEnum.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/SystemModuleEnum.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.enums; +package cd.casic.ci.common.api.enums; /** * @author mianbin diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/UserTypeEnum.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/UserTypeEnum.java similarity index 100% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/enums/UserTypeEnum.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/enums/UserTypeEnum.java diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/functions/Preconditions.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/functions/Preconditions.java similarity index 90% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/functions/Preconditions.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/functions/Preconditions.java index d77544b..0cfadca 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/functions/Preconditions.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/functions/Preconditions.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.functions; +package cd.casic.ci.common.api.functions; import lombok.SneakyThrows; diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/LeafAllocMapper.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/LeafAllocMapper.java similarity index 88% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/LeafAllocMapper.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/LeafAllocMapper.java index 30016f8..e821b98 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/LeafAllocMapper.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/LeafAllocMapper.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.operationid; +package cd.casic.ci.common.api.operationid; import cd.casic.ci.commons.operationid.entity.LeafAlloc; import cd.casic.framework.mybatis.core.mapper.BaseMapperX; diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/LeafAllocService.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/LeafAllocService.java similarity index 92% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/LeafAllocService.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/LeafAllocService.java index 3992e60..3756aa5 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/LeafAllocService.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/LeafAllocService.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.operationid; +package cd.casic.ci.common.api.operationid; import cd.casic.ci.commons.operationid.entity.LeafAlloc; diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/LeafAllocServiceImpl.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/LeafAllocServiceImpl.java similarity index 96% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/LeafAllocServiceImpl.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/LeafAllocServiceImpl.java index 26508c6..e3d2e57 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/LeafAllocServiceImpl.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/LeafAllocServiceImpl.java @@ -1,6 +1,8 @@ package cd.casic.ci.commons.operationid; +import cd.casic.ci.common.api.operationid.LeafAllocMapper; +import cd.casic.ci.common.api.operationid.LeafAllocService; import cd.casic.ci.commons.operationid.entity.LeafAlloc; import cd.casic.framework.commons.exception.ServiceException; import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/SegmentIdGeneratorImpl.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/SegmentIdGeneratorImpl.java similarity index 98% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/SegmentIdGeneratorImpl.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/SegmentIdGeneratorImpl.java index 328c592..f20a61e 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/SegmentIdGeneratorImpl.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/SegmentIdGeneratorImpl.java @@ -1,10 +1,10 @@ -package cd.casic.ci.commons.operationid; +package cd.casic.ci.common.api.operationid; -import cd.casic.ci.commons.constant.LeafAllocConstant; +import cd.casic.ci.common.api.constant.LeafAllocConstant; +import cd.casic.ci.common.api.operationid.entity.Segment; +import cd.casic.ci.common.api.operationid.entity.SegmentBuffer; import cd.casic.ci.commons.operationid.entity.LeafAlloc; -import cd.casic.ci.commons.operationid.entity.Segment; -import cd.casic.ci.commons.operationid.entity.SegmentBuffer; import cd.casic.framework.commons.exception.ErrorCode; import cd.casic.framework.commons.exception.ServiceException; import cd.casic.framework.commons.util.generator.IdGenerator; diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/LeafAlloc.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/LeafAlloc.java similarity index 100% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/LeafAlloc.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/LeafAlloc.java diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/Segment.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/Segment.java similarity index 90% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/Segment.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/Segment.java index e41508b..8b49271 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/Segment.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/Segment.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.operationid.entity; +package cd.casic.ci.common.api.operationid.entity; import lombok.Data; diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/SegmentBuffer.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/SegmentBuffer.java similarity index 93% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/SegmentBuffer.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/SegmentBuffer.java index 286c8f3..10ec0c5 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/SegmentBuffer.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/SegmentBuffer.java @@ -1,5 +1,6 @@ -package cd.casic.ci.commons.operationid.entity; +package cd.casic.ci.common.api.operationid.entity; +import cd.casic.ci.common.api.operationid.entity.Segment; import lombok.Data; import java.util.concurrent.atomic.AtomicBoolean; diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/Status.java b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/Status.java similarity index 76% rename from modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/Status.java rename to modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/Status.java index 2bc0935..171d1c6 100644 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/operationid/entity/Status.java +++ b/modules/ci-commons/common-api/src/main/java/cd/casic/ci/common/api/operationid/entity/Status.java @@ -1,4 +1,4 @@ -package cd.casic.ci.commons.operationid.entity; +package cd.casic.ci.common.api.operationid.entity; /** * @author mianbin * @Classname Segment diff --git a/modules/ci-commons/common-api/src/main/resources/application.properties b/modules/ci-commons/common-api/src/main/resources/application.properties new file mode 100644 index 0000000..30ff097 --- /dev/null +++ b/modules/ci-commons/common-api/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=common-api diff --git a/modules/ci-commons/common-api/src/test/java/cd/casic/ci/common/api/CommonApiApplicationTests.java b/modules/ci-commons/common-api/src/test/java/cd/casic/ci/common/api/CommonApiApplicationTests.java new file mode 100644 index 0000000..7fb4513 --- /dev/null +++ b/modules/ci-commons/common-api/src/test/java/cd/casic/ci/common/api/CommonApiApplicationTests.java @@ -0,0 +1,13 @@ +package cd.casic.ci.common.api; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class CommonApiApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/modules/ci-commons/common-pipeline/.gitignore b/modules/ci-commons/common-pipeline/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/modules/ci-commons/common-pipeline/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/modules/ci-commons/common-pipeline/pom.xml b/modules/ci-commons/common-pipeline/pom.xml new file mode 100644 index 0000000..2ba0e12 --- /dev/null +++ b/modules/ci-commons/common-pipeline/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + cd.casic.ci + ci-commons + ${revision} + ../pom.xml + + + cd.casic.ci + common-pipeline + ${revision} + common-pipeline + + jar + + + + cd.casic.boot + commons + + + + diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/CommonPipelineApplication.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/CommonPipelineApplication.java new file mode 100644 index 0000000..783fd5f --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/CommonPipelineApplication.java @@ -0,0 +1,13 @@ +package cd.casic.ci.common.pipeline; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class CommonPipelineApplication { + + public static void main(String[] args) { + SpringApplication.run(CommonPipelineApplication.class, args); + } + +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/CommonPipelineAutoConfiguration.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/CommonPipelineAutoConfiguration.java new file mode 100644 index 0000000..75f6e72 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/CommonPipelineAutoConfiguration.java @@ -0,0 +1,30 @@ +package cd.casic.ci.common.pipeline; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.AutoConfigureOrder; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:CommonPipelineAutoConfiguration + * @Date:2025/03/25 17:30 + * @Filename:CommonPipelineAutoConfiguration + * @description:Todo + */ +@Configuration +@AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE) +public class CommonPipelineAutoConfiguration { + + @Autowired(required = false) + private ObjectMapper objectMapper; + + @PostConstruct + public void registerSubtypesObjectMapper() { + ElementSubTypeRegisterLoader.registerElement(objectMapper); + DispatchSubTypeRegisterLoader.registerType(); + DispatchSubInfoRegisterLoader.registerInfo(); + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubInfoFetcher.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubInfoFetcher.java new file mode 100644 index 0000000..af1297a --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubInfoFetcher.java @@ -0,0 +1,18 @@ +package cd.casic.ci.common.pipeline; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:DispatchSubInfoFetcher + * @Date:2025/03/25 17:34 + * @Filename:DispatchSubInfoFetcher + * @description:Todo + */ +public interface DispatchSubInfoFetcher { + + /** + * 返回扩展的子类 + */ + Map> jsonSubInfo(); +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubInfoRegisterLoader.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubInfoRegisterLoader.java new file mode 100644 index 0000000..951436b --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubInfoRegisterLoader.java @@ -0,0 +1,42 @@ +package cd.casic.ci.common.pipeline; + +import com.fasterxml.jackson.databind.jsontype.NamedType; +import com.fasterxml.jackson.databind.module.SimpleModule; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.LoggerFactory; + +import java.util.Map; +import java.util.ServiceLoader; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:DispatchSubInfoRegisterLoader + * @Date:2025/03/25 17:34 + * @Filename:DispatchSubInfoRegisterLoader + * @description:Todo + */ +@Slf4j +public class DispatchSubInfoRegisterLoader { + + public static void registerInfo() { + Class clazz = DispatchSubInfoFetcher.class; + ServiceLoader fetcheries = ServiceLoader.load(clazz); + + if (!fetcheries.iterator().hasNext()) { + fetcheries = ServiceLoader.load(clazz, ServiceLoader.class.getClassLoader()); + } + SimpleModule infoSubModule = new SimpleModule(); + for (DispatchSubInfoFetcher fetcher : fetcheries) { + log.info("[DISPATCH_FETCHER]| {}", fetcher.getClass()); + Map> jsonSubTypes = fetcher.jsonSubInfo(); + for (Map.Entry> entry : jsonSubTypes.entrySet()) { + infoSubModule.registerSubtypes(new NamedType(entry.getValue(), entry.getKey())); + log.info("[REGISTER_DISPATCH]|{} for {}", entry.getValue(), entry.getKey()); + } + } + + JsonUtil.registerModule(infoSubModule); + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubTypeFetcher.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubTypeFetcher.java new file mode 100644 index 0000000..d652e2c --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubTypeFetcher.java @@ -0,0 +1,18 @@ +package cd.casic.ci.common.pipeline; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:DispatchSubTypeFetcher + * @Date:2025/03/25 17:36 + * @Filename:DispatchSubTypeFetcher + * @description:Todo + */ +public interface DispatchSubTypeFetcher { + + /** + * 返回扩展的子类 + */ + Map> jsonSubTypes(); +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubTypeRegisterLoader.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubTypeRegisterLoader.java new file mode 100644 index 0000000..08ebdaa --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/DispatchSubTypeRegisterLoader.java @@ -0,0 +1,42 @@ +package cd.casic.ci.common.pipeline; + +import com.fasterxml.jackson.databind.jsontype.NamedType; +import com.fasterxml.jackson.databind.module.SimpleModule; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.LoggerFactory; + +import java.util.Map; +import java.util.ServiceLoader; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:DispatchSubTypeRegisterLoader + * @Date:2025/03/25 17:37 + * @Filename:DispatchSubTypeRegisterLoader + * @description:Todo + */ +@Slf4j +public class DispatchSubTypeRegisterLoader { + + public static void registerType() { + Class clazz = DispatchSubTypeFetcher.class; + ServiceLoader fetcheries = ServiceLoader.load(clazz); + + if (!fetcheries.iterator().hasNext()) { + fetcheries = ServiceLoader.load(clazz, ServiceLoader.class.getClassLoader()); + } + SimpleModule typeSubModule = new SimpleModule(); + for (DispatchSubTypeFetcher fetcher : fetcheries) { + log.info("[DISPATCH_FETCHER]| {}", fetcher.getClass()); + Map> jsonSubTypes = fetcher.jsonSubTypes(); + for (Map.Entry> entry : jsonSubTypes.entrySet()) { + typeSubModule.registerSubtypes(new NamedType(entry.getValue(), entry.getKey())); + log.info("[REGISTER_DISPATCH]|{} for {}", entry.getValue(), entry.getKey()); + } + } + + JsonUtil.registerModule(typeSubModule); + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ElementSubTypeFetcher.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ElementSubTypeFetcher.java new file mode 100644 index 0000000..b6e93d6 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ElementSubTypeFetcher.java @@ -0,0 +1,18 @@ +package cd.casic.ci.common.pipeline; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:ElementSubTypeFetcher + * @Date:2025/03/25 17:38 + * @Filename:ElementSubTypeFetcher + * @description:Todo + */ +public interface ElementSubTypeFetcher { + + /** + * 返回扩展的子类 + */ + Map> jsonSubTypes(); +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ElementSubTypeRegisterLoader.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ElementSubTypeRegisterLoader.java new file mode 100644 index 0000000..c3afc08 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ElementSubTypeRegisterLoader.java @@ -0,0 +1,50 @@ +package cd.casic.ci.common.pipeline; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.NamedType; +import com.fasterxml.jackson.databind.module.SimpleModule; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.LoggerFactory; + +import java.util.Map; +import java.util.ServiceLoader; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:ElementSubTypeRegisterLoader + * @Date:2025/03/25 17:38 + * @Filename:ElementSubTypeRegisterLoader + * @description:Todo + */ +@Slf4j +public class ElementSubTypeRegisterLoader { + + public static void registerElementForJsonUtil() { + registerElement(null); + } + + public static void registerElement(ObjectMapper objectMapper) { + Class clazz = ElementSubTypeFetcher.class; + ServiceLoader fetcheries = ServiceLoader.load(clazz); + + if (!fetcheries.iterator().hasNext()) { + fetcheries = ServiceLoader.load(clazz, ServiceLoader.class.getClassLoader()); + } + SimpleModule elementSubModule = new SimpleModule(); + for (ElementSubTypeFetcher fetcher : fetcheries) { + log.info("[ELEMENT_FETCHER]| {}", fetcher.getClass()); + Map> jsonSubTypes = fetcher.jsonSubTypes(); + for (Map.Entry> entry : jsonSubTypes.entrySet()) { + elementSubModule.registerSubtypes(new NamedType(entry.getValue(), entry.getKey())); + log.info("[REGISTER_MODEL_ELEMENT]|{} for {}", entry.getValue(), entry.getKey()); + } + } + JsonUtil.registerModule(elementSubModule); + if (objectMapper != null) { + objectMapper.registerModule(elementSubModule); + } + } +} + diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/EnvReplacementParser.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/EnvReplacementParser.java new file mode 100644 index 0000000..1209e6c --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/EnvReplacementParser.java @@ -0,0 +1,54 @@ +package cd.casic.ci.common.pipeline; + +import org.slf4j.LoggerFactory; + +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:EnvReplacementParser + * @Date:2025/03/25 17:38 + * @Filename:EnvReplacementParser + * @description:Todo + */ +public class EnvReplacementParser { + private static final org.slf4j.Logger logger = LoggerFactory.getLogger(EnvReplacementParser.class); + private static final Pattern expressionPattern = Pattern.compile("\\$[{]{2}([^$^{}]+)[}]{2}"); + + public static String parse(Object value, Map contextMap, Boolean onlyExpression, + Pair> contextPair, Iterable functions, + ExpressionOutput output) { + ExprReplacementOptions options = new ExprReplacementOptions(contextMap, contextPair, functions, output); + return parse(value, onlyExpression, options); + } + + public static String parse(Object value, Map contextMap, IPipelineDialect dialect, + Pair> contextPair, Iterable functions, + ExpressionOutput output) { + ExprReplacementOptions options = new ExprReplacementOptions(contextMap, contextPair, functions, output); + return parse(value, dialect.supportUseExpression(), options); + } + + public static String parse(Object value, Boolean onlyExpression, ExprReplacementOptions options) { + if (value == null) return ""; + if (onlyExpression == null || !onlyExpression) { + return JsonUtil.toJson(ObjectReplaceEnvVarUtil.replaceEnvVar(value, options.contextMap), false); + } else { + return JsonUtil.toJson(ExprReplacementUtil.replaceEnvVar(value, options), false); + } + } + + public static Pair> getCustomExecutionContextByMap(Map variables, + List extendNamedValueMap) { + return ExprReplacementUtil.getCustomExecutionContextByMap(variables, extendNamedValueMap); + } + + public static boolean containsExpressions(String value) { + if (value == null) return false; + return expressionPattern.matcher(value).find(); + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ExprReplacementOptions.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ExprReplacementOptions.java new file mode 100644 index 0000000..9b9feaa --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ExprReplacementOptions.java @@ -0,0 +1,34 @@ +package cd.casic.ci.common.pipeline; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:ExprReplacementOptions + * @Date:2025/03/25 17:39 + * @Filename:ExprReplacementOptions + * @description:Todo + */ +@Data +@Schema(title = "表达式替换参数") +public class ExprReplacementOptions { + + @Schema(title = "环境变量", required = true) + private Map contextMap; + + @Schema(title = "值是否能不存在", required = true) + private boolean contextNotNull; + + @Schema(title = "表达式上下文", required = true) + private Pair> contextPair; + + private Iterable functions; + + private ExpressionOutput output; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/IModelTemplate.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/IModelTemplate.java new file mode 100644 index 0000000..6ce042b --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/IModelTemplate.java @@ -0,0 +1,31 @@ +package cd.casic.ci.common.pipeline; + +import io.swagger.v3.oas.annotations.media.Schema; + +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:IModelTemplate + * @Date:2025/03/25 17:39 + * @Filename:IModelTemplate + * @description:Todo + */ +@Schema(title = "model中报错模板信息的扩展参数") +public interface IModelTemplate { + + @Schema(title = "模板", required = true) + String getTemplate(); + + @Schema(title = "引用", required = true) + String getRef(); + + @Schema(title = "变量", required = true) + Map getVariables(); + + default boolean fromTemplate() { + return getTemplate() != null && !getTemplate().isEmpty(); + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/Model.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/Model.java new file mode 100644 index 0000000..449be08 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/Model.java @@ -0,0 +1,72 @@ +package cd.casic.ci.common.pipeline; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:Model + * @Date:2025/03/25 17:39 + * @Filename:Model + * @description:Todo + */ +@Data +@Schema(title = "流水线模型-创建信息") +public class Model implements IModelTemplate { + @Schema(title = "名称", required = true) + private String name; + + @Schema(title = "描述", required = false) + private String desc; + + @Schema(title = "阶段集合", required = true) + private List stages; + + @Schema(title = "标签", required = false) + @Deprecated("以PipelineGroupService和流水线设置版本中为准") + private List labels; + + @Schema(title = "是否从模板中实例化出来的", required = false) + private Boolean instanceFromTemplate; + + @Schema(title = "创建人", required = false) + private String pipelineCreator; + + @Schema(title = "当前模板对应的被复制的模板或安装的研发商店的模板对应的ID", required = false) + private String srcTemplateId; + + @Schema(title = "当前模板的ID", required = false) + private String templateId; + + @Schema(title = "提示", required = false) + private String tips; + + @Schema(title = "流水线事件回调", required = false) + private Map events; + + @Schema(title = "静态流水线组", required = false) + private List staticViews; + + @Schema(title = "各项耗时", required = true) + private BuildRecordTimeCost timeCost; + + @Schema(title = "模板地址", required = true) + private String template; + + @Schema(title = "模板版本", required = true) + private String ref; + + @Schema(title = "模板入参", required = true) + private Map variables; + + @Schema(title = "模板资源", required = true) + private Resources resources; + + @Schema(title = "提交时流水线最新版本号", required = false) + private int latestVersion; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ModelUpdate.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ModelUpdate.java new file mode 100644 index 0000000..c7daec5 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ModelUpdate.java @@ -0,0 +1,36 @@ +package cd.casic.ci.common.pipeline; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:ModelUpdate + * @Date:2025/03/25 17:40 + * @Filename:ModelUpdate + * @description:Todo + */ +@Data +@Schema(title = "流水线更新信息") +public class ModelUpdate { + + @Schema(title = "项目id", required = true) + private String projectId; + + @Schema(title = "流水线id", required = true) + private String pipelineId; + + @Schema(title = "名称", required = true) + private String name; + + @Schema(title = "更新人", required = true) + private String updateUserId; + + @Schema(title = "更新结果信息", required = false) + private String updateResultMessage; + + @Schema(title = "更新结果", required = true) + private boolean updateResult; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/NameAndValue.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/NameAndValue.java new file mode 100644 index 0000000..bdf90ae --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/NameAndValue.java @@ -0,0 +1,24 @@ +package cd.casic.ci.common.pipeline; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:NameAndValue + * @Date:2025/03/25 17:40 + * @Filename:NameAndValue + * @description:Todo + */ +@Data +@Schema(title = "名称和值") +public class NameAndValue { + + @Schema(title = "名称", required = true) + private String key; + + @Schema(title = "值", required = false) + private String value; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/PipelineVersionWithModel.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/PipelineVersionWithModel.java new file mode 100644 index 0000000..4c946d3 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/PipelineVersionWithModel.java @@ -0,0 +1,55 @@ +package cd.casic.ci.common.pipeline; + +import cd.casic.ci.common.pipeline.pojo.PipelineModelAndSetting; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:PipelineVersionWithModel + * @Date:2025/03/25 17:40 + * @Filename:PipelineVersionWithModel + * @description:Todo + */ +@Data +@Schema(title = "流水线版本与模型") +public class PipelineVersionWithModel { + + @Schema(title = "版本号(流水线唯一递增)", required = true) + private int version; + + @Schema(title = "版本名称", required = true) + private String versionName; + + @Schema(title = "该版本的源版本号", required = true) + private Integer baseVersion; + + @Schema(title = "该版本的版本号名", required = true) + private String baseVersionName; + + @Schema(title = "流水线模型", required = true) + private PipelineModelAndSetting modelAndSetting; + + @Schema(title = "流水线YAML编排(含高亮)", required = false) + private PreviewResponse yamlPreview; + + @Schema(title = "是否处在可以调试状态", required = false) + private Boolean canDebug; + + @Schema(title = "版本变更说明", required = false) + private String description; + + @Schema(title = "是否支持YAML解析", required = true) + private boolean yamlSupported; + + @Schema(title = "YAML解析异常信息") + private String yamlInvalidMsg; + + @Schema(title = "更新操作人", required = true) + private String updater; + + @Schema(title = "版本修改时间", required = true) + private Long updateTime; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/PipelineVersionWithModelRequest.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/PipelineVersionWithModelRequest.java new file mode 100644 index 0000000..07b79e2 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/PipelineVersionWithModelRequest.java @@ -0,0 +1,38 @@ +package cd.casic.ci.common.pipeline; + +import cd.casic.ci.common.pipeline.enums.PipelineStorageType; +import cd.casic.ci.common.pipeline.pojo.PipelineModelAndSetting; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline + * @Project:ops-pro + * @name:PipelineVersionWithModelRequest + * @Date:2025/03/25 17:41 + * @Filename:PipelineVersionWithModelRequest + * @description:Todo + */ +@Data +@Schema(title = "流水线版本与模型请求") +public class PipelineVersionWithModelRequest { + + @Schema(title = "流水线ID(为空时导入并创建流水线)", required = false) + private String pipelineId; + + @Schema(title = "草稿的来源版本(前端保存时传递)", required = true) + private int baseVersion; + + @Schema(title = "流水线模型", required = true) + private PipelineModelAndSetting modelAndSetting; + + @Schema(title = "流水线YAML编排(不为空时以YAML为准)", required = false) + private String yaml; + + @Schema(title = "存储格式", required = false) + private PipelineStorageType storageType = PipelineStorageType.MODEL; + + @Schema(title = "版本变更说明", required = false) + private String description; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/AgentReuseMutex.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/AgentReuseMutex.java new file mode 100644 index 0000000..dae7976 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/AgentReuseMutex.java @@ -0,0 +1,107 @@ +package cd.casic.ci.common.pipeline.container; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.container + * @Project:ops-pro + * @name:AgentReuseMutex + * @Date:2025/03/25 16:51 + * @Filename:AgentReuseMutex + * @description: * AgentReuseMutex 构建机复用互斥 + * * 在同一次构建中总共有五种情况 + * * 1、单个Agent节点且明确指定了使用某个Agent(AgentId或者AgentName),这种情况在item中可以直接拿到,直接进行项目级的互斥逻辑 + * * 2、单个Agent节点但使用变量指代Agent + * * 2-1、被指代的Agent节点与复用他的Job处在同一Stage下,并行执行,这时被指代的Agent与复用他的Job进行同样的变量替换, + * * 并行竞争,没有先后顺序 + * * 2-2、被指代的Agent节点与复用他的Job处在同一Stage下,串行执行(即流水线的Job依赖),这时被指代的Agent应先于复用他的Job执行, + * * 且在Var表中写入可以拿到Agent的只读变量,复用Job读取变量执行 + * * 3、Agent集群且明确指定了某个集群(集群ID或者名称),在分发到Dispatch前需要进行集群级别的互斥锁逻辑, + * * 这样可以保证同样进行互斥逻辑的集群在引擎处进行等待。 + * * 与单个Agent节点的Job关系相同,并行执行时并行竞争,串行时天然的有先后顺序,读取Var表中节点进行项目级的互斥逻辑 + * * 4、Agent集群但使用变量指代,与未进行变量指代的逻辑一致,无需特殊声明 + * * 注:如果是共享集群不受影响,依旧使用执行项目来进行锁定 + * * @param reUseJobId 如果为空说明当前job为被依赖job + * * @param agentOrEnvId agentId/agentName 或者 envId/envName 或者变量,根据 type 区分不同值 + * * @param type 复用互斥的各种类型 + * * @param endJob 是否是最后一波的Job + */ +@Data +@NoArgsConstructor +@Schema(title = "构建机复用互斥模型") +public class AgentReuseMutex { + private String jobId; + private String reUseJobId; + private String agentOrEnvId; + private AgentReuseMutexType type; + private Boolean endJob; + @Schema(title = "是否排队", required = false) + private Boolean queueEnable = true; + @Schema(title = "排队等待时间(分钟)0表示不等待直接失败", required = false) + private Integer timeout = 900; + @Schema(title = "支持变量解析的timeout,变量值非数字则会改取timeout值", required = false) + private String timeoutVar; + @Schema(title = "排队队列大小", required = false) + private Integer queue = 10; + @Schema(title = "运行时的agentOrEnvId,如果有值说明已经初始化了", required = false) + private String runtimeAgentOrEnvId; + @Schema(title = "占用锁定的信息用于日志提示", required = false) + private String linkTip; + + public static class Companion { + public static final long AGENT_LOCK_TIMEOUT = 60 * 60 * 24 * 7L; + public static final String CONTEXT_KEY_SUFFIX = ".container.agent_id"; + + public static String genAgentContextKey(String jobId) { + return "jobs." + jobId + CONTEXT_KEY_SUFFIX; + } + + public static String genAgentReuseMutexLockKey(String projectId, String agentId) { + return "lock:agent:reuse:project:" + projectId + ":agent:" + agentId + ":lock"; + } + + public static String genAgentReuseMutexQueueKey(String projectId, String agentId) { + return "lock:agent:reuse:project:" + projectId + ":agent:" + agentId + ":queue"; + } + + public static String genAgentReuseMutexLinkTipKey(String buildId) { + return "agent:reuse:linkTip:" + buildId; + } + } + + public enum AgentReuseMutexType { + AGENT_ID, + AGENT_NAME, + AGENT_ENV_ID, + AGENT_ENV_NAME, + AGENT_DEP_VAR; + + public boolean isEnvType() { + return this == AGENT_ENV_ID || this == AGENT_ENV_NAME; + } + + public boolean isAgentType() { + return this == AGENT_ID || this == AGENT_NAME; + } + + public boolean needEngineLock() { + return isAgentType(); + } + + public AgentType toAgentType() { + switch (this) { + case AGENT_ID: + case AGENT_ENV_ID: + return AgentType.ID; + case AGENT_NAME: + case AGENT_ENV_NAME: + return AgentType.NAME; + default: + return null; + } + } + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/Container.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/Container.java new file mode 100644 index 0000000..f4bb079 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/Container.java @@ -0,0 +1,76 @@ +package cd.casic.ci.common.pipeline.container; + +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.container + * @Project:ops-pro + * @name:Container + * @Date:2025/03/25 16:53 + * @Filename:Container + * @description:Todo + */ + +@Data +@Schema(title = "流水线模型-多态基类") +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@type") +@JsonSubTypes({ + @JsonSubTypes.Type(value = TriggerContainer.class, name = TriggerContainer.classType), + @JsonSubTypes.Type(value = NormalContainer.class, name = NormalContainer.classType), + @JsonSubTypes.Type(value = VMBuildContainer.class, name = VMBuildContainer.classType) +}) +public interface Container extends IModelTemplate { + String getId(); + void setId(String id); + String getName(); + void setName(String name); + List getElements(); + void setElements(List elements); + String getStatus(); + void setStatus(String status); + Long getStartEpoch(); + void setStartEpoch(Long startEpoch); + Long getSystemElapsed(); + void setSystemElapsed(Long systemElapsed); + Long getElementElapsed(); + void setElementElapsed(Long elementElapsed); + Boolean getCanRetry(); + void setCanRetry(Boolean canRetry); + String getContainerId(); + void setContainerId(String containerId); + String getContainerHashId(); + void setContainerHashId(String containerHashId); + String getStartVMStatus(); + void setStartVMStatus(String startVMStatus); + Integer getExecuteCount(); + void setExecuteCount(Integer executeCount); + String getJobId(); + void setJobId(String jobId); + Boolean getContainPostTaskFlag(); + void setContainPostTaskFlag(Boolean containPostTaskFlag); + Boolean getMatrixGroupFlag(); + void setMatrixGroupFlag(Boolean matrixGroupFlag); + BuildRecordTimeCost getTimeCost(); + void setTimeCost(BuildRecordTimeCost timeCost); + Integer getStartVMTaskSeq(); + void setStartVMTaskSeq(Integer startVMTaskSeq); + + void resetBuildOption(int executeCount); + void transformCompatibility(); + Map genTaskParams(); + String getClassType(); + Container getContainerById(String vmSeqId); + void retryFreshMatrixOption(); + List fetchGroupContainers(); + Map fetchMatrixContext(); + Boolean containerEnabled(); + void setContainerEnable(Boolean enable); +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/MutexGroup.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/MutexGroup.java new file mode 100644 index 0000000..888e92c --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/MutexGroup.java @@ -0,0 +1,36 @@ +package cd.casic.ci.common.pipeline.container; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.container + * @Project:ops-pro + * @name:MutexGroup + * @Date:2025/03/25 16:54 + * @Filename:MutexGroup + * @description:Todo + */ +@Data +@NoArgsConstructor +@Schema(title = "互斥组模型") +public class MutexGroup { + @Schema(title = "是否启用", required = false) + private Boolean enable; + @Schema(title = "互斥组名称", required = false) + private String mutexGroupName; + @Schema(title = "是否排队", required = false) + private Boolean queueEnable; + @Schema(title = "排队等待时间(分钟)0表示不等待直接失败", required = false) + private Integer timeout; + @Schema(title = "支持变量解析的timeout,变量值非数字则会改取timeout值", required = false) + private String timeoutVar; + @Schema(title = "排队队列大小", required = false) + private Integer queue; + @Schema(title = "运行时实际互斥锁名称(有值则已初始化)", required = false) + private String runtimeMutexGroup; + @Schema(title = "占用锁定的信息用于日志提示", required = false) + private String linkTip; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/NormalContainer.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/NormalContainer.java new file mode 100644 index 0000000..c575bf4 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/NormalContainer.java @@ -0,0 +1,142 @@ +package cd.casic.ci.common.pipeline.container; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.container + * @Project:ops-pro + * @name:NormalContainer + * @Date:2025/03/25 16:54 + * @Filename:NormalContainer + * @description:Todo + */ +@Data +@NoArgsConstructor +@Schema(title = "流水线模型-普通任务容器") +public class NormalContainer implements Container { + public static final String classType = "normal"; + + @Schema(title = "构建容器序号id", required = false, readOnly = true) + private String id; + @Schema(title = "容器名称", required = true) + private String name; + @Schema(title = "任务集合", required = true) + private List elements; + @Schema(title = "容器状态", required = false, readOnly = true) + private String status; + @Schema(title = "系统运行时间", required = false, readOnly = true) + @Deprecated + private Long startEpoch; + @Schema(title = "系统耗时(开机时间)", required = false, readOnly = true) + @Deprecated + private Long systemElapsed; + @Schema(title = "插件执行耗时", required = false, readOnly = true) + @Deprecated + private Long elementElapsed; + @Schema(title = "允许可跳过", required = false) + @Deprecated + private Boolean enableSkip; + @Schema(title = "触发条件", required = false) + @Deprecated + private List conditions; + @Schema(title = "是否可重试-仅限于构建详情展示重试,目前未作为编排的选项,暂设置为null不存储", required = false, readOnly = true) + private Boolean canRetry; + @Schema(title = "构建容器顺序ID(同id值)", required = false, readOnly = true) + private String containerId; + @Schema(title = "容器唯一ID", required = false, readOnly = true) + private String containerHashId; + @Schema(title = "无构建环境-等待运行环境启动的排队最长时间(分钟)", required = false) + @Deprecated + private Integer maxQueueMinutes = 60; + @Schema(title = "无构建环境-运行最长时间(分钟)", required = false) + @Deprecated + private Integer maxRunningMinutes = 1440; + @Schema(title = "流程控制选项", required = true) + private JobControlOption jobControlOption; + @Schema(title = "互斥组", required = false) + private MutexGroup mutexGroup; + @Schema(title = "构建环境启动状态", required = false, readOnly = true) + private String startVMStatus; + @Schema(title = "容器运行次数", required = false, readOnly = true) + private Integer executeCount; + @Schema(title = "用户自定义ID", required = false, hidden = false) + private String jobId; + @Schema(title = "是否包含post任务标识", required = false, readOnly = true) + private Boolean containPostTaskFlag; + @Schema(title = "是否为构建矩阵", required = false, readOnly = true) + private Boolean matrixGroupFlag; + @Schema(title = "各项耗时", required = true) + private BuildRecordTimeCost timeCost; + @Schema(title = "开机任务序号", required = false, readOnly = true) + private Integer startVMTaskSeq; + @Schema(title = "构建矩阵配置项", required = false) + private MatrixControlOption matrixControlOption; + @Schema(title = "所在构建矩阵组的containerHashId(分裂后的子容器特有字段)", required = false) + private String matrixGroupId; + @Schema(title = "当前矩阵子容器的上下文组合(分裂后的子容器特有字段)", required = false) + private Map matrixContext; + @Schema(title = "分裂后的容器集合(分裂后的父容器特有字段)", required = false) + private List groupContainers; + + @Override + public String getClassType() { + return classType; + } + + @Override + public Container getContainerById(String vmSeqId) { + if (id.equals(vmSeqId) || containerId.equals(vmSeqId)) return this; + if (groupContainers != null) { + for (Container container : groupContainers) { + if (container.getId().equals(vmSeqId) || container.getContainerId().equals(vmSeqId)) return container; + } + } + return null; + } + + @Override + public void retryFreshMatrixOption() { + groupContainers = new ArrayList<>(); + if (matrixControlOption != null) { + matrixControlOption.setFinishCount(null); + matrixControlOption.setTotalCount(null); + } + } + + @Override + public List fetchGroupContainers() { + return groupContainers != null ? new ArrayList<>(groupContainers) : null; + } + + @Override + public Map fetchMatrixContext() { + return matrixContext; + } + + @Override + public Boolean containerEnabled() { + return jobControlOption != null ? jobControlOption.getEnable() : true; + } + + @Override + public void setContainerEnable(Boolean enable) { + jobControlOption = jobControlOption != null ? jobControlOption.copy(enable) : new JobControlOption(enable); + } + + @Override + public void transformCompatibility() { + if (jobControlOption != null && jobControlOption.getTimeoutVar() == null || jobControlOption.getTimeoutVar().isBlank()) { + jobControlOption.setTimeoutVar(String.valueOf(jobControlOption.getTimeout())); + } + if (mutexGroup != null && (mutexGroup.getTimeoutVar() == null || mutexGroup.getTimeoutVar().isBlank())) { + mutexGroup.setTimeoutVar(String.valueOf(mutexGroup.getTimeout())); + } + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/Stage.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/Stage.java new file mode 100644 index 0000000..cd000fe --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/Stage.java @@ -0,0 +1,105 @@ +package cd.casic.ci.common.pipeline.container; + +import cd.casic.ci.common.pipeline.pojo.StagePauseCheck; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.container + * @Project:ops-pro + * @name:Stage + * @Date:2025/03/25 16:55 + * @Filename:Stage + * @description:Todo + */ +public class Stage { + @Data + @NoArgsConstructor + @Schema(title = "流水线模型-阶段") + public class Stage implements IModelTemplate { + @Schema(title = "容器集合", required = true) + private List containers; + @Schema(title = "阶段ID (系统标识,用户不可编辑)", required = false) + private String id; + @Schema(title = "阶段名称", required = true) + private String name; + @Schema(title = "阶段ID (用户可编辑)", required = false) + private String stageIdForUser; + @Schema(title = "阶段标签", required = false, readOnly = true) + private List tag; + @Schema(title = "阶段状态", required = false, readOnly = true) + private String status; + @Schema(title = "阶段启动时间", required = false, readOnly = true) + @Deprecated + private Long startEpoch; + @Schema(title = "容器运行时间", required = false, readOnly = true) + @Deprecated + private Long elapsed; + @Schema(title = "用户自定义环境变量", required = false) + private Map customBuildEnv; + @Schema(title = "是否启用容器失败快速终止阶段", required = false) + private Boolean fastKill; + @Schema(title = "标识是否为FinallyStage,每个Model只能包含一个FinallyStage,并且处于最后位置", required = false) + private Boolean finally; + @Schema(title = "当前Stage是否能重试", required = false) + private Boolean canRetry; + @Schema(title = "流程控制选项", required = true) + private StageControlOption stageControlOption; + @Schema(title = "stage准入配置", required = false) + private StagePauseCheck checkIn; + @Schema(title = "stage准出配置", required = false) + private StagePauseCheck checkOut; + @Schema(title = "步骤运行次数", required = false, readOnly = true) + private Integer executeCount; + @Schema(title = "各项耗时", required = true) + private BuildRecordTimeCost timeCost; + + public void resetBuildOption(Boolean init) { + if (init != null && init) { + status = null; + startEpoch = null; + elapsed = null; + } + if (checkIn != null) { + checkIn.fixReviewGroups(init != null && init); + } + if (checkOut != null) { + checkOut.fixReviewGroups(init != null && init); + } + if (stageControlOption != null && stageControlOption.getManualTrigger() && checkIn == null) { + checkIn = StagePauseCheck.convertControlOption(stageControlOption); + } + if (finally !=null && finally){ + canRetry = false; + } + } + + public Container getContainer(String vmSeqId) { + if (containers != null) { + for (Container container : containers) { + Container foundContainer = container.getContainerById(vmSeqId); + if (foundContainer != null) { + return foundContainer; + } + } + } + return null; + } + + public void transformCompatibility() { + if (containers != null) { + for (Container container : containers) { + container.transformCompatibility(); + } + } + } + + public Boolean stageEnabled() { + return stageControlOption != null ? stageControlOption.getEnable() : true; + } + } diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/TriggerContainer.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/TriggerContainer.java new file mode 100644 index 0000000..efa42d2 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/TriggerContainer.java @@ -0,0 +1,110 @@ +package cd.casic.ci.common.pipeline.container; + +import cd.casic.ci.common.pipeline.pojo.BuildFormProperty; +import cd.casic.ci.common.pipeline.pojo.BuildNo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.container + * @Project:ops-pro + * @name:TriggerContainer + * @Date:2025/03/25 16:56 + * @Filename:TriggerContainer + * @description:Todo + */ +@Data +@NoArgsConstructor +@Schema(title = "流水线模型-构建触发容器") +public class TriggerContainer implements Container { + public static final String classType = "trigger"; + + @Schema(title = "构建容器序号id", required = false, readOnly = true) + private String id; + @Schema(title = "容器名称", required = true) + private String name; + @Schema(title = "任务集合", required = true) + private List elements; + @Schema(title = "状态", required = true, readOnly = true) + private String status; + @Schema(title = "系统运行时间", required = false) + @Deprecated + private Long startEpoch; + @Schema(title = "系统耗时(开机时间)", required = false, readOnly = true) + @Deprecated + private Long systemElapsed; + @Schema(title = "插件执行耗时", required = false, readOnly = true) + @Deprecated + private Long elementElapsed; + @Schema(title = "参数化构建", required = false) + private List params; + @Schema(title = "模板参数构建", required = false) + private List templateParams; + @Schema(title = "构建版本号", required = false) + private BuildNo buildNo; + @Schema(title = "是否可重试-仅限于构建详情展示重试,目前未作为编排的选项,暂设置为null不存储", required = false, readOnly = true) + private Boolean canRetry; + @Schema(title = "构建容器顺序ID(同id值)", required = false, readOnly = true) + private String containerId; + @Schema(title = "容器唯一ID", required = false, readOnly = true) + private String containerHashId; + @Schema(title = "构建环境启动状态", required = false, readOnly = true) + private String startVMStatus; + @Schema(title = "容器运行次数", required = false, readOnly = true) + private Integer executeCount; + @Schema(title = "用户自定义ID", required = false, hidden = false) + private String jobId; + @Schema(title = "是否包含post任务标识", required = false, readOnly = true) + private Boolean containPostTaskFlag; + @Schema(title = "是否为构建矩阵", required = false, readOnly = true) + private Boolean matrixGroupFlag; + @Schema(title = "各项耗时", required = true) + private BuildRecordTimeCost timeCost; + @Schema(title = "开机任务序号", required = false, readOnly = true) + private Integer startVMTaskSeq; + + @Override + public String getClassType() { + return classType; + } + + @Override + public Container getContainerById(String vmSeqId) { + return id.equals(vmSeqId) ? this : null; + } + + @Override + public void retryFreshMatrixOption() { + // No operation needed + } + + @Override + public List fetchGroupContainers() { + return null; + } + + @Override + public Map fetchMatrixContext() { + return null; + } + + @Override + public Boolean containerEnabled() { + return true; + } + + @Override + public void setContainerEnable(Boolean enable) { + // No operation needed + } + + @Override + public void transformCompatibility() { + // No compatibility transformation needed + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/VMBuildContainer.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/VMBuildContainer.java new file mode 100644 index 0000000..4136b16 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/container/VMBuildContainer.java @@ -0,0 +1,169 @@ +package cd.casic.ci.common.pipeline.container; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.container + * @Project:ops-pro + * @name:VMBuildContainer + * @Date:2025/03/25 16:56 + * @Filename:VMBuildContainer + * @description:Todo + */ +@Data +@NoArgsConstructor +@Schema(title = "流水线模型-虚拟机构建容器") +public class VMBuildContainer implements Container { + public static final String classType = "vmBuild"; + + @Schema(title = "构建容器序号id", required = false, readOnly = true) + private String id; + @Schema(title = "容器名称", required = true) + private String name = "构建环境"; + @Schema(title = "任务集合", required = true) + private List elements; + @Schema(title = "容器状态", required = false, readOnly = true) + private String status; + @Schema(title = "系统运行时间", required = false, readOnly = true) + @Deprecated + private Long startEpoch; + @Schema(title = "系统耗时(开机时间)", required = false, readOnly = true) + @Deprecated + private Long systemElapsed; + @Schema(title = "插件执行耗时", required = false, readOnly = true) + @Deprecated + private Long elementElapsed; + @Schema(title = "VM基础操作系统", required = true) + private VMBaseOS baseOS; + @Schema(title = "预指定VM名称列表", required = true) + private Set vmNames; + @Schema(title = "排队最长时间(分钟)", required = true) + @Deprecated + private Integer maxQueueMinutes = 60; + @Schema(title = "运行最长时间(分钟)", required = true) + @Deprecated + private Integer maxRunningMinutes = 480; + @Schema(title = "构建机环境变量(容器启动时写入环境)", required = false) + private Map buildEnv; + @Schema(title = "用户自定义环境变量(Agent启动时写入环境)", required = false) + @Deprecated + private Map customBuildEnv; + @Schema(title = "用户自定义环境变量(Agent启动时写入环境)", required = false) + private List customEnv; + @Schema(title = "第三方构建Hash ID", required = false) + private String thirdPartyAgentId; + @Schema(title = "第三方构建环境ID", required = false) + private String thirdPartyAgentEnvId; + @Schema(title = "第三方构建环境工作空间", required = false) + private String thirdPartyWorkspace; + @Schema(title = "Docker构建机", required = false) + private String dockerBuildVersion; + @Schema(title = "TStack Hash Id", required = false) + @Deprecated + private String tstackAgentId; + @Schema(title = "新的选择构建机环境", required = false) + private DispatchType dispatchType; + @Schema(title = "是否显示构建资源信息", required = false) + private Boolean showBuildResource; + @Schema(title = "是否访问外网", required = false, readOnly = true) + private Boolean enableExternal; + @Schema(title = "构建容器顺序ID(同id值)", required = false, readOnly = true) + private String containerId; + @Schema(title = "容器唯一ID", required = false, readOnly = true) + private String containerHashId; + @Schema(title = "流程控制选项", required = true) + private JobControlOption jobControlOption; + @Schema(title = "互斥组", required = false) + private MutexGroup mutexGroup; + @Schema(title = "构建环境启动状态", required = false, readOnly = true) + private String startVMStatus; + @Schema(title = "容器运行次数", required = false, readOnly = true) + private Integer executeCount; + @Schema(title = "用户自定义ID", required = false, hidden = false) + private String jobId; + @Schema(title = "是否包含post任务标识", required = false, readOnly = true) + private Boolean containPostTaskFlag; + @Schema(title = "是否为构建矩阵", required = false, readOnly = true) + private Boolean matrixGroupFlag; + @Schema(title = "各项耗时", required = true) + private BuildRecordTimeCost timeCost; + @Schema(title = "开机任务序号", required = false, readOnly = true) + private Integer startVMTaskSeq; + @Schema(title = "构建矩阵配置项", required = false) + private MatrixControlOption matrixControlOption; + @Schema(title = "所在构建矩阵组的containerHashId(分裂后的子容器特有字段)", required = false) + private String matrixGroupId; + @Schema(title = "当前矩阵子容器的上下文组合(分裂后的子容器特有字段)", required = false) + private Map matrixContext; + @Schema(title = "分裂后的容器集合(分裂后的父容器特有字段)", required = false) + private List groupContainers; + @Schema(title = "nfs挂载开关", required = false, readOnly = true) + private Boolean nfsSwitch; + + public Boolean getNfsSwitch() { + return nfsSwitch != null ? nfsSwitch : true; + } + + @Override + public String getClassType() { + return classType; + } + + @Override + public Container getContainerById(String vmSeqId) { + if (id.equals(vmSeqId) || containerId.equals(vmSeqId)) return this; + if (groupContainers != null) { + for (Container container : groupContainers) { + if (container.getId().equals(vmSeqId) || container.getContainerId().equals(vmSeqId)) return container; + } + } + return null; + } + + @Override + public void retryFreshMatrixOption() { + groupContainers = new ArrayList<>(); + if (matrixControlOption != null) { + matrixControlOption.setFinishCount(null); + matrixControlOption.setTotalCount(null); + } + } + + @Override + public List fetchGroupContainers() { + return groupContainers != null ? new ArrayList<>(groupContainers) : null; + } + + @Override + public Map fetchMatrixContext() { + return matrixContext; + } + + @Override + public Boolean containerEnabled() { + return jobControlOption != null ? jobControlOption.getEnable() : true; + } + + @Override + public void setContainerEnable(Boolean enable) { + jobControlOption = jobControlOption != null ? jobControlOption.copy(enable) : new JobControlOption(enable); + } + + @Override + public void transformCompatibility() { + if (jobControlOption != null && jobControlOption.getTimeoutVar() == null || jobControlOption.getTimeoutVar().isBlank()) { + jobControlOption.setTimeoutVar(String.valueOf(jobControlOption.getTimeout())); + } + if (mutexGroup != null && (mutexGroup.getTimeoutVar() == null || mutexGroup.getTimeoutVar().isBlank())) { + mutexGroup.setTimeoutVar(String.valueOf(mutexGroup.getTimeout())); + } + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BranchVersionAction.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BranchVersionAction.java new file mode 100644 index 0000000..891e3a4 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BranchVersionAction.java @@ -0,0 +1,23 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:BranchVersionAction + * @Date:2025/03/25 17:25 + * @Filename:BranchVersionAction + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum BranchVersionAction { + ACTIVE("活跃分支(可以被代码推送直接更新)"), + INACTIVE("不活跃分支(已被发布或已被删除)"), + CONFLICT("有冲突分支(落后于主干无法直接合入)"); + + private final String statusName; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildFormPropertyType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildFormPropertyType.java new file mode 100644 index 0000000..73f4075 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildFormPropertyType.java @@ -0,0 +1,42 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:BuildFormPropertyType + * @Date:2025/03/25 17:01 + * @Filename:BuildFormPropertyType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum BuildFormPropertyType { + STRING("string"), + TEXTAREA("textarea"), + ENUM("enum"), + DATE("date"), + LONG("long"), + BOOLEAN("boolean"), + SVN_TAG("svn_tag"), + GIT_REF("git_ref"), + REPO_REF("repo_ref"), + MULTIPLE("multiple"), + CODE_LIB("code_lib"), + CONTAINER_TYPE("container_type"), + ARTIFACTORY("artifactory"), + SUB_PIPELINE("sub_pipeline"), + CUSTOM_FILE("custom_file"), + PASSWORD("password"), + TEMPORARY("do not storage in database"); + + private final String value; + + @Override + public String toString() { + return value; + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildPropertyType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildPropertyType.java new file mode 100644 index 0000000..2d4b400 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildPropertyType.java @@ -0,0 +1,19 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:BuildPropertyType + * @Date:2025/03/25 17:01 + * @Filename:BuildPropertyType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum BuildPropertyType { + BUILD; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildRecordTimeStamp.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildRecordTimeStamp.java new file mode 100644 index 0000000..d7691d1 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildRecordTimeStamp.java @@ -0,0 +1,32 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:BuildRecordTimeStamp + * @Date:2025/03/25 17:02 + * @Filename:BuildRecordTimeStamp + * @description:Todo + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class BuildRecordTimeStamp { + private Long startTime; + private Long endTime; + + public long between() { + return (endTime != null ? endTime : startTime != null ? startTime : 0) - (startTime != null ? startTime : 0); + } + + public void insert2TimeLine(List timeline) { + if (startTime != null && endTime != null) { + timeline.add(new BuildRecordTimeLine.Moment(startTime, endTime)); + } + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildScriptType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildScriptType.java new file mode 100644 index 0000000..4e3aad4 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildScriptType.java @@ -0,0 +1,23 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:BuildScriptType + * @Date:2025/03/25 17:02 + * @Filename:BuildScriptType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum BuildScriptType { + PYTHON2, + PYTHON3, + SHELL, + BAT, + POWER_SHELL; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildStatus.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildStatus.java new file mode 100644 index 0000000..8f4cfe5 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildStatus.java @@ -0,0 +1,115 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:BuildStatus + * @Date:2025/03/25 17:02 + * @Filename:BuildStatus + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum BuildStatus { + SUCCEED("succeed", true), + FAILED("failed", true), + CANCELED("canceled", true), + RUNNING("running", true), + TERMINATE("terminate", true), + REVIEWING("reviewing", true), + REVIEW_ABORT("reviewAbort", true), + REVIEW_PROCESSED("reviewProcessed", true), + HEARTBEAT_TIMEOUT("heartbeatTimeout", true), + PREPARE_ENV("prepareEnv", true), + UNEXEC("unexec", false), + SKIP("skip", true), + QUALITY_CHECK_FAIL("qualityCheckFail", true), + QUEUE("queue", true), + LOOP_WAITING("loopWaiting", true), + CALL_WAITING("callWaiting", true), + TRY_FINALLY("tryFinally", false), + QUEUE_TIMEOUT("queueTimeout", true), + EXEC_TIMEOUT("execTimeout", true), + QUEUE_CACHE("queueCache", true), + RETRY("retry", true), + PAUSE("pause", true), + STAGE_SUCCESS("stageSuccess", true), + QUOTA_FAILED("quotaFailed", true), + DEPENDENT_WAITING("dependentWaiting", true), + QUALITY_CHECK_PASS("qualityCheckPass", true), + QUALITY_CHECK_WAIT("qualityCheckWait", true), + TRIGGER_REVIEWING("triggerReviewing", true), + UNKNOWN("unknown", false); + + private final String statusName; + private final boolean visible; + + public boolean isNeverRun() { + return this == UNEXEC || this == TRIGGER_REVIEWING; + } + + public boolean isFinish() { + return isFailure() || isSuccess() || isCancel(); + } + + public boolean isFailure() { + return this == FAILED || isPassiveStop() || isTimeout(); + } + + public boolean isSuccess() { + return this == SUCCEED || this == SKIP || this == REVIEW_PROCESSED || this == QUALITY_CHECK_PASS; + } + + public boolean isCancel() { + return this == CANCELED; + } + + public boolean isSkip() { + return this == SKIP; + } + + public boolean isTerminate() { + return this == TERMINATE; + } + + public boolean isRunning() { + return this == RUNNING || this == LOOP_WAITING || this == REVIEWING || this == PREPARE_ENV || this == CALL_WAITING || this == PAUSE; + } + + public boolean isReview() { + return this == REVIEW_ABORT || this == REVIEW_PROCESSED; + } + + public boolean isReadyToRun() { + return this == QUEUE || this == QUEUE_CACHE || this == RETRY || this == DEPENDENT_WAITING; + } + + public boolean isPassiveStop() { + return this == TERMINATE || this == REVIEW_ABORT || this == QUALITY_CHECK_FAIL; + } + + public boolean isPause() { + return this == PAUSE; + } + + public boolean isTimeout() { + return this == QUEUE_TIMEOUT || this == EXEC_TIMEOUT || this == HEARTBEAT_TIMEOUT; + } + + public String getI18n(String language) { + // Assuming MessageUtil is available in Java + return MessageUtil.getMessageByLocale("buildStatus." + statusName, language); + } + + public static BuildStatus parse(String statusName) { + try { + return statusName == null ? UNKNOWN : BuildStatus.valueOf(statusName); + } catch (Exception ignored) { + return UNKNOWN; + } + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildTaskStatus.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildTaskStatus.java new file mode 100644 index 0000000..1dd300f --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/BuildTaskStatus.java @@ -0,0 +1,21 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:BuildTaskStatus + * @Date:2025/03/25 17:03 + * @Filename:BuildTaskStatus + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum BuildTaskStatus { + WAIT, + END, + DO; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CertType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CertType.java new file mode 100644 index 0000000..3d3a6e9 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CertType.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:CertType + * @Date:2025/03/25 17:03 + * @Filename:CertType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum CertType { + PERSONAL("PERSONAL"), + ENTERPRISE("ENTERPRISE"); + + private final String value; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ChannelCode.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ChannelCode.java new file mode 100644 index 0000000..0cd3b55 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ChannelCode.java @@ -0,0 +1,42 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:ChannelCode + * @Date:2025/03/25 17:03 + * @Filename:ChannelCode + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum ChannelCode { + BS, + AM, + CODECC, + GCLOUD, + GIT, + GONGFENGSCAN, + CODECC_EE; + + public static boolean isNeedAuth(ChannelCode channelCode) { + return channelCode == BS; + } + + public static boolean webChannel(ChannelCode channelCode) { + return channelCode == BS || channelCode == GIT; + } + + public static ChannelCode getChannel(String channel) { + for (ChannelCode code : values()) { + if (code.name().equals(channel)) { + return code; + } + } + return null; + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CharsetType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CharsetType.java new file mode 100644 index 0000000..086b63d --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CharsetType.java @@ -0,0 +1,21 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:CharsetType + * @Date:2025/03/25 17:03 + * @Filename:CharsetType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum CharsetType { + DEFAULT, + UTF_8, + GBK; +} \ No newline at end of file diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CodePullStrategy.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CodePullStrategy.java new file mode 100644 index 0000000..b1be0ee --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CodePullStrategy.java @@ -0,0 +1,32 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:CodePullStrategy + * @Date:2025/03/25 17:03 + * @Filename:CodePullStrategy + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum CodePullStrategy { + FRESH_CHECKOUT("fresh_checkout"), + INCREMENT_UPDATE("increment_update"), + REVERT_UPDATE("revert_update"); + + private final String value; + + public static CodePullStrategy fromValue(String value) { + for (CodePullStrategy strategy : values()) { + if (strategy.value.equals(value)) { + return strategy; + } + } + throw new IllegalArgumentException("The strategy(" + value + ") is not exist"); + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CodeTargetAction.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CodeTargetAction.java new file mode 100644 index 0000000..8c4a5a9 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/CodeTargetAction.java @@ -0,0 +1,25 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:CodeTargetAction + * @Date:2025/03/25 17:04 + * @Filename:CodeTargetAction + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum CodeTargetAction { + COMMIT_TO_MASTER("提交到主干"), + CHECKOUT_BRANCH_AND_REQUEST_MERGE("新建分支创建MR"), + COMMIT_TO_SOURCE_BRANCH("提交到原始版本分支"), + COMMIT_TO_SOURCE_BRANCH_AND_REQUEST_MERGE("提交到原始版本分支创建MR"), + COMMIT_TO_BRANCH("提交到指定分支"); + + private final String desc; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ContainerMutexStatus.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ContainerMutexStatus.java new file mode 100644 index 0000000..8288151 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ContainerMutexStatus.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:ContainerMutexStatus + * @Date:2025/03/25 17:04 + * @Filename:ContainerMutexStatus + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum ContainerMutexStatus { + READY, + WAITING, + CANCELED, + FIRST_LOG; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DependOnType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DependOnType.java new file mode 100644 index 0000000..d5edb8b --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DependOnType.java @@ -0,0 +1,28 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:DependOnType + * @Date:2025/03/25 17:04 + * @Filename:DependOnType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum DependOnType { + ID, + NAME; + + public static DependOnType parse(String type) { + if (type == null) return ID; + for (DependOnType t : values()) { + if (t.name().equals(type)) return t; + } + return ID; + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DeployStatus.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DeployStatus.java new file mode 100644 index 0000000..feb036b --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DeployStatus.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:DeployStatus + * @Date:2025/03/25 17:12 + * @Filename:DeployStatus + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum DeployStatus { + SUCCEED, + FAILED, + RUNNING, + TIMEOUT; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DockerVersion.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DockerVersion.java new file mode 100644 index 0000000..607f85c --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/DockerVersion.java @@ -0,0 +1,23 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:DockerVersion + * @Date:2025/03/25 17:12 + * @Filename:DockerVersion + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum DockerVersion { + TLINUX1_2("tlinux1.2"), + TLINUX2_2("tlinux2.2"), + CUSTOMIZE("customize"); + + private final String value; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/EnvControlTaskType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/EnvControlTaskType.java new file mode 100644 index 0000000..e3a71d9 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/EnvControlTaskType.java @@ -0,0 +1,28 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:EnvControlTaskType + * @Date:2025/03/25 17:12 + * @Filename:EnvControlTaskType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum EnvControlTaskType { + VM, + NORMAL; + + public static EnvControlTaskType parse(String type) { + try { + return EnvControlTaskType.valueOf(type); + } catch (Exception ignore) { + return null; + } + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/GitPullModeType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/GitPullModeType.java new file mode 100644 index 0000000..3232235 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/GitPullModeType.java @@ -0,0 +1,21 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:GitPullModeType + * @Date:2025/03/25 17:13 + * @Filename:GitPullModeType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum GitPullModeType { + BRANCH, + TAG, + COMMIT_ID; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/JobRunCondition.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/JobRunCondition.java new file mode 100644 index 0000000..947594e --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/JobRunCondition.java @@ -0,0 +1,25 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:JobRunCondition + * @Date:2025/03/25 17:13 + * @Filename:JobRunCondition + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum JobRunCondition { + STAGE_RUNNING, + CUSTOM_VARIABLE_MATCH, + CUSTOM_VARIABLE_MATCH_NOT_RUN, + CUSTOM_CONDITION_MATCH, + PREVIOUS_STAGE_SUCCESS, + PREVIOUS_STAGE_FAILED, + PREVIOUS_STAGE_CANCEL; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ManualReviewAction.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ManualReviewAction.java new file mode 100644 index 0000000..d05507b --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ManualReviewAction.java @@ -0,0 +1,21 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:ManualReviewAction + * @Date:2025/03/25 17:13 + * @Filename:ManualReviewAction + * @description:Todo + */ + +@Getter +@AllArgsConstructor +public enum ManualReviewAction { + PROCESS, + ABORT; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/PipelineInstanceTypeEnum.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/PipelineInstanceTypeEnum.java new file mode 100644 index 0000000..d22d961 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/PipelineInstanceTypeEnum.java @@ -0,0 +1,36 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:PipelineInstanceTypeEnum + * @Date:2025/03/25 17:13 + * @Filename:PipelineInstanceTypeEnum + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum PipelineInstanceTypeEnum { + FREEDOM("FREEDOM"), + CONSTRAINT("CONSTRAINT"); + + private final String type; + + @Override + public String toString() { + return type; + } + + public static String getTemplateType(String type) { + return switch (type) { + case "FREEDOM" -> PipelineInstanceTypeEnum.FREEDOM.name(); + case "CONSTRAINT" -> PipelineInstanceTypeEnum.CONSTRAINT.name(); + default -> PipelineInstanceTypeEnum.FREEDOM.name(); + }; + } + +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/PipelineStorageType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/PipelineStorageType.java new file mode 100644 index 0000000..c4762d9 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/PipelineStorageType.java @@ -0,0 +1,27 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:PipelineStorageType + * @Date:2025/03/25 17:13 + * @Filename:PipelineStorageType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum PipelineStorageType { + YAML("YAML编排", ".yaml"), + MODEL("JSON编排", ".json"); + + private final String desc; + private final String fileSuffix; + + public static PipelineStorageType getActionType(String type) { + return "YAML".equals(type) ? YAML : MODEL; + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/Platform.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/Platform.java new file mode 100644 index 0000000..f7d7c0c --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/Platform.java @@ -0,0 +1,15 @@ +package cd.casic.ci.common.pipeline.enums; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:Platform + * @Date:2025/03/25 17:16 + * @Filename:Platform + * @description:Todo + */ +public enum Platform { + ANDROID, + IPHONE; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ProjectPipelineCallbackStatus.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ProjectPipelineCallbackStatus.java new file mode 100644 index 0000000..c5674be --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/ProjectPipelineCallbackStatus.java @@ -0,0 +1,15 @@ +package cd.casic.ci.common.pipeline.enums; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:ProjectPipelineCallbackStatus + * @Date:2025/03/25 17:17 + * @Filename:ProjectPipelineCallbackStatus + * @description:Todo + */ +public enum ProjectPipelineCallbackStatus { + SUCCESS, + FAILED +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SVNVersion.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SVNVersion.java new file mode 100644 index 0000000..cb1337e --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SVNVersion.java @@ -0,0 +1,23 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:SVNVersion + * @Date:2025/03/25 17:24 + * @Filename:SVNVersion + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum SVNVersion { + V_1_6(10), + V_1_7(29), + V_1_8(31); + + private final int version; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SourceType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SourceType.java new file mode 100644 index 0000000..be92608 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SourceType.java @@ -0,0 +1,15 @@ +package cd.casic.ci.common.pipeline.enums; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:SourceType + * @Date:2025/03/25 17:26 + * @Filename:SourceType + * @description:Todo + */ +public enum SourceType { + PIPELINE, + CUSTOMIZE +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/StageRunCondition.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/StageRunCondition.java new file mode 100644 index 0000000..8477423 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/StageRunCondition.java @@ -0,0 +1,18 @@ +package cd.casic.ci.common.pipeline.enums; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:StageRunCondition + * @Date:2025/03/25 17:17 + * @Filename:StageRunCondition + * @description:运行选项 + */ +public enum StageRunCondition { + AFTER_LAST_FINISHED, // 上个阶段执行结束 + CUSTOM_VARIABLE_MATCH, // 自定义变量全部满足时运行 + CUSTOM_VARIABLE_MATCH_NOT_RUN, // 自定义变量全部满足时不运行 + CUSTOM_CONDITION_MATCH // 满足以下自定义条件时运行 + ; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/StartType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/StartType.java new file mode 100644 index 0000000..e19f91d --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/StartType.java @@ -0,0 +1,88 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:StartType + * @Date:2025/03/25 17:23 + * @Filename:StartType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum StartType { + MANUAL, + TIME_TRIGGER, + WEB_HOOK, + SERVICE, + PIPELINE, + REMOTE; + + public static String toReadableString(String type, ChannelCode channelCode, String language) { + String[] params = null; + String name = switch (type) { + case "MANUAL" -> MANUAL.name(); + case "TIME_TRIGGER" -> TIME_TRIGGER.name(); + case "WEB_HOOK" -> WEB_HOOK.name(); + case "REMOTE" -> REMOTE.name(); + case "SERVICE" -> { + if (channelCode != null) { + if (channelCode == ChannelCode.BS) { + yield SERVICE.name() + "_BS"; + } else { + params = new String[]{channelCode.name()}; + yield SERVICE.name() + "_CHANNEL"; + } + } else { + yield SERVICE.name() + "_NOT_CHANNEL"; + } + } + case "PIPELINE" -> PIPELINE.name(); + default -> ""; + }; + return name.isBlank() ? name : MessageUtil.getMessageByLocale("START_TYPE_" + name, language, params); + } + + public static StartType toStartType(String type) { + for (StartType startType : values()) { + if (type.equalsIgnoreCase(startType.name())) { + return startType; + } + } + LoggerFactory.getLogger(StartType.class).warn("Unknown start type(" + type + ")"); + return MANUAL; + } + + public static List getStartTypeMap(String language) { + List result = new ArrayList<>(); + for (StartType startType : values()) { + result.add(new IdValue(startType.name(), toReadableString(startType.name(), null, language))); + } + return result; + } + + public static String transform(String startType, String webhookType) { + return switch (startType) { + case "MANUAL" -> ManualTriggerElement.classType; + case "TIME_TRIGGER" -> TimerTriggerElement.classType; + case "WEB_HOOK" -> { + yield switch (webhookType) { + case "SVN" -> CodeSVNWebHookTriggerElement.classType; + case "GIT" -> CodeGitWebHookTriggerElement.classType; + case "GITLAB" -> CodeGitlabWebHookTriggerElement.classType; + case "GITHUB" -> CodeGithubWebHookTriggerElement.classType; + case "TGIT" -> CodeTGitWebHookTriggerElement.classType; + default -> RemoteTriggerElement.classType; + }; + } + default -> RemoteTriggerElement.classType; + }; + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SvnDepth.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SvnDepth.java new file mode 100644 index 0000000..2fd7c51 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/SvnDepth.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:SvnDepth + * @Date:2025/03/25 17:24 + * @Filename:SvnDepth + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum SvnDepth { + empty, + files, + immediates, + infinity; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/TclsType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/TclsType.java new file mode 100644 index 0000000..41f4164 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/TclsType.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:TclsType + * @Date:2025/03/25 17:24 + * @Filename:TclsType + * @description:Todo + */ + +@Getter +@AllArgsConstructor +public enum TclsType { + TCLS, + MTCLS, + MTCLS2; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VMBaseOS.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VMBaseOS.java new file mode 100644 index 0000000..7e6f0f3 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VMBaseOS.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:VMBaseOS + * @Date:2025/03/25 17:25 + * @Filename:VMBaseOS + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum VMBaseOS { + MACOS, + LINUX, + WINDOWS, + ALL; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VMBuildResult.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VMBuildResult.java new file mode 100644 index 0000000..da2a95e --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VMBuildResult.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:VMBuildResult + * @Date:2025/03/25 17:25 + * @Filename:VMBuildResult + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum VMBuildResult { + SUCCEED, + FAILED, + TIMEOUT, + CANCELED; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VersionStatus.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VersionStatus.java new file mode 100644 index 0000000..6fdcf9e --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/enums/VersionStatus.java @@ -0,0 +1,38 @@ +package cd.casic.ci.common.pipeline.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.enums + * @Project:ops-pro + * @name:VersionStatus + * @Date:2025/03/25 17:24 + * @Filename:VersionStatus + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum VersionStatus { + RELEASED("已发布版本"), + COMMITTING("草稿版本"), + BRANCH("分支版本"), + BRANCH_RELEASE("通过分支版本发布(中间态)"), + DRAFT_RELEASE("通过草稿版本发布(中间态)"), + DELETE("被删除(无法查询)"); + + private final String statusName; + + public VersionStatus fix() { + return this == BRANCH_RELEASE ? BRANCH : this == DRAFT_RELEASE ? RELEASED : this; + } + + public boolean isReleasing() { + return this == RELEASED || this == BRANCH_RELEASE || this == DRAFT_RELEASE; + } + + public boolean isNotReleased() { + return this == COMMITTING || this == BRANCH; + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/JobControlOption.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/JobControlOption.java new file mode 100644 index 0000000..bc8fcd0 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/JobControlOption.java @@ -0,0 +1,65 @@ +package cd.casic.ci.common.pipeline.option; + +import cd.casic.ci.common.pipeline.NameAndValue; +import cd.casic.ci.common.pipeline.enums.DependOnType; +import cd.casic.ci.common.pipeline.enums.JobRunCondition; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.option + * @Project:ops-pro + * @name:JobControlOption + * @Date:2025/03/25 17:59 + * @Filename:JobControlOption + * @description:Todo + */ +@Data +@Schema(title = "job流程控制模型") +public class JobControlOption { + @Schema(title = "是否启用Job", required = false) + private Boolean enable = true; // 是否启用Job + + @Schema(title = "Job准备环境的超时时间 分钟Minutes", required = false) + private Integer prepareTimeout; // Job准备环境的超时时间 分钟Minutes + + @Schema(title = "Job执行的超时时间 分钟Minutes", required = false) + private Integer timeout = 900; // Job执行的超时时间 分钟Minutes + + @Schema(title = "新的Job执行的超时时间,支持变量 分钟Minutes,出错则取timeout的值", required = false) + private String timeoutVar; // Job执行的超时时间 分钟Minutes + + @Schema(title = "运行条件", required = false) + private JobRunCondition runCondition = JobRunCondition.STAGE_RUNNING; // 运行条件 + + @Schema(title = "自定义变量", required = false) + private List customVariables = List.of(); // 自定义变量 + + @Schema(title = "自定义条件", required = false) + private String customCondition; // 自定义条件 + + @Schema(title = "job依赖", required = false) + private DependOnType dependOnType; // job依赖 + + @Schema(title = "需要过滤不存在的job,定义为var类型", required = false) + private List dependOnId; // 需要过滤不存在的job,定义为var类型 + + @Schema(title = "job依赖名称", required = false) + private String dependOnName; + + @Schema(title = "containerId与jobId映射,depend on运行时使用的是containerId", required = false) + private Map dependOnContainerId2JobIds; // containerId与jobId映射,depend on运行时使用的是containerId + + @Schema(title = "是否失败继续", required = false) + private Boolean continueWhenFailed = false; // 失败继续 + + @Schema(title = "第三方构建机集群-单节点并发限制") + private Integer singleNodeConcurrency; + + @Schema(title = "第三方构建机集群-所有节点并发限制") + private Integer allNodeConcurrency; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/MatrixControlOption.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/MatrixControlOption.java new file mode 100644 index 0000000..68ba10a --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/MatrixControlOption.java @@ -0,0 +1,54 @@ +package cd.casic.ci.common.pipeline.option; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.option + * @Project:ops-pro + * @name:MatrixControlOption + * @Date:2025/03/25 17:59 + * @Filename:MatrixControlOption + * @description:Todo + */ +@Data +@Schema(title = "构建矩阵配置项模型") +public class MatrixControlOption { + private static final long serialVersionUID = 1L; + + private static final Pattern MATRIX_JSON_KEY_PATTERN = Pattern.compile("^(fromJSON\\()([^(^)]+)[\\)]\$"); + private static final Logger logger = LoggerFactory.getLogger(MatrixControlOption.class); + private static final int MATRIX_CASE_MAX_COUNT = 256; + + @Schema(title = "分裂策略(支持变量、Json、参数映射表)", required = true) + private String strategyStr; // Map> + + @Schema(title = "额外的参数组合(变量名到特殊值映射的数组)", required = false) + private String includeCaseStr; // List> + + @Schema(title = "排除的参数组合(变量名到特殊值映射的数组)", required = false) + private String excludeCaseStr; // List> + + @Schema(title = "是否启用容器失败快速终止整个矩阵", required = false) + private Boolean fastKill = false; + + @Schema(title = "Job运行的最大并发量", required = false) + private Integer maxConcurrency = 5; + + @Schema(title = "自定义调度类型(用于生成DispatchType的任意对象)", required = false) + private DispatchInfo customDispatchInfo; // DispatchTypeParser的传入和解析保持一致即可 + + @Schema(title = "矩阵组的总数量", required = false) + private Integer totalCount; + + @Schema(title = "完成执行的数量", required = false) + private Integer finishCount; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/StageControlOption.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/StageControlOption.java new file mode 100644 index 0000000..1d12ea9 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/option/StageControlOption.java @@ -0,0 +1,57 @@ +package cd.casic.ci.common.pipeline.option; + +import cd.casic.ci.common.pipeline.NameAndValue; +import cd.casic.ci.common.pipeline.enums.StageRunCondition; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.option + * @Project:ops-pro + * @name:StageControlOption + * @Date:2025/03/25 18:06 + * @Filename:StageControlOption + * @description:Todo + */ +@Data +@Schema(title = "阶段流程控制模型") +public class StageControlOption { + @Schema(title = "是否启用该阶段", required = false) + private Boolean enable = true; // 是否启用该阶段 + + @Schema(title = "运行条件", required = false) + private StageRunCondition runCondition = StageRunCondition.AFTER_LAST_FINISHED; // 运行条件 + + @Schema(title = "自定义变量", required = false) + private List customVariables = List.of(); // 自定义变量 + + @Schema(title = "自定义条件", required = false) + private String customCondition; // 自定义条件 + + @Schema(title = "是否人工触发", required = false) + @Deprecated("被StagePauseCheck.manualTrigger代替") + private Boolean manualTrigger = false; + + @Schema(title = "可触发用户,支持引用变量", required = false) + @Deprecated("被StagePauseCheck.reviewGroups代替") + private List triggerUsers; // 可触发用户,支持引用变量 + + @Schema(title = "已通过审核", required = false) + @Deprecated("被StagePauseCheck.status代替") + private Boolean triggered; // 已通过审核 + + @Schema(title = "等待审核的超时时间", required = false) + @Deprecated("被StagePauseCheck.timeout代替") + private Integer timeout; // 等待审核的超时时间 + + @Schema(title = "审核变量", required = false) + @Deprecated("被StagePauseCheck.reviewParams代替") + private List reviewParams; // 审核变量 + + @Schema(title = "审核说明", required = false) + @Deprecated("被StagePauseCheck.reviewDesc代替") + private String reviewDesc; // 审核说明 +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/AtomBaseInfo.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/AtomBaseInfo.java new file mode 100644 index 0000000..8d93c87 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/AtomBaseInfo.java @@ -0,0 +1,40 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:AtomBaseInfo + * @Date:2025/03/25 15:38 + * @Filename:AtomBaseInfo + * @description:Todo + */ +@Data +@Schema(title = "插件基本信息") +public class AtomBaseInfo { + @Schema(title = "插件Id", required = true) + private String atomId; + @Schema(title = "插件代码", required = true) + private String atomCode; + @Schema(title = "插件版本号", required = true) + private String version; + @Schema(title = "插件状态", required = true) + private String atomStatus; + @Schema(title = "插件开发语言", required = false) + private String language; + @Schema(title = "分支", required = false) + private String branch; + @Schema(title = "代码提交ID", required = false) + private String commitId; + @Schema(title = "支持的操作系统名称", required = false) + private String osName; + @Schema(title = "支持的操作系统架构", required = false) + private String osArch; + @Schema(title = "不支持的操作系统组合信息", required = false) + private String invalidOsInfo; + @Schema(title = "运行时版本", required = false) + private String runtimeVersion; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildContainerType.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildContainerType.java new file mode 100644 index 0000000..51d540f --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildContainerType.java @@ -0,0 +1,19 @@ +package cd.casic.ci.common.pipeline.pojo; + +import cn.hutool.http.useragent.OS; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:BuildContainerType + * @Date:2025/03/25 15:38 + * @Filename:BuildContainerType + * @description:Todo + */ +@Data +public class BuildContainerType { + private BuildType buildType; + private OS os; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildEnvParameters.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildEnvParameters.java new file mode 100644 index 0000000..484a345 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildEnvParameters.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:BuildEnvParameters + * @Date:2025/03/25 15:39 + * @Filename:BuildEnvParameters + * @description:Todo + */ +@Schema(title = "构建-变量描述") +public class BuildEnvParameters { + @Schema(title = "名称") + private String name; + @Schema(title = "描述") + private String desc; + @Schema(title = "路径") + private String path; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormProperty.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormProperty.java new file mode 100644 index 0000000..b3790bc --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormProperty.java @@ -0,0 +1,69 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:BuildFormProperty + * @Date:2025/03/25 15:42 + * @Filename:BuildFormProperty + * @description:Todo + */ +@Data +@Schema(title = "构建模型-表单元素属性") +public class BuildFormProperty { + @Schema(title = "元素ID-标识符", required = true) + private String id; + @Schema(title = "元素名称", required = true) + private String name; + @Schema(title = "是否必须(新前端的入参标识)", required = true) + private boolean required; + @Schema(title = "是否为常量", required = true) + private boolean constant; + @Schema(title = "元素类型", required = true) + private BuildFormPropertyType type; + @Schema(title = "默认值", required = true) + private Object defaultValue; + @Schema(title = "上次构建的取值", required = true) + private Object value; + @Schema(title = "下拉框列表", required = false) + private List options; + @Schema(title = "描述", required = false) + private String desc; + @Schema(title = "repoHashId", required = false) + private String repoHashId; + @Schema(title = "relativePath", required = false) + private String relativePath; + @Schema(title = "代码库类型下拉", required = false) + private ScmType scmType; + @Schema(title = "构建机类型下拉", required = false) + private BuildContainerType containerType; + @Schema(title = "自定义仓库通配符", required = false) + private String glob; + @Schema(title = "文件元数据", required = false) + private Map properties; + @Schema(title = "元素标签", required = false) + private String label; + @Schema(title = "元素placeholder", required = false) + private String placeholder; + @Schema(title = "元素模块", required = false) + private String propertyType; + @Schema(title = "搜索url, 当是下拉框选项时,列表值从url获取不再从option获取", required = false) + private String searchUrl; + @Schema(title = "替换搜索url中的搜素关键字", required = false) + private String replaceKey; + @Schema(title = "是否只读", required = false) + private boolean readOnly; + @Schema(title = "参数值是否必填", required = false) + private boolean valueNotEmpty; + @Schema(title = "页面所需内容,后台仅保存,不做处理", required = false) + private Object payload; + @Schema(title = "级联选择器属性", required = false) + private BuildCascadeProps cascadeProps; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormValue.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormValue.java new file mode 100644 index 0000000..53c65cd --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildFormValue.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:BuildFormValue + * @Date:2025/03/25 15:44 + * @Filename:BuildFormValue + * @description:Todo + */ +@Data +@Schema(title = "构建模型-下拉框表单元素值") +public class BuildFormValue { + @Schema(title = "元素值ID-标识符", required = true) + private String key; + @Schema(title = "元素值名称-显示用", required = true) + private String value; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildNo.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildNo.java new file mode 100644 index 0000000..e17598c --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildNo.java @@ -0,0 +1,26 @@ +package cd.casic.ci.common.pipeline.pojo; + +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:BuildNo + * @Date:2025/03/25 15:44 + * @Filename:BuildNo + * @description:Todo + */ +@Data +public class BuildNo { + private int buildNo; + private BuildNoType buildNoType; + private boolean required; + private Integer currentBuildNo; + + public enum BuildNoType { + CONSISTENT, + SUCCESS_BUILD_INCREMENT, + EVERY_BUILD_INCREMENT + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildNoUpdateReq.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildNoUpdateReq.java new file mode 100644 index 0000000..940efdb --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildNoUpdateReq.java @@ -0,0 +1,20 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:BuildNoUpdateReq + * @Date:2025/03/25 15:45 + * @Filename:BuildNoUpdateReq + * @description:Todo + */ +@Data +@Schema(title = "流水线构建推荐版本号更新") +public class BuildNoUpdateReq { + @Schema(title = "推荐版本号buildNo当前值", required = true) + private int currentBuildNo; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildParameterGroup.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildParameterGroup.java new file mode 100644 index 0000000..f13908b --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildParameterGroup.java @@ -0,0 +1,24 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:BuildParameterGroup + * @Date:2025/03/25 15:45 + * @Filename:BuildParameterGroup + * @description:Todo + */ +@Data +@Schema(title = "构建-变量描述") +public class BuildParameterGroup { + @Schema(title = "名称(国际化)") + private String name; + @Schema(title = "描述") + private List params; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildParameters.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildParameters.java new file mode 100644 index 0000000..9bc254c --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/BuildParameters.java @@ -0,0 +1,30 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:BuildParameters + * @Date:2025/03/25 16:05 + * @Filename:BuildParameters + * @description:Todo + */ +@Data +@Schema(title = "构建模型-构建参数") +public class BuildParameters { + @Schema(title = "元素值ID-标识符", required = true) + private String key; + @Schema(title = "元素值名称-显示用", required = true) + private Object value; + @Schema(title = "元素值类型", required = false) + private BuildFormPropertyType valueType; + @Schema(title = "是否只读", required = false) + private boolean readOnly; + @Schema(title = "描述", required = false) + private String desc; + @Schema(title = "默认值", required = false) + private Object defaultValue; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/DependOnConfig.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/DependOnConfig.java new file mode 100644 index 0000000..6e930ed --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/DependOnConfig.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.pojo; + +import lombok.Data; + +import java.util.List; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:DependOnConfig + * @Date:2025/03/25 16:06 + * @Filename:DependOnConfig + * @description:Todo + */ + +@Data +public class DependOnConfig { + private DependOnType dependOnType; + private List dependOnId; + private String dependOnName; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/JobHeartbeatRequest.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/JobHeartbeatRequest.java new file mode 100644 index 0000000..5a36a3d --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/JobHeartbeatRequest.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:JobHeartbeatRequest + * @Date:2025/03/25 16:06 + * @Filename:JobHeartbeatRequest + * @description:Todo + */ +@Data +@Schema(title = "心跳请求报文体") +public class JobHeartbeatRequest { + @Schema(title = "task执行速率", required = false) + private Map task2ProgressRate; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/MatrixPipelineInfo.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/MatrixPipelineInfo.java new file mode 100644 index 0000000..3f3fbb3 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/MatrixPipelineInfo.java @@ -0,0 +1,42 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Map; +import java.util.regex.Pattern; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:MatrixPipelineInfo + * @Date:2025/03/25 16:06 + * @Filename:MatrixPipelineInfo + * @description:Todo + */ +@Data +public class MatrixPipelineInfo { + @Schema(title = "作为输入值时:额外的参数组合(String)/作为输出值时:校验结果", required = false) + private String include; + @Schema(title = "作为输入值时:排除的参数组合(String)/作为输出值时:校验结果", required = false) + private String exclude; + @Schema(title = "作为输入值时:分裂策略(String)/作为输出值时:校验结果", required = false) + private String strategy; + + public Map toMatrixConvert() { + return Map.of( + "include", !this.include.isNullOrBlank() ? parseYaml(this.include) : null, + "exclude", !this.exclude.isNullOrBlank() ? parseYaml(this.exclude) : null, + "strategy", !this.strategy.isNullOrBlank() ? parseYaml(this.strategy) : null + ); + } + + private Object parseYaml(String input) { + Pattern pattern = Pattern.compile("^(\\\$\\{\\{[ ]*fromJSON\\()([^(^)]+)(\\)[ ]*\\}\\})$"); + if (pattern.matcher(input).find()) { + return null; + } + return YamlUtil.to(input); + } +} \ No newline at end of file diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/PipelineModelAndSetting.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/PipelineModelAndSetting.java new file mode 100644 index 0000000..a0d5d67 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/PipelineModelAndSetting.java @@ -0,0 +1,24 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; +import lombok.Data; +import org.springframework.ui.Model; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:PipelineModelAndSetting + * @Date:2025/03/25 16:34 + * @Filename:PipelineModelAndSetting + * @description:Todo + */ +@Data +public class PipelineModelAndSetting { + @Schema(title = "流水线模型", required = true) + private Model model; + @Schema(title = "流水线设置", required = false) + @Valid + private PipelineSetting setting; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StagePauseCheck.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StagePauseCheck.java new file mode 100644 index 0000000..b5ef72c --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StagePauseCheck.java @@ -0,0 +1,207 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:StagePauseCheck + * @Date:2025/03/25 16:34 + * @Filename:StagePauseCheck + * @description:Todo + */ +@Data +@Accessors(chain = true) +@Schema(title = "stage准入准出配置模型") +public class StagePauseCheck { + @Schema(title = "是否人工触发", required = false) + private Boolean manualTrigger = false; + @Schema(title = "状态", required = false) + private String status; + @Schema(title = "审核说明", required = false) + private String reviewDesc; + @Schema(title = "审核流配置", required = false) + private List reviewGroups; + @Schema(title = "审核变量", required = false) + private List reviewParams; + @Schema(title = "等待审核的超时时间,默认24小时兜底", required = false) + private Integer timeout = 24; + @Schema(title = "质量红线规则ID集合", required = false) + private List ruleIds; + @Schema(title = "记录本次构建质量红线规则的检查次数", required = false) + private Integer checkTimes; + @Schema(title = "是否以markdown格式发送审核说明", required = false) + private Boolean markdownContent = false; + @Schema(title = "发送的通知类型", required = false) + private List notifyType = List.of("RTX"); + @Schema(title = "企业微信群id", required = false) + private List notifyGroup; + + /** + * 获取当前等待中的审核组 + */ + public StageReviewGroup groupToReview() { + return reviewGroups.stream() + .filter(group -> group.getStatus() == null || group.getStatus().isBlank()) + .findFirst() + .orElse(null); + } + + /** + * 判断操作用户在不在当前审核人员名单中 + */ + public boolean reviewerContains(String userId) { + return reviewGroups.stream() + .anyMatch(group -> group.getStatus() == null && group.getReviewers().contains(userId)); + } + + /** + * 审核通过当前等待中的审核组 + */ + public StageReviewGroup reviewGroup(String userId, ManualReviewAction action, String groupId, List params, String suggest) { + StageReviewGroup group = getReviewGroupById(groupId); + if (group != null && group.getStatus() == null) { + group.setStatus(action.name()); + group.setOperator(userId); + group.setReviewTime(LocalDateTime.now().timestampmilli()); + group.setSuggest(suggest); + group.setParams(parseReviewParams(params)); + if (groupToReview() == null) { + status = BuildStatus.REVIEW_PROCESSED.name(); + } else if (action == ManualReviewAction.ABORT) { + status = BuildStatus.REVIEW_ABORT.name(); + } + } + return group; + } + + /** + * 获取指定ID的审核组 + */ + public StageReviewGroup getReviewGroupById(String groupId) { + if (groupId == null || groupId.isBlank()) { + return reviewGroups.get(0); + } + return reviewGroups.stream() + .filter(group -> groupId.equals(group.getId())) + .findFirst() + .orElse(null); + } + + /** + * 初始化状态并,填充审核组ID + */ + public void fixReviewGroups(boolean init) { + reviewGroups.forEach(group -> { + if (group.getId() == null || group.getId().isBlank()) { + group.setId(UUIDUtil.generate()); + } + if (init) { + group.setStatus(null); + group.setReviewTime(null); + group.setOperator(null); + group.setParams(null); + group.setSuggest(null); + } + }); + if (init) { + status = null; + checkTimes = null; + } + } + + /** + * 处理审核参数 - 与默认值相同的变量不显示 + */ + public List parseReviewParams(List params) { + try { + if (reviewParams == null || params == null) { + return null; + } + Map originMap = reviewParams.stream() + .collect(Collectors.toMap(ManualReviewParam::getKey, param -> param)); + List diff = new ArrayList<>(); + for (ManualReviewParam param : params) { + if (!originMap.containsKey(param.getKey())) { + continue; + } + if (!originMap.get(param.getKey()).getValue().equals(param.getValue())) { + diff.add(param); + originMap.get(param.getKey()).setValue(param.getValue()); + } + } + reviewParams.forEach(param -> param.setValue(originMap.get(param.getKey()).getValue())); + return diff; + } catch (Exception ignore) { + return null; + } + } + + /** + * 进入审核流程前完成所有审核人变量替换 + */ + public void parseReviewVariables(Map variables, IPipelineDialect dialect) { + Map contextPair = EnvReplacementParser.getCustomExecutionContextByMap(variables); + reviewGroups.forEach(group -> { + if (group.getStatus() != null) { + return; + } + if (!group.getReviewers().isEmpty()) { + String reviewers = String.join(",", group.getReviewers()); + List realReviewers = EnvReplacementParser.parse(reviewers, variables, dialect.supportUseExpression(), contextPair) + .split(",") + .toList(); + group.setReviewers(realReviewers); + } + if (!group.getGroups().isEmpty()) { + String groups = String.join(",", group.getGroups()); + List realGroups = EnvReplacementParser.parse(groups, variables, dialect.supportUseExpression(), contextPair) + .split(",") + .toList(); + group.setGroups(realGroups); + } + }); + reviewDesc = EnvReplacementParser.parse(reviewDesc, variables, dialect.supportUseExpression(), contextPair); + notifyGroup = notifyGroup.stream() + .map(group -> EnvReplacementParser.parse(group, variables, dialect.supportUseExpression(), contextPair)) + .collect(Collectors.toList()); + reviewParams.forEach(param -> param.parseValueWithType(variables)); + } + + /** + * 重新恢复所有准入/准出状态 + */ + public void retryRefresh() { + status = null; + reviewGroups.forEach(group -> { + group.setStatus(null); + group.setParams(null); + group.setOperator(null); + group.setReviewTime(null); + group.setSuggest(null); + }); + } + + public static StagePauseCheck convertControlOption(StageControlOption stageControlOption) { + return new StagePauseCheck() + .setManualTrigger(stageControlOption.getManualTrigger()) + .setStatus(stageControlOption.getTriggered() ? BuildStatus.REVIEW_PROCESSED.name() : null) + .setReviewGroups(List.of(new StageReviewGroup() + .setId(UUIDUtil.generate()) + .setReviewers(stageControlOption.getTriggerUsers()) + .setStatus(stageControlOption.getTriggered() ? ManualReviewAction.PROCESS.name() : null) + .setParams(stageControlOption.getReviewParams()))) + .setReviewDesc(stageControlOption.getReviewDesc()) + .setReviewParams(stageControlOption.getReviewParams()) + .setTimeout(stageControlOption.getTimeout()); + } +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StageReviewGroup.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StageReviewGroup.java new file mode 100644 index 0000000..ca20915 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StageReviewGroup.java @@ -0,0 +1,39 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:StageReviewGroup + * @Date:2025/03/25 16:36 + * @Filename:StageReviewGroup + * @description:Todo + */ +@Data +@Schema(title = "Stage审核组信息") +public class StageReviewGroup { + @Schema(title = "审核组ID(后台生成)", required = false) + private String id; + @Schema(title = "审核组名称", required = true) + private String name = "Flow 1"; + @Schema(title = "审核人员", required = true) + private List reviewers = new ArrayList<>(); + @Schema(title = "审核用户组", required = false) + private List groups = new ArrayList<>(); + @Schema(title = "审核结果(枚举)", required = false) + private String status; + @Schema(title = "审核操作人", required = false) + private String operator; + @Schema(title = "审核操作时间", required = false) + private Long reviewTime; + @Schema(title = "审核建议", required = false) + private String suggest; + @Schema(title = "审核传入变量", required = false) + private List params; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StageReviewRequest.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StageReviewRequest.java new file mode 100644 index 0000000..3042fc6 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StageReviewRequest.java @@ -0,0 +1,24 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:StageReviewRequest + * @Date:2025/03/25 16:38 + * @Filename:StageReviewRequest + * @description:Todo + */ +@Data +@Schema(title = "人工审核-自定义参数审核体") +public class StageReviewRequest { + @Schema(title = "审核参数", required = true) + private List reviewParams; + @Schema(title = "审核组ID", required = false) + private String id; + @Schema(title = "审核建议", required = false) + private String suggest; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StoreInitPipelineReq.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StoreInitPipelineReq.java new file mode 100644 index 0000000..0b26d32 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StoreInitPipelineReq.java @@ -0,0 +1,24 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:StoreInitPipelineReq + * @Date:2025/03/25 16:38 + * @Filename:StoreInitPipelineReq + * @description:Todo + */ +@Data +@Schema(title = "研发商店初始化流水线请求报文体") +public class StoreInitPipelineReq { + @Schema(title = "流水线模型", required = true) + private String pipelineModel; + @Schema(title = "流水线启动参数", required = true) + private Map startParams; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StoreInitPipelineResp.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StoreInitPipelineResp.java new file mode 100644 index 0000000..eb24e9f --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/StoreInitPipelineResp.java @@ -0,0 +1,22 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:StoreInitPipelineResp + * @Date:2025/03/25 16:38 + * @Filename:StoreInitPipelineResp + * @description:Todo + */ +@Data +@Schema(title = "研发商店初始化流水线报文响应体") +public class StoreInitPipelineResp { + @Schema(title = "流水线ID", required = true) + private String pipelineId; + @Schema(title = "构建ID", required = false) + private String buildId; +} diff --git a/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/TemplateInstanceCreateRequest.java b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/TemplateInstanceCreateRequest.java new file mode 100644 index 0000000..2614c27 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/java/cd/casic/ci/common/pipeline/pojo/TemplateInstanceCreateRequest.java @@ -0,0 +1,44 @@ +package cd.casic.ci.common.pipeline.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.common.pipeline.pojo + * @Project:ops-pro + * @name:TemplateInstanceCreateRequest + * @Date:2025/03/25 16:38 + * @Filename:TemplateInstanceCreateRequest + * @description:Todo + */ +@Data +public class TemplateInstanceCreateRequest { + @Schema(title = "模板ID", required = true) + private String templateId; + @Schema(title = "模板版本号(为空时默认最新)", required = true) + private Long templateVersion; + @Schema(title = "流水线名称", required = true) + private String pipelineName; + @Schema(title = "是否使用通知配置", required = false) + private Boolean useSubscriptionSettings; + @Schema(title = "是否使用标签配置", required = false) + private Boolean useLabelSettings; + @Schema(title = "是否使用并发组配置", required = false) + private Boolean useConcurrencyGroup; + @Schema(title = "创建实例的模式", required = false) + private String instanceType = PipelineInstanceTypeEnum.FREEDOM.type; + @Schema(title = "是否为空模板", required = false) + private Boolean emptyTemplate; + @Schema(title = "静态流水线组", required = false) + private List staticViews = new ArrayList<>(); + @Schema(title = "是否继承项目流水线语言风格", required = false) + private Boolean inheritedDialect = true; + @Schema(title = "流水线语言风格", required = false) + private String pipelineDialect; + @Schema(title = "流水线标签", required = false) + private List labels = new ArrayList<>(); +} \ No newline at end of file diff --git a/modules/ci-commons/common-pipeline/src/main/resources/application.properties b/modules/ci-commons/common-pipeline/src/main/resources/application.properties new file mode 100644 index 0000000..1c34b2a --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=common-pipeline diff --git a/modules/ci-commons/common-pipeline/src/test/java/cd/casic/ci/common/pipeline/CommonPipelineApplicationTests.java b/modules/ci-commons/common-pipeline/src/test/java/cd/casic/ci/common/pipeline/CommonPipelineApplicationTests.java new file mode 100644 index 0000000..cabc758 --- /dev/null +++ b/modules/ci-commons/common-pipeline/src/test/java/cd/casic/ci/common/pipeline/CommonPipelineApplicationTests.java @@ -0,0 +1,13 @@ +package cd.casic.ci.common.pipeline; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class CommonPipelineApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/modules/ci-commons/pom.xml b/modules/ci-commons/pom.xml index 2b1d51f..216b216 100644 --- a/modules/ci-commons/pom.xml +++ b/modules/ci-commons/pom.xml @@ -14,197 +14,14 @@ ci-commons ${revision} - jar + pom + + + common-api + common-pipeline + 流水线process、流水线engine、流水线work、资源管理层、环境管理、agent、构建调度、项目管理、代码库、凭证、扩展Plugin、日志、流水线外设需要的commons - - - - - cd.casic.boot - spring-boot-starter-mybatis - - - org.projectlombok - lombok - - - - javax.ws.rs - javax.ws.rs-api - 2.0 - - - - io.swagger.core.v3 - swagger-annotations - 2.2.16 - - - - org.hashids - hashids - 1.0.3 - - - - com.fasterxml.jackson.module - jackson-module-kotlin - 2.13.4 - - - - com.fasterxml.jackson.core - jackson-databind - 2.13.4.2 - - - - com.fasterxml.jackson.core - jackson-core - 2.13.4 - - - - com.fasterxml.jackson.core - jackson-annotations - 2.13.4 - - - - com.fasterxml.jackson.jaxrs - jackson-jaxrs-json-provider - 2.13.4 - - - - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - 2.13.4 - - - - com.fasterxml.jackson.jaxrs - jackson-jaxrs-base - 2.13.4 - - - - org.bouncycastle - bcprov-jdk15on - 1.70 - - - - com.github.fge - json-schema-validator - 2.2.6 - - - - com.google.guava - guava - 18.0 - - - - com.squareup.okhttp3 - okhttp - 4.9.0 - - - - commons-codec - commons-codec - 1.15 - - - - org.springframework.boot - spring-boot-starter-data-redis - - - - org.apache.commons - commons-compress - - - - org.apache.commons - commons-exec - - - - org.apache.commons - commons-collections4 - 4.4 - - - - javax.servlet - javax.servlet-api - 4.0.1 - provided - - - - - - - - - - com.vdurmont - emoji-java - 5.1.1 - - - - org.apache.lucene - lucene-core - 8.11.1 - - - - org.apache.commons - commons-csv - 1.8 - - - - com.github.ben-manes.caffeine - caffeine - - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - 2.13.4 - - - - com.jakewharton - disklrucache - 2.0.2 - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 9 - 9 - - - - - \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/constant/CommonConstants.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/constant/CommonConstants.java deleted file mode 100644 index 27e2ed4..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/constant/CommonConstants.java +++ /dev/null @@ -1,136 +0,0 @@ -package cd.casic.ci.commons.commonapi.constant; - -/** - * @Classname CommonConstants - * @Description TODO - * @Date 2025/3/18 10:02 - * @author mianbin - */ -public class CommonConstants { - public static final String BCI_CODE_PREFIX = "BCI_CODE_"; - public static final String DEVOPS = "DevOps"; - public static final Integer NUM_ONE = 1; - public static final Integer NUM_TWO = 2; - public static final Integer NUM_THREE = 3; - public static final Integer NUM_FOUR = 4; - public static final Integer NUM_FIVE = 5; - public static final Integer NUM_SIX = 6; - public static final Integer NUM_SEVEN = 7; - public static final Integer NUM_EIGHT = 8; - public static final Integer NUM_NINE = 9; - public static final String INIT_VERSION = "1.0.0"; // 初始化版本 - public static final String BEGIN = "begin"; // 开始 - public static final String EDIT = "edit"; // 提交信息 - public static final String COMMIT = "commit"; // 提交 - public static final String BUILD = "build"; // 构建 - public static final String CHECK = "check"; // 验证 - public static final String TEST = "test"; // 测试 - public static final String CODECC = "codecc"; // 代码检查 - public static final String APPROVE = "approve"; // 审核 - public static final String END = "end"; // 结束 - public static final String SUCCESS = "success"; // 成功 - public static final String UNDO = "undo"; // 未执行 - public static final String DOING = "doing"; // 执行中 - public static final String FAIL = "fail"; // 失败 - public static final String ONLINE = "online"; // 上线 - public static final String TEST_ENV_PREPARE = "testEnvPrepare"; // 准备测试环境 - public static final String ING = "ing"; // 中 - public static final String LATEST = "latest"; // 最新 - public static final String DEVELOP = "develop"; // 开发 - public static final String DEPLOY = "deploy"; // 部署 - public static final String SECURITY = "security"; // 安全 - public static final String NORMAL = "normal"; // 正常 - public static final String EXCEPTION = "exception"; // 异常 - public static final String REQUIRED = "required"; // 必选 - public static final String MIN_LENGTH = "minLength"; // 最小长度 - public static final String MAX_LENGTH = "maxLength"; // 最大长度 - public static final String DEFAULT = "default"; // 默认 - public static final String JAVA = "java"; // java - public static final String PYTHON = "python"; // python - public static final String NODEJS = "nodejs"; // nodejs - public static final String GOLANG = "golang"; // golang - public static final String JS = "js"; // js - public static final String PATTERN_STYLE = "patternStyle"; // 正则表达式规则 - public static final String MESSAGE = "message"; // 提示信息 - public static final String STATIC = "static"; // 静态资源 - public static final String NAME = "name"; // 名称 - public static final String FAIL_NUM = "failNum"; // 失败数量 - public static final String VERSION = "version"; // 版本号 - public static final String TYPE = "type"; // 类型 - public static final String OUTPUT_DESC = "description"; // 插件输出字段描述 - public static final String COMPONENT = "component"; // 组件 - public static final String PIPELINE_URL = "pipelineUrl"; // 流水线链接 - public static final String ARTIFACT = "artifact"; // 构件 - public static final String REPORT = "report"; // 报告 - public static final String VALUE = "value"; // 值 - public static final String MULTIPLE_SELECTOR = "multiple"; // 多选 - public static final String SINGLE_SELECTOR = "single"; // 单选 - public static final String OPTIONS = "options"; // 可选项 - public static final String LABEL = "label"; // 标签 - public static final String NO_LABEL = "noLabel"; // 无标题 - public static final String URL = "url"; // url链接 - public static final String PATH = "path"; // 路径 - public static final String ARTIFACTORY_TYPE = "artifactoryType"; // 归档仓库类型 - public static final String REPORT_TYPE = "reportType"; // 报告类型 - public static final String DATA = "data"; // 数据 - public static final String STRING = "string"; // 字符串 - public static final String LATEST_MODIFIER = "latestModifier"; // 最近修改人 - public static final String LATEST_UPDATE_TIME = "latestUpdateTime"; // 最近修改时间 - public static final String LATEST_EXECUTOR = "latestExecutor"; // 最近执行人 - public static final String LATEST_EXECUTE_TIME = "latestExecuteTime"; // 最近执行时间 - public static final String DANG = "dang"; // 当 - public static final String AND = "and"; // 和 - public static final String OR = "or"; // 或 - public static final String TIMETOSELECT = "timetoSelect"; // 时必选 - public static final String MASTER = "master"; // 主干 - public static final String SYSTEM = "system"; // 系统 - public static final String BUILD_RUNNING = "buildRunning"; // 运行中 - public static final String BUILD_QUEUE = "buildQueue"; // 构建排队中 - public static final String BUILD_REVIEWING = "buildReviewing"; // 构建待审核 - public static final String BUILD_STAGE_SUCCESS = "buildStageSuccess"; // 构建阶段性完成 - public static final String BUILD_COMPLETED = "buildCompleted"; // 构建完成 - public static final String BUILD_CANCELED = "buildCanceled"; // 构建已取消 - public static final String BUILD_FAILED = "buildFailed"; // 构建失败 - public static final String ID = "id"; // id - public static final String STATUS = "status"; // 状态 - public static final String EXECUTE_COUNT = "executeCount"; - public static final String DEFAULT_LOCALE_LANGUAGE = "zh_CN"; // 默认语言信息 - public static final String REQUEST_CHANNEL = "BK_CI_REQUEST_CHANNEL"; // 请求渠道 - public static final String BK_CREATE = "bkCreate"; // 创建 - public static final String BK_REVISE = "bkRevise"; // 修改 - public static final String KEY_START_TIME = "startTime"; - public static final String KEY_END_TIME = "endTime"; - public static final String KEY_CHANNEL = "channel"; - public static final String HIDDEN_SYMBOL = "******"; - public static final String KEY_DEFAULT = "default"; - public static final String KEY_INPUT = "vuex-input"; - public static final String KEY_TEXTAREA = "vuex-textarea"; - public static final String KEY_CODE_EDITOR = "atom-ace-editor"; - public static final String KEY_OS = "os"; - public static final String KEY_SUMMARY = "summary"; - public static final String KEY_DOCSLINK = "docsLink"; - public static final String KEY_DESCRIPTION = "description"; - public static final String KEY_WEIGHT = "weight"; - public static final String KEY_ALL = "all"; - public static final String API_ACCESS_TOKEN_PROPERTY = "access_token"; - public static final String TEMPLATE_ACROSS_INFO_ID = "devops_template_across_info_id"; - public static final String KEY_OS_NAME = "osName"; - public static final String KEY_OS_ARCH = "osArch"; - public static final String KEY_INVALID_OS_INFO = "invalidOsInfo"; - public static final String KEY_VALID_OS_NAME_FLAG = "validOsNameFlag"; - public static final String KEY_VALID_OS_ARCH_FLAG = "validOsArchFlag"; - public static final String KEY_SCRIPT = "script"; - public static final String KEY_COMMIT_ID = "commitId"; - public static final String KEY_BRANCH = "branch"; - public static final String KEY_REPOSITORY_HASH_ID = "repositoryHashId"; - public static final String KEY_REPOSITORY_PATH = "repositoryPath"; - public static final String KEY_VERSION = "version"; - public static final String KEY_VERSION_NAME = "versionName"; - public static final String KEY_UPDATED_TIME = "updatedTime"; - public static final String KEY_DEFAULT_LOCALE_LANGUAGE = "defaultLocaleLanguage"; - public static final String BK_BUILD_ENV_START_FAILED = "BuildEnvStartFailed"; // 构建环境启动失败 - public static final String BK_START_PULL_IMAGE = "StartPullImage"; // 开始拉取镜像,镜像名称: - public static final String BK_PULLING_IMAGE = "PullingImage"; // 正在拉取镜像,第{0}层,进度:{1} - public static final String BK_PUSH_IMAGE = "PushImage"; // 正在推送镜像,第{0}层,进度:{1} - public static final String BK_HUMAN_SERVICE = "HumanService"; // 人工服务 -} diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/constant/CommonMessageCode.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/constant/CommonMessageCode.java deleted file mode 100644 index 726ad39..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/constant/CommonMessageCode.java +++ /dev/null @@ -1,222 +0,0 @@ -package cd.casic.ci.commons.commonapi.constant; - -/** - * @Classname CommonMessageCode - * @Description - * * 流水线微服务模块请求返回状态码 - * * 返回码制定规则(0代表成功,为了兼容历史接口的成功状态都是返回0): - * * 1、返回码总长度为7位, - * * 2、前2位数字代表系统名称(如21代表平台) - * * 3、第3位和第4位数字代表微服务模块(00:common-公共模块 01:process-流水线 02:artifactory-版本仓库 03:dispatch-分发 04:dockerhost-docker机器 - * * 05:environment-环境 06:experience-版本体验 07:image-镜像 08:log-日志 09:measure-度量 10:monitoring-监控 11:notify-通知 - * * 12:openapi-开放api接口 13:plugin-插件 14:quality-质量红线 15:repository-代码库 16:scm-软件配置管理 17:support-支撑服务 - * * 18:ticket-证书凭据 19:project-项目管理 20:store-商店 21: auth-权限 22:sign-签名服务 23:metrics-度量服务 24:external-外部 - * * 25:prebuild-预建 26: dispatcher-kubernetes 27:buildless 28: lambda 29: stream 30: worker 31: dispatcher-docker - * * 32: remotedev) - * * 4、最后3位数字代表具体微服务模块下返回给客户端的业务逻辑含义(如001代表系统服务繁忙,建议一个模块一类的返回码按照一定的规则制定)remotedev - * * 5、系统公共的返回码写在CommonMessageCode这个类里面,具体微服务模块的返回码写在相应模块的常量类里面 - * @Date 2025/3/18 10:08 - * @Created by mianbin - */ -public class CommonMessageCode { - public static final String MSG_CODE_ROLE_PREFIX = "MSG_CODE_ROLE_PREFIX_"; // 角色国际化前缀 - public static final String MSG_CODE_PERMISSION_PREFIX = "MSG_CODE_PERMISSION_PREFIX_";// 操作权限国际化前缀 - public static final String SUCCESS = "0"; // 成功 - public static final Integer OAUTH_DENERD = 418; // 自定义状态码, 未进行oauth认证 - public static final String SYSTEM_ERROR = "2100001"; // 系统内部繁忙,请稍后再试 - public static final String PARAMETER_IS_NULL = "2100002";// 参数{0}不能为空 - public static final String PARAMETER_IS_EXIST = "2100003";// 参数值{0}已经存在系统,请换一个再试 - public static final String PARAMETER_IS_INVALID = "2100004";// 参数值{0}为非法数据 - public static final String OAUTH_TOKEN_IS_INVALID = "2100005";// 无效的token,请先oauth认证 - public static final String PERMISSION_DENIED = "2100006";// 无权限{0} - public static final String ERROR_SERVICE_NO_FOUND = "2100007";// "找不到任何有效的{0}服务提供者" - public static final String ERROR_SERVICE_INVOKE_FAILURE = "2100008";// "服务调用失败:{0},uniqueId={1}" - public static final String ERROR_INVALID_CONFIG = "2100009";// "配置不可用:{0},uniqueId={1}" - public static final String ERROR_REST_EXCEPTION_COMMON_TIP = "2100010";// 接口访问出现异常,请联系助手或稍后再重试 - public static final String ERROR_CLIENT_REST_ERROR = "2100011";// 用户请求不合法,参数或方法错误,请咨询助手 - public static final String ERROR_PROJECT_FEATURE_NOT_ACTIVED = "2100012";// 项目[{0}]未开通该功能 - public static final String ERROR_INVALID_PARAM_ = "2100013";// 无效参数: {0} - public static final String ERROR_NEED_PARAM_ = "2100014";// 缺少参数: {0} - public static final String PARAMETER_VALIDATE_ERROR = "2100015";// {0}参数校验错误: {1} - public static final String ERROR_SERVICE_NO_AUTH = "2100016";// 无访问服务的权限 - public static final String ERROR_QUERY_NUM_TOO_BIG = "2100017";// 查询的数量超过系统规定的值:{0},请调整查询条件或咨询助手 - public static final String ERROR_QUERY_TIME_RANGE_TOO_LARGE = "2100018";// 查询的时间范围跨度最大,最长时间范围跨度不能超过{0}天 - public static final String ERROR_HTTP_RESPONSE_BODY_TOO_LARGE = "2100019";// http请求返回体太大 - public static final String PERMISSION_DENIED_FOR_APP = "2100020";// APP的无权限{0} - public static final String ERROR_SENSITIVE_API_NO_AUTH = "2100021";// 无敏感API访问权限 - public static final String PARAMETER_LENGTH_TOO_LONG = "2100022";// 参数长度不能超过{0}个字符 - public static final String PARAMETER_LENGTH_TOO_SHORT = "2100023";// 参数长度不能小于{0}个字符 - public static final String PARAMETER_ILLEGAL_ERROR = "2100024";// {0}参数非法错误: {1} - public static final String PARAMETER_EXPIRED_ERROR = "2100025";// {0}token过期错误: {1} - public static final String PARAMETER_SECRET_ERROR = "2100026";// {0}密钥配置错误: {1} - public static final String PARAMETER_IS_EMPTY = "2100027";// 参数不能为空 - public static final String ERROR_QUERY_TIME_RANGE_ERROR = "2100028";// 查询的时间范围跨度错误 - public static final String SERVICE_NOT_EXIST = "2100029";// 父服务不存在异常 - - public static final String ILLEGAL_GITCI_SERVICE_IMAGE_FORMAT = "2100030";// GITCI Service镜像格式非法 - public static final String THIRD_PARTY_SERVICE_DEVCLOUD_EXCEPTION = "2100031";// 第三方服务-DEVCLOUD 异常,请联系8006排查,异常信息 - - public static final String CREATE_CONTAINER_INTERFACE_EXCEPTION = "2100032";// 创建容器接口异常 - public static final String CREATE_CONTAINER_RETURNS_FAILED = "2100033";// 创建容器接口返回失败 - public static final String CREATE_CONTAINER_TIMED_OUT = "2100034";// 创建容器接口超时 - public static final String OPERATION_CONTAINER_INTERFACE_EXCEPTION = "2100035";// 操作容器接口异常 - public static final String OPERATION_CONTAINER_RETURNED_FAILURE = "2100036";// 操作容器接口返回失败 - public static final String OPERATION_CONTAINER_TIMED_OUT = "2100037";// 操作容器接口超时 - public static final String GET_STATUS_INTERFACE_EXCEPTION = "2100038";// 获取容器状态接口异常 - public static final String GET_STATUS_TIMED_OUT = "2100039";// 获取容器状态接口超时 - public static final String CREATE_MIRROR_INTERFACE_EXCEPTION = "2100040";// 创建镜像接口异常 - public static final String CREATE_MIRROR_INTERFACE_RETURNED_FAILURE = "2100041";// 创建镜像接口返回失败 - public static final String CREATE_MIRROR_INTERFACE_EXCEPTION_NEW = "2100042";// 创建镜像新版本接口异常 - public static final String NEW_MIRROR_INTERFACE_RETURNED_FAILURE = "2100043";// 创建镜像新版本接口返回失败 - public static final String TASK_STATUS_INTERFACE_EXCEPTION = "2100044";// 获取TASK状态接口异常 - public static final String TASK_STATUS_TIMED_OUT = "2100045";// 获取TASK状态接口超时 - public static final String GET_WEBSOCKET_INTERFACE_EXCEPTION = "2100046";// 获取websocket接口异常 - public static final String PARAMETER_CANNOT_EMPTY_ALL = "2100047";// 参数不能全部为空 - public static final String USERS_EXCEEDS_THE_LIMIT = "2100048";// 授权用户数越界:{0} - public static final String FAILED_TO_QUERY_GSE_AGENT_STATUS = "2100049";// 查询 Gse Agent 状态失败 - public static final String FAILED_TO_GET_AGENT_STATUS = "2100050";// 获取agent状态失败 - public static final String FAILED_TO_GET_CMDB_NODE = "2100051";// 获取 CMDB 节点失败 - public static final String FAILED_TO_GET_CMDB_LIST = "2100052";// 获取CMDB列表失败 - public static final String STAGES_AND_STEPS_CANNOT_EXIST_BY_SIDE = "2100053";// stages和steps不能并列存在! - - public static final String USER_NOT_PERMISSIONS_OPERATE_PIPELINE = "2100054";// 用户({0})无权限在工程({1})下{2}流水线{3} - public static final String USER_NOT_HAVE_PROJECT_PERMISSIONS = "2100055";// 用户 {0}无项目{1}权限 - public static final String UNABLE_GET_PIPELINE_JOB_STATUS = "2100056";// 无法获取流水线JOB状态,构建停止 - public static final String JOB_BUILD_STOPS = "2100057";// 流水线JOB已经不再运行,构建停止 - public static final String PIPELINE_NAME_OCCUPIED = "2100058";// 流水线名称已被他人使用 - public static final String INTERNAL_DEPENDENCY_SERVICE_EXCEPTION = "2100059";// 内部依赖服务异常 - public static final String PUBLIC_BUILD_RESOURCE_POOL_NOT_EXIST = "2100060";// 公共构建资源池不存在,请检查yml配置. - public static final String ERROR_LANGUAGE_IS_NOT_SUPPORT = "2100061";// 该语言蓝盾目前不支持,蓝盾目前支持的语言标识为:{0} - public static final String INIT_SERVICE_LIST_ERROR = "2100062";// 初始化服务列表异常问题 - public static final String FILE_NOT_EXIST = "2100063";// 文件{0}不存在 - public static final String USER_ACCESS_CHECK_FAIL = "2100064";// Gitlab access token 不正确 - - public static final String GITLAB_TOKEN_EMPTY = "2100065";// GitLab Token为空 - public static final String GITLAB_HOOK_URL_EMPTY = "2100066";// GitLab hook url为空 - public static final String GITLAB_TOKEN_FAIL = "2100067";// GitLab Token不正确 - public static final String GIT_TOKEN_FAIL = "2100068";// Git Token不正确 - public static final String SERCRT_EMPTY = "2100069";// GIT 私钥为空 - public static final String GIT_SERCRT_WRONG = "2100070";// Git 私钥不对 - public static final String PWD_EMPTY = "2100071";// 用户密码为空 - public static final String USER_NAME_EMPTY = "2100072";// 用户名为空 - public static final String GITLAB_INVALID = "2100073";// 无效的GITLAB仓库 - public static final String GIT_TOKEN_WRONG = "2100074";// Git Token 不正确 - public static final String GIT_LOGIN_FAIL = "2100075";// Git 用户名或者密码不对 - public static final String GIT_TOKEN_EMPTY = "2100076";// Git Token为空 - public static final String GIT_HOOK_URL_EMPTY = "2100077";// Git hook url为空 - public static final String TGIT_LOGIN_FAIL = "2100078";// TGit 用户名或者密码不对 - public static final String TGIT_TOKEN_EMPTY = "2100079";// TGit Token 不正确 - public static final String TGIT_SECRET_WRONG = "2100080";// TGit 私钥不对 - public static final String SVN_SECRET_OR_PATH_ERROR = "2100081";// SVN 私钥不正确 或者 SVN 路径没有权限 - public static final String SVN_CREATE_HOOK_FAIL = "2100082";// 添加SVN WEB hook 失败 - public static final String LOCK_FAIL = "2100083";// lock失败 - public static final String UNLOCK_FAIL = "2100084";// unlock失败 - public static final String GIT_REPO_PEM_FAIL = "2100085";// 代码仓库访问未授权 - public static final String CALL_REPO_ERROR = "2100086";// 代码仓库访问异常 - public static final String P4_USERNAME_PASSWORD_FAIL = "2100087";// p4用户名密码错误 - public static final String PARAM_ERROR = "2100088";// 参数错误 - public static final String AUTH_FAIL = "2100089";// {0}认证失败 - public static final String ACCOUNT_NO_OPERATION_PERMISSIONS = "2100090";// 账户没有{0}的权限 - public static final String REPO_NOT_EXIST_OR_NO_OPERATION_PERMISSION = "2100091";// {0}仓库不存在或者是账户没有该项目{1}的权限 - public static final String GIT_INTERFACE_NOT_EXIST = "2100092";// {0}平台没有{1}的接口 - public static final String GIT_CANNOT_OPERATION = "2100093";// {0}平台{1}操作不能进行 - public static final String WEBHOOK_LOCK_UNLOCK_FAIL = "2100094";// unlock webhooklock失败,请确认token是否已经配置 - public static final String COMMIT_CHECK_ADD_FAIL = "2100095";// Commit Check添加失败,请确保该代码库的凭据关联的用户对代码库有Developer权限 - public static final String ADD_MR_COMMENTS_FAIL = "2100096";// 添加MR的评论失败,请确保该代码库的凭据关联的用户对代码库有Developer权限 - public static final String WEBHOOK_ADD_FAIL = "2100097";// Webhook添加失败,请确保该代码库的凭据关联的用户对代码库有{0}权限 - public static final String WEBHOOK_UPDATE_FAIL = "2100098";// Webhook更新失败,请确保该代码库的凭据关联的用户对代码库有Developer权限 - public static final String ENGINEERING_REPO_UNAUTHORIZED = "2100099";// 工程仓库访问未授权 - public static final String ENGINEERING_REPO_NOT_EXIST = "2100100";// 工程仓库不存在 - public static final String ENGINEERING_REPO_CALL_ERROR = "2100101";// 工程仓库访问异常 - public static final String NOT_MEMBER_AND_NOT_OPEN_SOURCE = "2100102";// 非项目成员且项目为非开源项目 - // 2100108 - public static final String USER_NO_PIPELINE_PERMISSION = "2100108";// 流水线: 用户无{0}权限 - public static final String SERVICE_COULD_NOT_BE_ANALYZED = "2100109";// 无法根据接口"{0}"分析所属的服务 - public static final String RETURNED_RESULT_COULD_NOT_BE_PARSED = "2100110";// 内部服务返回结果无法解析 status:{0} body:{1} - public static final String SERVICE_PROVIDER_NOT_FOUND = "2100111";// 找不到任何有效的{0}【{1}】服务提供者 - public static final String ILLEGAL_JOB_TYPE = "2100112";// 非法的job类型! - public static final String ERROR_YAML_FORMAT_EXCEPTION = "2100113";// {0} 中 {1} 格式有误,应为 {2}, error message:{3} - public static final String ERROR_YAML_FORMAT_EXCEPTION_CHECK_STAGE_LABEL = "2100114";// 请核对Stage标签是否正确 - public static final String ERROR_YAML_FORMAT_EXCEPTION_LENGTH_LIMIT_EXCEEDED = "2100115";// "{0} job.id 超过长度限制64 {1}}" - public static final String ERROR_YAML_FORMAT_EXCEPTION_NEED_PARAM = "2100116";// {0} 中的step必须包含uses或run或checkout! - public static final String ERROR_YAML_FORMAT_EXCEPTION_SERVICE_IMAGE_FORMAT_ILLEGAL = "2100117";// STREAM Service镜像格式非法 - public static final String ERROR_YAML_FORMAT_EXCEPTION_STEP_ID_UNIQUENESS = "2100118";// 请确保step.id唯一性!({0}) - public static final String BUILD_RESOURCE_NOT_EXIST = "2100119";// {0}构建资源不存在,请检查yml配置. - public static final String ERROR_YAML_FORMAT_EXCEPTION_ENV_QUANTITY_LIMIT_EXCEEDED = "2100120";// {0}配置Env数量超过100限制! - // {0}Env单变量{1}长度超过{2}字符!({3}) - public static final String ERROR_YAML_FORMAT_EXCEPTION_ENV_VARIABLE_LENGTH_LIMIT_EXCEEDED = "2100121"; - - public static final String BK_CONTAINER_TIMED_OUT = "bkContainerTimedOut";// 创建容器超时 - public static final String BK_CREATION_FAILED_EXCEPTION_INFORMATION = "bkCreationFailedExceptionInformation";// 创建失败,异常信息 - - public static final String BK_FILE_NAME = "bkFileName";// 文件名 - public static final String BK_BELONG_TO_THE_PROJECT = "bkBelongToTheProject";// 所属项目 - public static final String BK_OPERATING = "bkOperating";// 操作 - public static final String BK_PUSH_FROM_BLUE_SHIELD_DEVOPS_PLATFORM = "bkPushFromBlueShieldDevopsPlatform";// 来自蓝盾DevOps平台的推送 - public static final String BK_TABLE_CONTENTS = "bkTableContents";// 表格内容 - public static final String BK_PLEASE_FEEL_TO_CONTACT_BLUE_SHIELD_ASSISTANT = "bkPleaseFeelToContactBlueShieldAssistant"; - // 如有任何问题,可随时联系蓝盾助手 - public static final String BK_ETH1_NETWORK_CARD_IP_EMPTY = "bkEth1NetworkCardIpEmpty";// eth1 网卡Ip为空,因此,获取eth0的网卡ip - public static final String BK_LOOPBACK_ADDRESS_OR_NIC_EMPTY = "bkLoopbackAddressOrNicEmpty";// loopback地址或网卡名称为空 - public static final String BK_FAILED_GET_NETWORK_CARD = "bkFailedGetNetworkCard";// 获取网卡失败 - public static final String BK_MANUAL_TRIGGER = "bkManualTrigger";// 手动触发 - public static final String BK_BUILD_TRIGGER = "bkBuildTrigger";// 构建触发 - public static final String BK_VIEW_DETAILS = "bkSeeDetails";// 查看详情 - public static final String BK_PROJECT_ID = "bkProjectId";// # 项目ID: - public static final String BK_PIPELINE_NAME = "bkPipelineName";// # 流水线名称: - public static final String BK_CREATE_SERVICE = "bkCreateService";// 创建{0}服务 - public static final String BK_SESSION_ID = "bkSessionId";// 会话ID - public static final String BK_GROUP_ID = "bkGroupId";// 群ID - public static final String BK_THIS_GROUP_ID = "bkThisGroupId";// 本群ID={0}。PS:群ID可用于蓝盾平台上任意企业微信群通知。 - public static final String BK_MISSING_RESOURCE_DEPENDENCY = "bkMissingResourceDependency";// 依赖的资源不存在 - - public static final String BK_REQUEST_TIMED_OUT = "bkRequestTimedOut";// 请求超时 - public static final String BK_QUERY_PARAM_REQUEST_ERROR = "bkQueryParamRequestError";// 查询参数请求错误 - public static final String BK_JSON_BAD_PARAMETERS = "bkJsonBadParameters";// JSON参数错误/Bad Parameters in json - // 请求体内容参数错误。温馨提示:请确认{0}是否符合要求 - public static final String BK_REQUEST_BODY_CONTENT_PARAMETER_INCORRECT = "bkRequestBodyContentParameterIncorrect"; - public static final String BK_REQUESTED_RESOURCE_DOES_NOT_EXIST = "bkRequestedResourceDoesNotExist";// 请求的资源不存在 - public static final String BK_NOT_OAUTH_CERTIFICATION = "bkNotOauthCertification";// 你没有Oauth认证 - public static final String BK_QUERY_PARAM_REQUEST_EMPTY = "bkQueryParamRequestEmpty";// 请求的参数内容为空 - public static final String BK_QUERY_PARAM_TYPE_ERROR = "bkQueryParamTypeError";// 查询参数类型错误 - // 你没有权限进行该操作 - public static final String BK_NOT_HAVE_PERMISSION_PERFORM_THIS_OPERATION = "bkNotHavePermissionPerformThisOperation"; - // 访问后台数据失败,已通知产品、开发,请稍后重试 - public static final String BK_FAILED_ACCESS_BACKGROUND_DATA = "bkFailedAccessBackgroundData"; - // 未授权访问的资源 - public static final String BK_RESOURCES_THAT_NOT_AUTHORIZED_ACCESS = "bkResourcesThatNotAuthorizedAccess"; - public static final String BK_CODE_BASE_TRIGGERING = "bkCodeBaseTriggering";// 代码库触发 - public static final String BK_FAILED_START_BUILD_MACHINE = "bkFailedStartBuildMachine";// 启动构建机失败 - - public static final String CREATE_BRANCH = "bkCreateBranch";// 创建分支 - public static final String DELETE_BRANCH = "bkDeleteBranch";// 删除分支 - - public static final String GET_PROJECT_INFO = "bkGetProjectInfo";// 获取项目详情 - - public static final String OPERATION_BRANCH = "bkOperationBranch";// 拉分支 - public static final String OPERATION_TAG = "bkOperationTag";// 拉标签 - public static final String OPERATION_ADD_WEBHOOK = "bkOperationAddWebhook";// 添加WEBHOOK - public static final String OPERATION_UPDATE_WEBHOOK = "bkOperationUpdateWebhook";// 修改WEBHOOK - public static final String OPERATION_LIST_WEBHOOK = "bkOperationListWebhook";// 查询WEBHOOK - public static final String OPERATION_ADD_COMMIT_CHECK = "bkOperationAddCommitCheck";// 添加COMMIT CHECK - public static final String OPERATION_ADD_MR_COMMENT = "bkOperationAddMrComment";// 添加MR COMMENT - public static final String OPERATION_COMMIT = "bkOperationCommit";// 拉提交记录 - public static final String OPERATION_COMMIT_DIFF = "bkOperationCommitDiff";// 查询commit变化 - public static final String OPERATION_UNLOCK_HOOK_LOCK = "bkOperationUnlockHookLock";// 解锁hook锁 - public static final String OPERATION_MR_CHANGE = "bkOperationMrChange";// 查询合并请求的代码变更 - public static final String OPERATION_MR_INFO = "bkOperationMrInfo";// 查询项目合并请求 - public static final String OPERATION_GET_CHANGE_FILE_LIST = "bkOperationGetChangeFileList";// 查询变更文件列表 - public static final String OPERATION_GET_MR_COMMIT_LIST = "bkOperationGetMrCommitList";// 获取合并请求中的提交 - public static final String OPERATION_PROJECT_USER_INFO = "bkOperationProjectUserInfo";// 获取项目中成员信息 - public static final String OPERATION_TAPD_WORKITEMS = "bkOperationTapdWorkItems";// 查看绑定的TAPD单 - public static final String BK_USER_GROUP_CRATE_TIME = "bkUserGroupCrateTime";// {0} 用户组:{1},由{2} 创建于 - public static final String BK_USER_RATING_ADMIN_CRATE_TIME = "bkUserRatingAdminCrateTime";// {0} 分级管理员,由{1} 创建于 - public static final String BK_SECOND_LEVEL_ADMIN_CREATE = "bkSecondLevelAdminCreate";// {0} 二级管理员, 由{1} 创建于 - public static final String BK_SECOND_LEVEL_ADMIN_REVISE = "bkSecondLevelAdminRevise";// {0} 二级管理员, 由{1} 修改于 - // 用户 {0} 申请{1}蓝盾项目 {2} ,请审批! - public static final String BK_USER_REQUESTS_THE_PROJECT = "bkUserRequestsTheProject"; - public static final String BK_ENV_NOT_YET_SUPPORTED = "bkEnvNotYetSupported";// 尚未支持 {0} {1},请联系 管理员 添加对应版本 - - public static final String BK_BUILD_ENV_TYPE = "BUILD_ENV_TYPE_";// 构建环境- - public static final String BK_BUILD_ENV_TYPE_BUILDLESS = "BUILD_ENV_TYPE_BUILDLESS";// 无编译环境 - public static final String BK_BUILD_ENV_TYPE_BUILD_TRIGGERS = "BUILD_ENV_TYPE_BUILD_TRIGGER";// 构建触发 -} diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/AgentStatus.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/AgentStatus.java deleted file mode 100644 index 0b517ce..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/AgentStatus.java +++ /dev/null @@ -1,57 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - - -import lombok.SneakyThrows; - -public enum AgentStatus { - UN_IMPORT(0), // 未导入,用户刚刚在界面上面生成链接 - UN_IMPORT_OK(1), // 未导入但是agent状态正常(这个时候还是不能用来当构建机) - IMPORT_OK(2), // 用户已经在界面导入并且agent工作正常(构建机只有在这个状态才能正常工作) - IMPORT_EXCEPTION(3), // agent异常 - DELETE(4); - - private final int status; - - AgentStatus(int status) { - this.status = status; - } - - @Override - public String toString() { - return String.valueOf(status); - } - - @SneakyThrows - public static AgentStatus fromStatus(int status) { - for (AgentStatus value : values()) { - if (status == value.status) { - return value; - } - } - throw new Exception("Unknown agent status(" + status + ")"); -// throw new InvalidParamException("Unknown agent status(" + status + ")"); - } - - public static boolean isDelete(AgentStatus status) { - return status == DELETE; - } - - public static boolean isUnImport(AgentStatus status) { - return status == UN_IMPORT; - } - - public static boolean isImportException(AgentStatus status) { - return status == IMPORT_EXCEPTION; - } - - @SneakyThrows - public static AgentStatus fromString(String status) { - for (AgentStatus value : values()) { - if (status.equals(value.name())) { - return value; - } - } - throw new Exception("Unknown agent status(" + status + ")"); -// throw new InvalidParamException("Unknown agent status(" + status + ")"); - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/BuildReviewType.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/BuildReviewType.java deleted file mode 100644 index 09e209f..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/BuildReviewType.java +++ /dev/null @@ -1,11 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -public enum BuildReviewType { - TASK_REVIEW, - STAGE_REVIEW, - QUALITY_TASK_REVIEW_PASS, - QUALITY_TASK_REVIEW_ABORT, - QUALITY_CHECK_IN, - QUALITY_CHECK_OUT, - TRIGGER_REVIEW -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/BusTypeEnum.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/BusTypeEnum.java deleted file mode 100644 index f0161b5..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/BusTypeEnum.java +++ /dev/null @@ -1,6 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -public enum BusTypeEnum { - PIPELINE, - TEMPLATE -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/CheckoutRepositoryType.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/CheckoutRepositoryType.java deleted file mode 100644 index e03088b..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/CheckoutRepositoryType.java +++ /dev/null @@ -1,24 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -import org.apache.commons.lang3.StringUtils; - -public enum CheckoutRepositoryType { - ID, - NAME, - URL, - SELF; - - public static CheckoutRepositoryType parseType(String type) { - if (type == null || StringUtils.isBlank(type)) { - return ID; - } - return valueOf(type); - } - - /** - * 拉取类型跳过定时触发源代码变更检查 - */ - public static boolean skipTimerTriggerChange(String type) { - return type != null && (type.equals(URL.name()) || type.equals(SELF.name())); - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/CrudEnum.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/CrudEnum.java deleted file mode 100644 index d322058..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/CrudEnum.java +++ /dev/null @@ -1,8 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -public enum CrudEnum { - CREATE, // 增加 - DELETE, // 删除 - UPDATE, // 更新 - READ // 查询 -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/EnumLoader.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/EnumLoader.java deleted file mode 100644 index ad57700..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/EnumLoader.java +++ /dev/null @@ -1,41 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ServiceLoader; -import java.util.concurrent.atomic.AtomicBoolean; - -/** - * 仅在初始化时调用一次,不可重复使用 - */ -public class EnumLoader { - private static final AtomicBoolean modify = new AtomicBoolean(false); - private static final Logger logger = LoggerFactory.getLogger(EnumLoader.class); - - private EnumLoader() { - // Private constructor to prevent instantiation - } - - public static void enumModified() { - // 同一JVM中防止多次重复加载,造成Enum实例不一致 - if (!modify.compareAndSet(false, true)) { - return; - } - - Class clazz = EnumModifier.class; - ServiceLoader fetcheries = ServiceLoader.load(clazz); - if (!fetcheries.iterator().hasNext()) { - fetcheries = ServiceLoader.load(clazz, ServiceLoader.class.getClassLoader()); - } - - fetcheries.forEach(modifier -> { - logger.info("[ENUM MODIFIER]: {}", modifier); - try { - modifier.modified(); - } catch (Exception e) { - logger.error("[ENUM MODIFIER]| load fail| {}", e.getMessage(), e); - } - }); - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/EnumModifier.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/EnumModifier.java deleted file mode 100644 index d927ecc..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/EnumModifier.java +++ /dev/null @@ -1,8 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -public interface EnumModifier { - /** - * 实现对现有枚举进行注册扩展修改 - */ - void modified(); -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/FrontendTypeEnum.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/FrontendTypeEnum.java deleted file mode 100644 index cc2fe77..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/FrontendTypeEnum.java +++ /dev/null @@ -1,26 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -public enum FrontendTypeEnum { - HISTORY("1.0"), // 历史老插件UI - NORMAL("1.1"), // 官方提供典型的插件UI配置方式 - SPECIAL("1.2"); // 定制插件UI方式 - - private final String typeVersion; - - FrontendTypeEnum(String typeVersion) { - this.typeVersion = typeVersion; - } - - public static FrontendTypeEnum getFrontendTypeObj(String typeVersion) { - for (FrontendTypeEnum enumObj : values()) { - if (enumObj.typeVersion.equals(typeVersion)) { - return enumObj; - } - } - return null; - } - - public String getTypeVersion() { - return typeVersion; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/I18nSourceEnum.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/I18nSourceEnum.java deleted file mode 100644 index 962b1cd..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/I18nSourceEnum.java +++ /dev/null @@ -1,6 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -public enum I18nSourceEnum { - DB, // 来源于数据库 - PROPERTIES // 来源于国际化资源文件 -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/I18nTranslateTypeEnum.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/I18nTranslateTypeEnum.java deleted file mode 100644 index 4f7adf3..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/I18nTranslateTypeEnum.java +++ /dev/null @@ -1,6 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -public enum I18nTranslateTypeEnum { - NAME, // 基于字段名称进行翻译 - VALUE // 基于字段值进行翻译 -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/OSType.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/OSType.java deleted file mode 100644 index 6d14822..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/OSType.java +++ /dev/null @@ -1,11 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -/** - * Powered By Tencent - */ -public enum OSType { - WINDOWS, - LINUX, - MAC_OS, - OTHER -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/PlatformEnum.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/PlatformEnum.java deleted file mode 100644 index 864c23c..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/PlatformEnum.java +++ /dev/null @@ -1,36 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -public enum PlatformEnum { - ANDROID(1, "安卓"), - IOS(2, "IOS"); - - private final int id; - private final String mean; - - PlatformEnum(int id, String mean) { - this.id = id; - this.mean = mean; - } - - public static PlatformEnum of(Integer id) { - if (id == null) { - return null; - } - - for (PlatformEnum value : values()) { - if (value.id == id) { - return value; - } - } - - return null; - } - - public int getId() { - return id; - } - - public String getMean() { - return mean; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/RepositoryType.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/RepositoryType.java deleted file mode 100644 index 4fa10b7..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/RepositoryType.java +++ /dev/null @@ -1,15 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -import org.apache.commons.lang3.StringUtils; - -public enum RepositoryType { - ID, - NAME; - - public static RepositoryType parseType(String type) { - if (type == null || StringUtils.isBlank(type)) { - return ID; - } - return valueOf(type); - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/RequestChannelTypeEnum.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/RequestChannelTypeEnum.java deleted file mode 100644 index 34612cb..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/RequestChannelTypeEnum.java +++ /dev/null @@ -1,10 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -public enum RequestChannelTypeEnum { - USER, - SERVICE, - BUILD, - OP, - OPEN, - API -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/ScmType.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/ScmType.java deleted file mode 100644 index 42d191f..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/ScmType.java +++ /dev/null @@ -1 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/SystemModuleEnum.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/SystemModuleEnum.java deleted file mode 100644 index f1e833f..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/SystemModuleEnum.java +++ /dev/null @@ -1,46 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -@SuppressWarnings("unused") -public enum SystemModuleEnum { - COMMON("00"), // 公共模块 - PROCESS("01"), // 流水线 - ARTIFACTORY("02"), // 版本仓库 - OPENAPI("12"), // 开放平台API - PLUGIN("13"), // 插件 - QUALITY("14"), // 质量红线 - REPOSITORY("15"), // 代码库 - SCM("16"), // 软件配置管理 - SUPPORT("17"), // 支撑服务 - TICKET("18"), // 证书凭据 - PROJECT("19"), // 项目管理 - STORE("20"), // 商店 - AUTH("21"), // 权限 - SIGN("22"), // 签名服务 - METRICS("23"), // 度量服务 - EXTERNAL("24"), // 外部扩展 - PREBUILD("25"), // 预构建 - BUILDLESS("27"), // buildless服务 - LAMBDA("28"), // lambda服务 - STREAM("29"), // stream服务 - WORKER("30"), // 度量服务 - REMOTEDEV("32"); // 远程开发服务 - - private final String code; - - SystemModuleEnum(String code) { - this.code = code; - } - - public static String getSystemModule(String code) { - for (SystemModuleEnum value : values()) { - if (value.code.equals(code)) { - return value.name(); - } - } - return COMMON.name(); - } - - public String getCode() { - return code; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/TaskStatusEnum.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/TaskStatusEnum.java deleted file mode 100644 index f4d8c0e..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/TaskStatusEnum.java +++ /dev/null @@ -1,12 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -public enum TaskStatusEnum { - INIT, - HANDING, - FAIL, - SUCCESS, - PENDING_ROLLBACK, - ROLLBACKING, - ROLLBACK_SUCCESS, - ROLLBACK_FAIL -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/TriggerRepositoryType.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/TriggerRepositoryType.java deleted file mode 100644 index 50120e8..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/enums/TriggerRepositoryType.java +++ /dev/null @@ -1,25 +0,0 @@ -package cd.casic.ci.commons.commonapi.enums; - -import cd.casic.ci.commons.commonapi.enums.RepositoryType; - -public enum TriggerRepositoryType { - ID, - NAME, - SELF, - NONE; // 触发器不需要绑定代码库,如定时触发默认时,不需要绑定 - - public static RepositoryType toRepositoryType(TriggerRepositoryType type) { - if (type == null) { - return null; - } - switch (type) { - case ID: - case SELF: - return RepositoryType.ID; - case NAME: - return RepositoryType.NAME; - default: - return null; - } - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/AgentResult.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/AgentResult.java deleted file mode 100644 index f74f88e..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/AgentResult.java +++ /dev/null @@ -1,47 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import cd.casic.ci.commons.commonapi.enums.AgentStatus; -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; - -@Data -@AllArgsConstructor -@Schema(title = "第三方Agent数据返回包装模型") -public class AgentResult { - @Schema(title = "状态码", required = true) - private final Integer status; - - @Schema(title = "错误信息", required = false) - private final String message; - - @Schema(title = "Agent状态", required = false) - private final AgentStatus agentStatus; - - @Schema(title = "数据", required = false) - private final T data; - - public AgentResult(AgentStatus status, T data) { - this(0, null, status, data); - } - - public AgentResult(Integer status, String message) { - this(status, message, null, null); - } - - @JsonIgnore - public boolean isNotOk() { - return status != 0; - } - - @JsonIgnore - public boolean isAgentNotOK() { - return agentStatus == null || isAgentDelete(); - } - - @JsonIgnore - public boolean isAgentDelete() { - return agentStatus != null && agentStatus == AgentStatus.DELETE; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/AtomMonitorData.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/AtomMonitorData.java deleted file mode 100644 index 43b8ae1..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/AtomMonitorData.java +++ /dev/null @@ -1,62 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Map; - -@Data -@Schema(title = "插件监控数据") -public class AtomMonitorData { - @Schema(title = "插件执行错误码", required = true) - //@InfluxTag - private Integer errorCode; - - @Schema(title = "插件执行错误信息", required = false) - private String errorMsg; - - @Schema(title = "插件执行错误类型", required = false) - //@InfluxTag - private String errorType; - - @Schema(title = "插件代码", required = true) - //@InfluxTag - private String atomCode; - - @Schema(title = "插件版本", required = true) - private String version; - - @Schema(title = "项目ID", required = true) - private String projectId; - - @Schema(title = "流水线ID", required = true) - private String pipelineId; - - @Schema(title = "构建ID", required = true) - private String buildId; - - @Schema(title = "构建环境ID", required = true) - private String vmSeqId; - - @Schema(title = "执行开始时间", required = false) - //@InfluxTag - private Long startTime; - - @Schema(title = "执行结束时间", required = false) - //@InfluxTag - private Long endTime; - - @Schema(title = "执行耗时时间", required = false) - private Long elapseTime; - - @Schema(title = "来源渠道", required = false) - private String channel; - - @Schema(title = "执行人", required = true) - private String starter; - - @Schema(title = "组织架构详细信息", required = true) - private OrganizationDetailInfo organizationDetailInfo; - - @Schema(title = "扩展数据", required = false) - private Map extData; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/BuildHistoryPage.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/BuildHistoryPage.java deleted file mode 100644 index b455ec0..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/BuildHistoryPage.java +++ /dev/null @@ -1,42 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -@Data -@Schema(title = "构建历史-分页数据包装模型") -public class BuildHistoryPage { - @Schema(title = "总记录行数", required = true) - private final Long count; - - @Schema(title = "第几页", required = true) - private final Integer page; - - @Schema(title = "每页多少条", required = true) - private final Integer pageSize; - - @Schema(title = "总共多少页", required = true) - private final Integer totalPages; - - @Schema(title = "数据", required = true) - private final List records; - - @Schema(title = "是否拥有下载构建的权限", required = true) - private final Boolean hasDownloadPermission; - - @Schema(title = "最新的编排版本号", required = true) - private final Integer pipelineVersion; - - public BuildHistoryPage(Integer page, Integer pageSize, Long count, List records, - Boolean hasDownloadPermission, Integer pipelineVersion) { - this.count = count; - this.page = page; - this.pageSize = pageSize; - this.totalPages = (int) Math.ceil(count.doubleValue() / pageSize); - this.records = records; - this.hasDownloadPermission = hasDownloadPermission; - this.pipelineVersion = pipelineVersion; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/CommonEnv.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/CommonEnv.java deleted file mode 100644 index d74c5b5..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/CommonEnv.java +++ /dev/null @@ -1,26 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -public class CommonEnv { - private static final Map envMap = new ConcurrentHashMap<>(); - private static final Logger logger = LoggerFactory.getLogger(CommonEnv.class); - - private CommonEnv() { - // Private constructor to prevent instantiation - } - - public static void addCommonEnv(Map env) { - logger.info("Add the env({}) to common environment", env); - envMap.putAll(env); - } - - public static Map getCommonEnv() { - return new HashMap<>(envMap); - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorCode.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorCode.java deleted file mode 100644 index e21618d..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorCode.java +++ /dev/null @@ -1,33 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -public class ErrorCode { - // 蓝盾系统错误 - public static final int SYSTEM_DAEMON_INTERRUPTED = 2189500; - public static final int SYSTEM_SERVICE_ERROR = 2189501; - public static final int SYSTEM_OUTTIME_ERROR = 2189502; - public static final int SYSTEM_WORKER_LOADING_ERROR = 2189503; - public static final int SYSTEM_WORKER_INITIALIZATION_ERROR = 2189504; - public static final int SYSTEM_INNER_TASK_ERROR = 2189505; - - // 第三方接入平台错误 - public static final int THIRD_PARTY_INTERFACE_ERROR = 2199501; - public static final int THIRD_PARTY_BUILD_ENV_ERROR = 2199502; - - // 插件执行错误 - public static final int PLUGIN_DEFAULT_ERROR = 2199001; - - // 用户使用错误 - public static final int USER_INPUT_INVAILD = 2199002; - public static final int USER_RESOURCE_NOT_FOUND = 2199003; - public static final int USER_TASK_OPERATE_FAIL = 2199004; - public static final int USER_JOB_OUTTIME_LIMIT = 2199005; - public static final int USER_TASK_OUTTIME_LIMIT = 2199006; - public static final int USER_QUALITY_CHECK_FAIL = 2199007; - public static final int USER_SCRIPT_COMMAND_INVAILD = 2199009; - public static final int USER_STAGE_FASTKILL_TERMINATE = 2199010; - public static final int USER_SCRIPT_TASK_FAIL = 2199011; - - private ErrorCode() { - // Private constructor to prevent instantiation - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorInfo.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorInfo.java deleted file mode 100644 index b0e7d13..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorInfo.java +++ /dev/null @@ -1,35 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@Schema(title = "插件错误信息") -public class ErrorInfo { - @Schema(title = "阶段ID", required = false) - private String stageId; - - @Schema(title = "作业ID", required = false) - private String containerId; - - @Schema(title = "构建矩阵标识", required = false) - private Boolean matrixFlag; - - @Schema(title = "插件ID", required = false) - private String taskId; - - @Schema(title = "插件名称", required = false) - private String taskName; - - @Schema(title = "插件编号", required = false) - private String atomCode; - - @Schema(title = "错误类型", required = false) - private Integer errorType; - - @Schema(title = "错误码", required = true) - private Integer errorCode; - - @Schema(title = "错误信息", required = false) - private String errorMsg; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorType.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorType.java deleted file mode 100644 index 559d25e..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ErrorType.java +++ /dev/null @@ -1,75 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -public enum ErrorType { - SYSTEM("system", 0), - USER("user", 1), - THIRD_PARTY("thirdParty", 2), - PLUGIN("plugin", 3); - - private final String typeName; - private final int num; - - ErrorType(String typeName, int num) { - this.typeName = typeName; - this.num = num; - } - - public static ErrorType getErrorType(String name) { - if (name == null) { - return null; - } - for (ErrorType type : values()) { - if (type.name().equals(name)) { - return type; - } - } - return null; - } - public static ErrorType getErrorType(Integer ordinal) { - ErrorType result; - if (ordinal == null) { - result = ErrorType.PLUGIN; - } else { - switch (ordinal) { - case 0: - result = ErrorType.SYSTEM; - break; - case 1: - result = ErrorType.USER; - break; - case 2: - result = ErrorType.THIRD_PARTY; - break; - default: - result = ErrorType.PLUGIN; - } - } - return result; - } - /* public static ErrorType getErrorType(Integer ordinal) { - if (ordinal == null) { - return PLUGIN; - } - return switch (ordinal) { - case 0 -> SYSTEM; - case 1 -> USER; - case 2 -> THIRD_PARTY; - default -> PLUGIN; - }; - }*/ - - /* public String getI18n(String language) { - return MessageUtil.getMessageByLocale( - "errorType." + this.typeName, - language - ); - }*/ - - public String getTypeName() { - return typeName; - } - - public int getNum() { - return num; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/FieldLocaleInfo.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/FieldLocaleInfo.java deleted file mode 100644 index 2c927b0..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/FieldLocaleInfo.java +++ /dev/null @@ -1,17 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@Schema(title = "字段国际化信息") -public class FieldLocaleInfo { - @Schema(title = "字段名称") - private String fieldName; - - @Schema(title = "字段值") - private String fieldValue; - - @Schema(title = "语言信息") - private String language; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18Variable.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18Variable.java deleted file mode 100644 index 97d8dca..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18Variable.java +++ /dev/null @@ -1,23 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -@Data -@Schema(title = "国际化变量") -public class I18Variable { - @Schema(title = "国际化变量名") - private String code; - - @Schema(title = "国际化参数") - private List params; - - @Schema(title = "默认信息") - private String defaultMessage; - -// public String toJsonStr() { -// return JsonUtil.toJson(this, false); -// } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18nFieldInfo.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18nFieldInfo.java deleted file mode 100644 index 8da57df..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18nFieldInfo.java +++ /dev/null @@ -1,33 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import cd.casic.ci.commons.commonapi.enums.I18nSourceEnum; -import cd.casic.ci.commons.commonapi.enums.I18nTranslateTypeEnum; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.lang.reflect.Field; - -@Data -@Schema(title = "国际化字段信息") -public class I18nFieldInfo { - @Schema(title = "字段") - private Field field; - - @Schema(title = "字段所属对象") - private Object entity; - - @Schema(title = "翻译信息来源") - private I18nSourceEnum source = I18nSourceEnum.PROPERTIES; - - @Schema(title = "翻译类型") - private I18nTranslateTypeEnum translateType = I18nTranslateTypeEnum.NAME; - - @Schema(title = "字段前缀名称") - private String keyPrefixName = ""; - - @Schema(title = "是否复用接口定义的公共前缀") - private boolean reusePrefixFlag = true; - - @Schema(title = "字段转换名称") - private String convertName = ""; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18nMessage.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18nMessage.java deleted file mode 100644 index 355fc5d..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/I18nMessage.java +++ /dev/null @@ -1,20 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@Schema(title = "国际化信息") -public class I18nMessage { - @Schema(title = "模块标识") - private String moduleCode; - - @Schema(title = "国际化语言信息") - private String language; - - @Schema(title = "国际化变量名") - private String key; - - @Schema(title = "国际化变量值") - private String value; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/IdValue.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/IdValue.java deleted file mode 100644 index 1b4e088..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/IdValue.java +++ /dev/null @@ -1,11 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import lombok.AllArgsConstructor; -import lombok.Data; - -@Data -@AllArgsConstructor -public class IdValue { - private String id; - private String value; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/LocaleInfo.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/LocaleInfo.java deleted file mode 100644 index b9b7fce..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/LocaleInfo.java +++ /dev/null @@ -1,11 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@Schema(title = "语言环境信息") -public class LocaleInfo { - @Schema(title = "语言") - private String language; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/MessageCodeDetail.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/MessageCodeDetail.java deleted file mode 100644 index aa756eb..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/MessageCodeDetail.java +++ /dev/null @@ -1,26 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@Schema(title = "返回码详情") -public class MessageCodeDetail { - @Schema(title = "主键ID", required = true) - private String id; - - @Schema(title = "信息码", required = true) - private String messageCode; - - @Schema(title = "模块代码", required = true) - private String moduleCode; - - @Schema(title = "中文简体描述信息", required = true) - private String messageDetailZhCn; - - @Schema(title = "中文繁体描述信息", required = false) - private String messageDetailZhTw; - - @Schema(title = "英文描述信息", required = false) - private String messageDetailEn; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/OS.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/OS.java deleted file mode 100644 index 8045ad7..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/OS.java +++ /dev/null @@ -1,31 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -public enum OS { - MACOS, - WINDOWS, - LINUX; - - public static OS parse(String os) { - // 处理传入的字符串为 null 的情况 - if (os == null) { - return null; - } - // 将传入的字符串转换为大写,以避免大小写问题 - String upperCaseOs = os.toUpperCase(); - OS result = null; - switch (upperCaseOs) { - case "MACOS": - result = MACOS; - break; - case "WINDOWS": - result = WINDOWS; - break; - case "LINUX": - result = LINUX; - break; - default: - result = null; - } - return result; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/OrganizationDetailInfo.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/OrganizationDetailInfo.java deleted file mode 100644 index da815e7..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/OrganizationDetailInfo.java +++ /dev/null @@ -1,26 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@Schema(title = "组织架构详细信息") -public class OrganizationDetailInfo { - @Schema(title = "事业群ID") - private Integer bgId; - - @Schema(title = "事业群名字") - private String bgName; - - @Schema(title = "部门ID") - private Integer deptId; - - @Schema(title = "部门名字") - private String deptName; - - @Schema(title = "中心ID") - private Integer centerId; - - @Schema(title = "中心名字") - private String centerName; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Page.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Page.java deleted file mode 100644 index bd1c0f2..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Page.java +++ /dev/null @@ -1,34 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -@Data -@Schema(title = "分页数据包装模型") -public class Page { - @Schema(title = "总记录行数", required = true) - private final Long count; - - @Schema(title = "第几页", required = true) - private final Integer page; - - @Schema(title = "每页多少条", required = true) - private final Integer pageSize; - - @Schema(title = "总共多少页", required = true) - private final Integer totalPages; - - @Schema(title = "数据", required = true) -// @BkFieldI18n - private final List records; - - public Page(Integer page, Integer pageSize, Long count, List records) { - this.count = count; - this.page = page; - this.pageSize = pageSize; - this.totalPages = (int) Math.ceil(count.doubleValue() / pageSize); - this.records = records; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Pagination.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Pagination.java deleted file mode 100644 index a7a691d..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Pagination.java +++ /dev/null @@ -1,19 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -@Data -@Schema(title = "分页数据包装模型") -public class Pagination { - @Schema(title = "是否有下一页", required = true) - private Boolean hasNext; - - @Schema(title = "数据", required = true) - private List records; - - @Schema(title = "总记录行数", required = false) - private Long count; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/PipelineAsCodeSettings.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/PipelineAsCodeSettings.java deleted file mode 100644 index cb3cfb9..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/PipelineAsCodeSettings.java +++ /dev/null @@ -1,11 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@Schema(title = "设置-YAML流水线功能设置") -public class PipelineAsCodeSettings { - @Schema(title = "是否支持YAML流水线功能", required = true) - private Boolean enable = false; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Result.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Result.java deleted file mode 100644 index 93b4535..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Result.java +++ /dev/null @@ -1,43 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; - -@Data -@AllArgsConstructor -@Schema(title = "数据返回包装模型") -public class Result { - @Schema(title = "状态码", required = true) - private final Integer status; - - @Schema(title = "错误信息", required = false) - private final String message; - - @Schema(title = "数据", required = false) -// @BkFieldI18n - private final T data; - - public Result(T data) { - this(0, null, data); - } - - public Result(String message, T data) { - this(0, message, data); - } - - public Result(Integer status, String message) { - this(status, message, null); - } - - @JsonIgnore - public boolean isOk() { - return status == 0; - } - - @JsonIgnore - public boolean isNotOk() { - return !isOk(); - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ShardingRoutingRule.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ShardingRoutingRule.java deleted file mode 100644 index dca88f2..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ShardingRoutingRule.java +++ /dev/null @@ -1,30 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import cd.casic.ci.commons.commonapi.enums.SystemModuleEnum; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@Schema(title = "DB分片路由规则") -public class ShardingRoutingRule { - @Schema(title = "集群名称") - private String clusterName; - - @Schema(title = "模块标识") - private SystemModuleEnum moduleCode; - - @Schema(title = "数据源名称") - private String dataSourceName; - - @Schema(title = "数据库表名称") - private String tableName; - - @Schema(title = "规则类型") - private ShardingRuleTypeEnum type; - - @Schema(title = "路由规则名称") - private String routingName; - - @Schema(title = "路由规则值") - private String routingRule; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ShardingRuleTypeEnum.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ShardingRuleTypeEnum.java deleted file mode 100644 index cd8980b..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/ShardingRuleTypeEnum.java +++ /dev/null @@ -1,8 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -public enum ShardingRuleTypeEnum { - DB, - TABLE, - ARCHIVE_DB, - ARCHIVE_TABLE -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/SimpleResult.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/SimpleResult.java deleted file mode 100644 index 69d7a9b..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/SimpleResult.java +++ /dev/null @@ -1,30 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Set; - -@Data -@Schema(title = "状态") -public class SimpleResult { - @Schema(title = "是否成功", required = true) - private Boolean success; - - @Schema(title = "错误信息", required = false) - private String message; - - @Schema(title = "错误码信息", required = false) - private Error error; - - @Schema(title = "ENV中需要被忽略的调度机器") - private Set ignoreAgentIds; -} - -@Data -@Schema(title = "第三方构建信息模型-错误信息") -class Error { - private String errorType; - private String errorMessage; - private Integer errorCode; -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Zone.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Zone.java deleted file mode 100644 index 275b468..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/Zone.java +++ /dev/null @@ -1,25 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo; - - -public enum Zone { - DEFAULT("默认"), - SHENZHEN("深圳"), - SHANGHAI("上海"), - CHENGDU("成都"), - TIANJIN("天津"), - GITHUB("GitHub"), - EXTERNAL("外网"); - - private final String name; - - Zone(String name) { - this.name = name; - } - - /* public String getI18n(String language) { - return MessageUtil.getMessageByLocale( - "ZONE." + this.name(), - language - ); - }*/ -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/AgentErrorExitData.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/AgentErrorExitData.java deleted file mode 100644 index 6672095..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/AgentErrorExitData.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. - * - * A copy of the MIT License is included in this file. - * - * ... - */ - -package cd.casic.ci.commons.commonapi.pojo.agent; - -public class AgentErrorExitData { - private String errorEnum; - private String message; - - public AgentErrorExitData(String errorEnum, String message) { - this.errorEnum = errorEnum; - this.message = message; - } - - public String getErrorEnum() { - return errorEnum; - } - - public void setErrorEnum(String errorEnum) { - this.errorEnum = errorEnum; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/AgentPropsInfo.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/AgentPropsInfo.java deleted file mode 100644 index a7bf280..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/AgentPropsInfo.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. - * - * A copy of the MIT License is included in this file. - * - * ... - */ - -package cd.casic.ci.commons.commonapi.pojo.agent; - -import io.swagger.v3.oas.annotations.media.Schema; - -import java.util.List; - -@Schema(title = "Agent属性信息") -public class AgentPropsInfo { - @Schema(title = "agent运行系统的架构信息") - private String arch; - - @Schema(title = "jdk版本信息") - private List jdkVersion; - - @Schema(title = "docker init 文件升级信息") - private DockerInitFileInfo dockerInitFileInfo; - - public AgentPropsInfo(String arch, List jdkVersion, DockerInitFileInfo dockerInitFileInfo) { - this.arch = arch; - this.jdkVersion = jdkVersion; - this.dockerInitFileInfo = dockerInitFileInfo; - } - - public String getArch() { - return arch; - } - - public void setArch(String arch) { - this.arch = arch; - } - - public List getJdkVersion() { - return jdkVersion; - } - - public void setJdkVersion(List jdkVersion) { - this.jdkVersion = jdkVersion; - } - - public DockerInitFileInfo getDockerInitFileInfo() { - return dockerInitFileInfo; - } - - public void setDockerInitFileInfo(DockerInitFileInfo dockerInitFileInfo) { - this.dockerInitFileInfo = dockerInitFileInfo; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/DockerInitFileInfo.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/DockerInitFileInfo.java deleted file mode 100644 index 6024da3..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/DockerInitFileInfo.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. - * - * A copy of the MIT License is included in this file. - * - * ... - */ - -package cd.casic.ci.commons.commonapi.pojo.agent; - -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(title = "docker init 文件升级信息") -public class DockerInitFileInfo { - @Schema(title = "文件md5值") - private String fileMd5; - - @Schema(title = "目前只支持linux机器,所以其他系统不需要检查") - private boolean needUpgrade; - - public DockerInitFileInfo(String fileMd5, boolean needUpgrade) { - this.fileMd5 = fileMd5; - this.needUpgrade = needUpgrade; - } - - public String getFileMd5() { - return fileMd5; - } - - public void setFileMd5(String fileMd5) { - this.fileMd5 = fileMd5; - } - - public boolean isNeedUpgrade() { - return needUpgrade; - } - - public void setNeedUpgrade(boolean needUpgrade) { - this.needUpgrade = needUpgrade; - } -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/NewHeartbeatInfo.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/NewHeartbeatInfo.java deleted file mode 100644 index 3f2162b..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/NewHeartbeatInfo.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. - * - * A copy of the MIT License is included in this file. - * - * ... - */ - -package cd.casic.ci.commons.commonapi.pojo.agent; - -import io.swagger.v3.oas.annotations.media.Schema; - -import java.util.List; - -@Schema(title = "心跳信息模型") -public class NewHeartbeatInfo { - @Schema(title = "主版本") - private String masterVersion; - - @Schema(title = "从属版本") - private String slaveVersion; - - @Schema(title = "主机名") - private String hostName; - - @Schema(title = "构建机模型") - private String agentIp; - - @Schema(title = "并行任务计数") - private int parallelTaskCount; - - @Schema(title = "构建机安装路径") - private String agentInstallPath; - - @Schema(title = "启动者") - private String startedUser; - - @Schema(title = "第三方构建信息列表") - private List taskList; - - @Schema(title = "Agent属性信息") - private AgentPropsInfo props; - - @Schema(title = "构建机id") - private Long agentId; - - @Schema(title = "项目id") - private String projectId; - - @Schema(title = "心跳时间戳") - private Long heartbeatTime; - - @Schema(title = "忙碌运行中任务数量") - private int busyTaskSize = 0; - - @Schema(title = "docker并行任务计数") - private Integer dockerParallelTaskCount; - - @Schema(title = "docker构建信息列表") - private List dockerTaskList; - - @Schema(title = "忙碌运行docker中任务数量") - private int dockerBusyTaskSize = 0; - - @Schema(title = "Agent退出的错误信息") - private AgentErrorExitData errorExitData; - - public NewHeartbeatInfo(String masterVersion, String slaveVersion, String hostName, String agentIp, - int parallelTaskCount, String agentInstallPath, String startedUser, - List taskList, AgentPropsInfo props, Long agentId, - String projectId, Long heartbeatTime, int busyTaskSize, - Integer dockerParallelTaskCount, List dockerTaskList, - int dockerBusyTaskSize, AgentErrorExitData errorExitData) { - this.masterVersion = masterVersion; - this.slaveVersion = slaveVersion; - this.hostName = hostName; - this.agentIp = agentIp; - this.parallelTaskCount = parallelTaskCount; - this.agentInstallPath = agentInstallPath; - this.startedUser = startedUser; - this.taskList = taskList; - this.props = props; - this.agentId = agentId; - this.projectId = projectId; - this.heartbeatTime = heartbeatTime; - this.busyTaskSize = busyTaskSize; - this.dockerParallelTaskCount = dockerParallelTaskCount; - this.dockerTaskList = dockerTaskList; - this.dockerBusyTaskSize = dockerBusyTaskSize; - this.errorExitData = errorExitData; - } - - public static NewHeartbeatInfo dummyHeartbeat(String projectId, Long agentId) { - return new NewHeartbeatInfo( - "", - "", - "", - "", - 0, - "", - "", - List.of(), - new AgentPropsInfo("", null, null), - agentId, - projectId, - System.currentTimeMillis(), - 0, - 0, - List.of(), - 0, - null - ); - } - - // Getters and Setters -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/ThirdPartyBuildInfo.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/ThirdPartyBuildInfo.java deleted file mode 100644 index 3bb93ef..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/ThirdPartyBuildInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -package cd.casic.ci.commons.commonapi.pojo.agent; - -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(title = "第三方构建信息") -public class ThirdPartyBuildInfo { - @Schema(title = "项目id") - private String projectId; - - @Schema(title = "构建id") - private String buildId; - - @Schema(title = "构建机编排序号") - private String vmSeqId; - - @Schema(title = "工作空间") - private String workspace; - - public ThirdPartyBuildInfo(String projectId, String buildId, String vmSeqId, String workspace) { - this.projectId = projectId; - this.buildId = buildId; - this.vmSeqId = vmSeqId; - this.workspace = workspace; - } - - // Getters and Setters -} diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/ThirdPartyDockerBuildInfo.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/ThirdPartyDockerBuildInfo.java deleted file mode 100644 index d3fd033..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/ThirdPartyDockerBuildInfo.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. - * - * A copy of the MIT License is included in this file. - * - * ... - */ - -package cd.casic.ci.commons.commonapi.pojo.agent; - -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(title = "第三方构建Docker信息") -public class ThirdPartyDockerBuildInfo { - @Schema(title = "项目id") - private String projectId; - - @Schema(title = "构建id") - private String buildId; - - @Schema(title = "构建机编排序号") - private String vmSeqId; - - public ThirdPartyDockerBuildInfo(String projectId, String buildId, String vmSeqId) { - this.projectId = projectId; - this.buildId = buildId; - this.vmSeqId = vmSeqId; - } - - // Getters and Setters -} \ No newline at end of file diff --git a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/UpgradeItem.java b/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/UpgradeItem.java deleted file mode 100644 index 7354849..0000000 --- a/modules/ci-commons/src/main/java/cd/casic/ci/commons/commonapi/pojo/agent/UpgradeItem.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. - * - * A copy of the MIT License is included in this file. - * - * ... - */ - -package cd.casic.ci.commons.commonapi.pojo.agent; - -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(title = "需要升级的项") -public class UpgradeItem { - @Schema(title = "升级go agent") - private boolean agent; - - @Schema(title = "升级worker") - private boolean worker; - - @Schema(title = "升级jdk") - private boolean jdk; - - @Schema(title = "升级docker init 脚本") - private boolean dockerInitFile; - - public UpgradeItem(boolean agent, boolean worker, boolean jdk, boolean dockerInitFile) { - this.agent = agent; - this.worker = worker; - this.jdk = jdk; - this.dockerInitFile = dockerInitFile; - } - - // Getters and Setters -} \ No newline at end of file diff --git a/modules/ci-environment/pom.xml b/modules/ci-environment/pom.xml index b9aa22c..92fa413 100644 --- a/modules/ci-environment/pom.xml +++ b/modules/ci-environment/pom.xml @@ -7,27 +7,25 @@ cd.casic.boot modules ${revision} + ../pom.xml cd.casic.pipeline ci-environment - - 17 - 17 - UTF-8 - + jar + + - cd.casic.pipeline + cd.casic.ci ci-commons - cd.casic.pipeline + cd.casic.ci ci-market - 2.0.0-jdk17 diff --git a/modules/ci-event/src/main/java/cd/casic/ci/event/dispatcher/EventDispatcher.java b/modules/ci-event/src/main/java/cd/casic/ci/event/dispatcher/EventDispatcher.java new file mode 100644 index 0000000..c6835ab --- /dev/null +++ b/modules/ci-event/src/main/java/cd/casic/ci/event/dispatcher/EventDispatcher.java @@ -0,0 +1,15 @@ +package cd.casic.ci.event.dispatcher; + +import cd.casic.ci.event.pojo.IEvent; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.event.dispatcher + * @Project:ops-pro + * @name:EventDispatcher + * @Date:2025/03/25 9:56 + * @Filename:EventDispatcher + * @description:事件下发接口 + */ +public interface EventDispatcher { +} diff --git a/modules/ci-event/src/main/java/cd/casic/ci/event/dispatcher/SampleEventDispatcher.java b/modules/ci-event/src/main/java/cd/casic/ci/event/dispatcher/SampleEventDispatcher.java new file mode 100644 index 0000000..30dcfea --- /dev/null +++ b/modules/ci-event/src/main/java/cd/casic/ci/event/dispatcher/SampleEventDispatcher.java @@ -0,0 +1,22 @@ +package cd.casic.ci.event.dispatcher; + +import cd.casic.ci.event.pojo.IEvent; +import lombok.extern.slf4j.Slf4j; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.event.dispatcher + * @Project:ops-pro + * @name:SampleEventDispatcher + * @Date:2025/03/25 9:57 + * @Filename:SampleEventDispatcher + * @description:Todo + */ +@Slf4j +public class SampleEventDispatcher implements EventDispatcher { + public void dispatch(IEvent... events) { + for (IEvent event : events) { + log.info("EventDispatcher: " + event); + } + } +} diff --git a/modules/ci-event/src/main/java/cd/casic/ci/event/enums/ActionType.java b/modules/ci-event/src/main/java/cd/casic/ci/event/enums/ActionType.java new file mode 100644 index 0000000..1db57cf --- /dev/null +++ b/modules/ci-event/src/main/java/cd/casic/ci/event/enums/ActionType.java @@ -0,0 +1,23 @@ +package cd.casic.ci.event.enums; + +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.event.enums + * @Project:ops-pro + * @name:ActionType + * @Date:2025/03/25 9:51 + * @Filename:ActionType + * @description:Todo + */ +@Getter +public enum ActionType { + RETRY, // 重试 + START, // 开始 + REFRESH, // 刷新ElementAdditionalOptions + END, // 强制结束当前节点,会导致当前构建容器结束 + SKIP, // 跳过-不执行 + TERMINATE, // 终止 + ARCHIVE; // 归档 +} diff --git a/modules/ci-event/src/main/java/cd/casic/ci/event/enums/PipelineBuildStatusBroadCastEventType.java b/modules/ci-event/src/main/java/cd/casic/ci/event/enums/PipelineBuildStatusBroadCastEventType.java new file mode 100644 index 0000000..24c01fb --- /dev/null +++ b/modules/ci-event/src/main/java/cd/casic/ci/event/enums/PipelineBuildStatusBroadCastEventType.java @@ -0,0 +1,25 @@ +package cd.casic.ci.event.enums; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.event.enums + * @Project:ops-pro + * @name:PipelineBuildStatusBroadCastEventType + * @Date:2025/03/25 9:53 + * @Filename:PipelineBuildStatusBroadCastEventType + * @description:Todo + */ +public enum PipelineBuildStatusBroadCastEventType { + BUILD_QUEUE, // 构建排队,包含并发超限时排队、并发组排队。 + BUILD_START, // 构建开始,不包含并发超限时排队、并发组排队。 + BUILD_END, // 构建结束 + BUILD_STAGE_START, // stage开始 + BUILD_STAGE_END, // stage结束 + BUILD_JOB_QUEUE, // job排队,包含互斥组排队、构建机复用互斥排队、最大job并发排队。 + BUILD_JOB_START, // job开始,不包含BUILD_JOB_QUEUE。如果job SKIP或没有可执行的插件,就不会有该事件。 + BUILD_JOB_END, // job结束,job SKIP或没有可执行的插件时会有该事件。 + BUILD_AGENT_START, // 构建机启动,现在仅包含第三方构建机 + BUILD_TASK_START, // 插件开始 + BUILD_TASK_END, // 插件结束 + BUILD_TASK_PAUSE; // 插件前置暂停 +} diff --git a/modules/ci-event/src/main/java/cd/casic/ci/event/enums/PipelineLabelChangeTypeEnum.java b/modules/ci-event/src/main/java/cd/casic/ci/event/enums/PipelineLabelChangeTypeEnum.java new file mode 100644 index 0000000..a35a20c --- /dev/null +++ b/modules/ci-event/src/main/java/cd/casic/ci/event/enums/PipelineLabelChangeTypeEnum.java @@ -0,0 +1,16 @@ +package cd.casic.ci.event.enums; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.event.enums + * @Project:ops-pro + * @name:PipelineLabelChangeTypeEnum + * @Date:2025/03/25 9:55 + * @Filename:PipelineLabelChangeTypeEnum + * @description:Todo + */ +public enum PipelineLabelChangeTypeEnum { + CREATE, + DELETE, + UPDATE +} diff --git a/modules/ci-event/src/main/java/cd/casic/ci/event/pojo/IEvent.java b/modules/ci-event/src/main/java/cd/casic/ci/event/pojo/IEvent.java new file mode 100644 index 0000000..5e462f8 --- /dev/null +++ b/modules/ci-event/src/main/java/cd/casic/ci/event/pojo/IEvent.java @@ -0,0 +1,32 @@ +package cd.casic.ci.event.pojo; + +import com.mysql.cj.MessageBuilder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.event.pojo + * @Project:ops-pro + * @name:IEvent + * @Date:2025/03/25 9:46 + * @Filename:IEvent + * @description:Todo + */ +@Data +@Slf4j +@NoArgsConstructor +public class IEvent { + + private int delayMills = 0; + private int retryTime = 1; + + public void sendTo(Object bridge, String destination) { + try { + log.info(bridge.toString() + destination); + } catch (Exception ignored) { + log.error("[STREAM MQ] Fail to dispatch the event(" + this + ")", ignored); + } + } +} diff --git a/modules/ci-event/src/main/java/cd/casic/ci/event/pojo/pipeline/IPipelineEvent.java b/modules/ci-event/src/main/java/cd/casic/ci/event/pojo/pipeline/IPipelineEvent.java new file mode 100644 index 0000000..f067965 --- /dev/null +++ b/modules/ci-event/src/main/java/cd/casic/ci/event/pojo/pipeline/IPipelineEvent.java @@ -0,0 +1,28 @@ +package cd.casic.ci.event.pojo.pipeline; + +import cd.casic.ci.event.enums.ActionType; +import cd.casic.ci.event.pojo.IEvent; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.slf4j.MDC; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.event.pojo.pipeline + * @Project:ops-pro + * @name:IPipelineEvent + * @Date:2025/03/25 9:50 + * @Filename:IPipelineEvent + * @description:Todo + */ +@Data +@NoArgsConstructor +public abstract class IPipelineEvent extends IEvent { + private ActionType actionType; + private String source; + private String projectId; + private String pipelineId; + private String userId; + private String traceId = MDC.get("bizid"); + private String routeKeySuffix; +} diff --git a/modules/ci-process/pipeline-ci-process-api/pom.xml b/modules/ci-process/pipeline-ci-process-api/pom.xml index 40346e9..190442f 100644 --- a/modules/ci-process/pipeline-ci-process-api/pom.xml +++ b/modules/ci-process/pipeline-ci-process-api/pom.xml @@ -24,6 +24,10 @@ cd.casic.ci ci-commons + + cd.casic.ci + ci-event + diff --git a/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/HistorySearchType.java b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/HistorySearchType.java new file mode 100644 index 0000000..2b0d980 --- /dev/null +++ b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/HistorySearchType.java @@ -0,0 +1,18 @@ +package cd.casic.ci.process.api.process.enums; + +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.process.api.process.enums + * @Project:ops-pro + * @name:HistorySearchType + * @Date:2025/03/25 10:09 + * @Filename:HistorySearchType + * @description:Todo + */ +@Getter +public enum HistorySearchType { + TRIGGER, // 触发器 + MATERIAL // 源材料 +} diff --git a/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/OperationLogType.java b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/OperationLogType.java new file mode 100644 index 0000000..6ba8bcb --- /dev/null +++ b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/OperationLogType.java @@ -0,0 +1,57 @@ +package cd.casic.ci.process.api.process.enums; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.process.api.process.enums + * @Project:ops-pro + * @name:OperationLogType + * @Date:2025/03/25 10:10 + * @Filename:OperationLogType + * @description:Todo + */ +@Getter +@AllArgsConstructor +public enum OperationLogType { + CREATE_PIPELINE_AND_DRAFT("创建流水线首次保存草稿:「创建了草稿」"), + CREATE_DRAFT_VERSION("编辑流水线生成草稿:「从 P1.T2.0 创建了草稿」"), + UPDATE_DRAFT_VERSION("修改草稿保存后:「修改了草稿」"), + CREATE_BRANCH_VERSION("新增分支版本:「新增版本 P1.T2.0」"), + UPDATE_BRANCH_VERSION("修改分支版本:「修改版本 P1.T2.0」"), + RELEASE_MASTER_VERSION("正式版本完成时:「发布版本 P1.T2.0」"), + DISABLE_PIPELINE("禁用流水线时:「禁用了流水线」"), + ENABLE_PIPELINE("启用流水线时:「启用了流水线」"), + ADD_PIPELINE_OWNER("添加流水线成员时:「添加 xxx,yyy 为执行者」"), + ADD_PIPELINE_TO_GROUP("将流水线添加到流水线组时:「添加到流水线组 a」"), + MOVE_PIPELINE_OUT_OF_GROUP("将流水线移出流水线组时:「从流水线组 a 中移出」"), + UPDATE_PIPELINE_SETTING("修改流水线设置:「修改配置新增版本 P2.T1.2」"), + RESET_RECOMMENDED_VERSION_BUILD_NO("重置流水线推荐版本号:「重置流水线推荐版本号为 xxx」"), + NORMAL_SAVE_OPERATION("普通保存操作"); + + private final String description; + public static OperationLogType parseType(String type) { + if (type == null || type.isBlank()) return NORMAL_SAVE_OPERATION; + try { + return OperationLogType.valueOf(type); + } catch (Exception ignore) { + return NORMAL_SAVE_OPERATION; + } + } + + public static OperationLogType fetchType(VersionStatus versionStatus) { + if (versionStatus == null) return NORMAL_SAVE_OPERATION; + switch (versionStatus) { + case COMMITTING: + return CREATE_PIPELINE_AND_DRAFT; + case BRANCH: + return CREATE_BRANCH_VERSION; + case RELEASED: + return RELEASE_MASTER_VERSION; + default: + return NORMAL_SAVE_OPERATION; + } + } +} diff --git a/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/VariableType.java b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/VariableType.java new file mode 100644 index 0000000..3170b06 --- /dev/null +++ b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/enums/VariableType.java @@ -0,0 +1,168 @@ +package cd.casic.ci.process.api.process.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.process.api.process.enums + * @Project:ops-pro + * @name:VariableType + * @Date:2025/03/25 10:13 + * @Filename:VariableType + * @description:Todo + */ +@Getter +public enum VariableType { + BK_CI_PIPELINE_ID, + BK_CI_START_TYPE, + BK_CI_PROJECT_NAME, + BK_CI_PIPELINE_NAME, + BK_CI_BUILD_URL, + BK_CI_BUILD_ID, + BK_CI_BUILD_NUM, + BK_CI_BUILD_NUM_ALIAS, + BK_CI_BUILD_JOB_ID("job.id"), + BK_CI_BUILD_MSG, + BK_CI_BUILD_TASK_ID("step.id"), + BK_CI_BUILD_REMARK, + BK_CI_BUILD_FAIL_TASKS, + BK_CI_BUILD_FAIL_TASKNAMES, + BK_CI_TURBO_ID, + BK_CI_MAJOR_VERSION, + BK_CI_MINOR_VERSION, + BK_CI_FIX_VERSION, + BK_CI_BUILD_NO, + BK_CI_PIPELINE_UPDATE_USER, + BK_CI_PIPELINE_VERSION, + BK_CI_PROJECT_NAME_CN, + BK_CI_START_CHANNEL, + BK_CI_START_USER_ID, + BK_CI_START_USER_NAME, + BK_CI_PARENT_PROJECT_ID, + BK_CI_PARENT_PIPELINE_ID, + BK_CI_PARENT_BUILD_ID, + BK_CI_START_PIPELINE_USER_ID, + BK_CI_START_WEBHOOK_USER_ID, + BK_CI_RETRY_COUNT, + BK_CI_ATOM_VERSION("step.atom_version"), + BK_CI_ATOM_CODE("step.atom_code"), + BK_CI_TASK_NAME("step.name"), + BK_CI_ATOM_NAME("step.atom_name"), + BK_CI_GIT_REPO_URL, + BK_CI_GIT_REPO_NAME, + BK_CI_GIT_REPO_ALIAS_NAME, + BK_CI_GIT_REPO_BRANCH, + BK_CI_GIT_REPO_TAG, + BK_CI_GIT_REPO_CODE_PATH, + BK_CI_GIT_REPO_LAST_COMMIT_ID, + BK_CI_GIT_REPO_HEAD_COMMIT_ID, + BK_CI_GIT_REPO_HEAD_COMMIT_COMMENT, + BK_CI_GIT_REPO_HEAD_COMMIT_AUTHOR, + BK_CI_GIT_REPO_HEAD_COMMIT_COMMITTER, + BK_CI_REPO_WEBHOOK_REPO_TYPE, + BK_CI_REPO_WEBHOOK_REPO_URL, + BK_CI_REPO_WEBHOOK_NAME, + BK_CI_REPO_WEBHOOK_ALIAS_NAME, + BK_CI_REPO_WEBHOOK_HASH_ID, + BK_CI_REPO_GIT_WEBHOOK_COMMITID, + BK_CI_REPO_GIT_WEBHOOK_EVENT_TYPE, + BK_CI_REPO_GIT_WEBHOOK_INCLUDE_BRANCH, + BK_CI_REPO_GIT_WEBHOOK_EXCLUDE_BRANCH, + BK_CI_REPO_GIT_WEBHOOK_INCLUDE_PATHS, + BK_CI_REPO_GIT_WEBHOOK_EXCLUDE_PATHS, + BK_CI_REPO_GIT_WEBHOOK_EXCLUDE_USERS, + BK_CI_GIT_WEBHOOK_FINAL_INCLUDE_BRANCH, + BK_CI_GIT_WEBHOOK_FINAL_INCLUDE_PATH, + BK_REPO_GIT_WEBHOOK_PUSH_COMMIT_MSG_(true), // 尾部可以通配n + BK_CI_HOOK_MESSAGE, + BK_CI_REPO_GIT_WEBHOOK_PUSH_USERNAME, + BK_CI_REPO_GIT_WEBHOOK_BRANCH, + BK_REPO_GIT_WEBHOOK_PUSH_BEFORE_COMMIT, + BK_REPO_GIT_WEBHOOK_PUSH_AFTER_COMMIT, + BK_REPO_GIT_WEBHOOK_PUSH_ADD_FILE_(true), // 尾部可以通配n1和n2 + BK_REPO_GIT_WEBHOOK_PUSH_MODIFY_FILE_(true), // 尾部可以通配n1和n2 + BK_REPO_GIT_WEBHOOK_PUSH_DELETE_FILE_(true), // 尾部可以通配n1和n2 + BK_REPO_GIT_WEBHOOK_PUSH_ADD_FILE_COUNT, + BK_REPO_GIT_WEBHOOK_PUSH_MODIFY_FILE_COUNT, + BK_REPO_GIT_WEBHOOK_PUSH_DELETE_FILE_COUNT, + BK_REPO_GIT_WEBHOOK_PUSH_OPERATION_KIND, + BK_REPO_GIT_WEBHOOK_PUSH_ACTION_KIND, + BK_CI_REPO_GIT_WEBHOOK_MR_AUTHOR, + BK_CI_REPO_GIT_WEBHOOK_TARGET_URL, + BK_CI_REPO_GIT_WEBHOOK_SOURCE_URL, + BK_CI_REPO_GIT_WEBHOOK_TARGET_BRANCH, + BK_CI_REPO_GIT_WEBHOOK_SOURCE_BRANCH, + BK_CI_REPO_GIT_WEBHOOK_MR_CREATE_TIME, + BK_CI_REPO_GIT_WEBHOOK_MR_UPDATE_TIME, + BK_CI_REPO_GIT_WEBHOOK_MR_CREATE_TIMESTAMP, + BK_CI_REPO_GIT_WEBHOOK_MR_UPDATE_TIMESTAMP, + BK_CI_REPO_GIT_WEBHOOK_MR_ID, + BK_CI_REPO_GIT_WEBHOOK_MR_NUMBER, + BK_CI_REPO_GIT_WEBHOOK_MR_DESC, + BK_CI_REPO_GIT_WEBHOOK_MR_TITLE, + BK_CI_REPO_GIT_WEBHOOK_MR_ASSIGNEE, + BK_CI_REPO_GIT_WEBHOOK_MR_URL, + BK_CI_REPO_GIT_WEBHOOK_MR_REVIEWERS, + BK_CI_REPO_GIT_WEBHOOK_MR_MILESTONE, + BK_CI_REPO_GIT_WEBHOOK_MR_MILESTONE_DUE_DATE, + BK_CI_REPO_GIT_WEBHOOK_MR_LABELS, + BK_REPO_GIT_WEBHOOK_MR_LAST_COMMIT, + BK_REPO_GIT_WEBHOOK_MR_LAST_COMMIT_MSG, + BK_CI_REPO_GIT_WEBHOOK_TAG_NAME, + BK_CI_REPO_GIT_WEBHOOK_TAG_OPERATION, + BK_CI_REPO_GIT_WEBHOOK_TAG_USERNAME, + BK_CI_REPO_GIT_WEBHOOK_TAG_CREATE_FROM, + BK_CI_REPO_GIT_WEBHOOK_REVIEW_REVIEWABLE_TYPE, + BK_CI_REPO_GIT_WEBHOOK_REVIEW_REVIEWABLE_ID, + BK_CI_REPO_GIT_WEBHOOK_REVIEW_RESTRICT_TYPE, + BK_CI_REPO_GIT_WEBHOOK_REVIEW_APPROVING_REVIEWERS, + BK_CI_REPO_GIT_WEBHOOK_REVIEW_APPROVED_REVIEWERS, + BK_CI_REPO_GIT_WEBHOOK_ISSUE_TITLE, + BK_CI_REPO_GIT_WEBHOOK_ISSUE_ID, + BK_CI_REPO_GIT_WEBHOOK_ISSUE_IID, + BK_CI_REPO_GIT_WEBHOOK_ISSUE_DESCRIPTION, + BK_CI_REPO_GIT_WEBHOOK_ISSUE_STATE, + BK_CI_REPO_GIT_WEBHOOK_ISSUE_OWNER, + BK_CI_REPO_GIT_WEBHOOK_ISSUE_URL, + BK_CI_REPO_GIT_WEBHOOK_ISSUE_MILESTONE_ID, + BK_CI_REPO_GIT_WEBHOOK_ISSUE_ACTION, + BK_CI_REPO_GIT_WEBHOOK_NOTE_COMMENT, + BK_CI_REPO_GIT_WEBHOOK_NOTE_ID, + BK_CI_REPO_GIT_WEBHOOK_NOTE_PROJECT_ID, + BK_CI_REPO_GIT_WEBHOOK_NOTE_NOTEABLE_TYPE, + BK_CI_REPO_GIT_WEBHOOK_NOTE_AUTHOR_ID, + BK_CI_REPO_GIT_WEBHOOK_NOTE_CREATED_AT, + BK_CI_REPO_GIT_WEBHOOK_NOTE_UPDATED_AT, + BK_CI_REPO_GIT_WEBHOOK_NOTE_URL, + BK_CI_REPO_SVN_WEBHOOK_REVERSION, + BK_CI_REPO_SVN_WEBHOOK_USERNAME, + BK_CI_REPO_SVN_WEBHOOK_COMMIT_TIME, + BK_CI_REPO_SVN_WEBHOOK_INCLUDE_PATHS, + BK_CI_REPO_SVN_WEBHOOK_EXCLUDE_PATHS, + BK_CI_REPO_SVN_WEBHOOK_INCLUDE_USERS, + BK_CI_REPO_SVN_WEBHOOK_EXCLUDE_USERS, + BK_CI_REPO_GIT_WEBHOOK_INCLUDE_BRANCHS, + BK_CI_REPO_GIT_WEBHOOK_EXCLUDE_BRANCHS, + BK_CI_REPO_GITHUB_WEBHOOK_CREATE_REF_NAME, + BK_CI_REPO_GITHUB_WEBHOOK_CREATE_REF_TYPE, + BK_CI_REPO_GITHUB_WEBHOOK_CREATE_USERNAME; + + private final boolean hasPrefix; + private final String aliasName; + + VariableType() { + this.hasPrefix = false; + this.aliasName = ""; + } + + VariableType(String aliasName) { + this.hasPrefix = false; + this.aliasName = aliasName; + } + + VariableType(boolean hasPrefix) { + this.hasPrefix = hasPrefix; + this.aliasName = ""; + } +} diff --git a/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/IDispatchEvent.java b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/IDispatchEvent.java new file mode 100644 index 0000000..0dfcb85 --- /dev/null +++ b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/IDispatchEvent.java @@ -0,0 +1,24 @@ +package cd.casic.ci.process.api.process.pojo.mq; + +import cd.casic.ci.event.enums.ActionType; +import cd.casic.ci.log.log.IEvent; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.process.api.process.pojo.mq + * @Project:ops-pro + * @name:IDispatchEvent + * @Date:2025/03/25 9:34 + * @Filename:IDispatchEvent + * @description:Todo + */ +public class IDispatchEvent extends IEvent { + private ActionType actionType; + private String source; + private String projectId; + private String pipelineId; + private String userId; + private String routeKeySuffix; + private int delayMills; + private int retryTime = 1; +} diff --git a/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentShutdownDemoteEvent.java b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentShutdownDemoteEvent.java new file mode 100644 index 0000000..01bfccb --- /dev/null +++ b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentShutdownDemoteEvent.java @@ -0,0 +1,30 @@ +package cd.casic.ci.process.api.process.pojo.mq; + +import cd.casic.ci.event.enums.ActionType; +import cd.casic.ci.event.pojo.pipeline.IPipelineEvent; +import org.apache.tomcat.util.net.DispatchType; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.process.api.process.pojo.mq + * @Project:ops-pro + * @name:PipelineAgentShutdownDemoteEvent + * @Date:2025/03/25 9:35 + * @Filename:PipelineAgentShutdownDemoteEvent + * @description:Todo + */ +public class PipelineAgentShutdownDemoteEvent extends IPipelineEvent { + private String source; + private String projectId; + private String pipelineId; + private String userId; + private String buildId; + private String vmSeqId; + private boolean buildResult; + private Integer executeCount; + private String dockerRoutingType = "VM"; + private DispatchType dispatchType; + private String routeKeySuffix; + private ActionType actionType = ActionType.REFRESH; + private int delayMills = 0; +} diff --git a/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentShutdownEvent.java b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentShutdownEvent.java new file mode 100644 index 0000000..2342a00 --- /dev/null +++ b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentShutdownEvent.java @@ -0,0 +1,30 @@ +package cd.casic.ci.process.api.process.pojo.mq; + +import cd.casic.ci.event.enums.ActionType; +import cd.casic.ci.event.pojo.pipeline.IPipelineEvent; +import org.apache.tomcat.util.net.DispatchType; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.process.api.process.pojo.mq + * @Project:ops-pro + * @name:PipelineAgentShutdownEvent + * @Date:2025/03/25 9:35 + * @Filename:PipelineAgentShutdownEvent + * @description:Todo + */ +public class PipelineAgentShutdownEvent extends IPipelineEvent { + private String source; + private String projectId; + private String pipelineId; + private String userId; + private String buildId; + private String vmSeqId; + private boolean buildResult; + private Integer executeCount; + private String dockerRoutingType = "VM"; + private DispatchType dispatchType; + private String routeKeySuffix; + private ActionType actionType = ActionType.REFRESH; + private int delayMills = 0; +} diff --git a/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentStartupDemoteEvent.java b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentStartupDemoteEvent.java new file mode 100644 index 0000000..2f640a8 --- /dev/null +++ b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentStartupDemoteEvent.java @@ -0,0 +1,48 @@ +package cd.casic.ci.process.api.process.pojo.mq; + +import cd.casic.ci.event.enums.ActionType; +import cd.casic.ci.event.pojo.pipeline.IPipelineEvent; +import org.apache.tomcat.util.net.DispatchType; + +import java.util.Map; +import java.util.Set; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.process.api.process.pojo.mq + * @Project:ops-pro + * @name:PipelineAgentStartupDemoteEvent + * @Date:2025/03/25 9:36 + * @Filename:PipelineAgentStartupDemoteEvent + * @description:Todo + */ +public class PipelineAgentStartupDemoteEvent extends IPipelineEvent { + private String source; + private String projectId; + private String pipelineId; + private String pipelineName; + private String userId; + private String buildId; + private int buildNo; + private String vmSeqId; + private String taskName; + private String os; + private String vmNames; + private String channelCode; + private DispatchType dispatchType; + private String containerId; + private String containerHashId; + private Integer queueTimeoutMinutes; + private Map atoms = Map.of(); + private Integer executeCount; + private Map customBuildEnv; + private String dockerRoutingType = "VM"; + private String routeKeySuffix; + private String jobId; + private Set ignoreEnvAgentIds; + private Integer singleNodeConcurrency; + private Integer allNodeConcurrency; + private Long dispatchQueueStartTimeMilliSecond; + private ActionType actionType = ActionType.REFRESH; + private int delayMills = 0; +} diff --git a/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentStartupEvent.java b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentStartupEvent.java new file mode 100644 index 0000000..fc5f158 --- /dev/null +++ b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineAgentStartupEvent.java @@ -0,0 +1,49 @@ +package cd.casic.ci.process.api.process.pojo.mq; + +import cd.casic.ci.event.enums.ActionType; +import cd.casic.ci.event.pojo.pipeline.IPipelineEvent; +import org.apache.tomcat.util.net.DispatchType; + +import java.util.Map; +import java.util.Set; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.process.api.process.pojo.mq + * @Project:ops-pro + * @name:PipelineAgentStartupEvent + * @Date:2025/03/25 9:36 + * @Filename:PipelineAgentStartupEvent + * @description:Todo + */ +public class PipelineAgentStartupEvent extends IPipelineEvent { + private String source; + private String projectId; + private String pipelineId; + private String pipelineName; + private String userId; + private String buildId; + private int buildNo; + private String vmSeqId; + private String taskName; + private String os; + private String vmNames; + private String channelCode; + private DispatchType dispatchType; + private String containerId; + private String containerHashId; + private Integer queueTimeoutMinutes; + private Map atoms = Map.of(); + private Integer executeCount; + private Map customBuildEnv; + private String dockerRoutingType = "VM"; + private String routeKeySuffix; + private String jobId; + private Set ignoreEnvAgentIds; + private Integer singleNodeConcurrency; + private Integer allNodeConcurrency; + private Long dispatchQueueStartTimeMilliSecond; + private Integer jobTimeoutMinutes; + private ActionType actionType = ActionType.REFRESH; + private int delayMills = 0; +} diff --git a/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessShutdownEvent.java b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessShutdownEvent.java new file mode 100644 index 0000000..f074196 --- /dev/null +++ b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessShutdownEvent.java @@ -0,0 +1,26 @@ +package cd.casic.ci.process.api.process.pojo.mq; + +import cd.casic.ci.event.enums.ActionType; +import cd.casic.ci.event.pojo.pipeline.IPipelineEvent; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.process.api.process.pojo.mq + * @Project:ops-pro + * @name:PipelineBuildLessShutdownEvent + * @Date:2025/03/25 9:36 + * @Filename:PipelineBuildLessShutdownEvent + * @description:Todo + */ +public class PipelineBuildLessShutdownEvent extends IPipelineEvent { + private String source; + private String projectId; + private String pipelineId; + private String userId; + private String buildId; + private String vmSeqId; + private boolean buildResult; + private Integer executeCount; + private ActionType actionType = ActionType.REFRESH; + private int delayMills = 0; +} diff --git a/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessStartupEvent.java b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessStartupEvent.java new file mode 100644 index 0000000..16c9c65 --- /dev/null +++ b/modules/ci-process/pipeline-ci-process-api/src/main/java/cd/casic/ci/process/api/process/pojo/mq/PipelineBuildLessStartupEvent.java @@ -0,0 +1,36 @@ +package cd.casic.ci.process.api.process.pojo.mq; + +import cd.casic.ci.event.enums.ActionType; +import cd.casic.ci.event.pojo.pipeline.IPipelineEvent; + +import java.util.Map; + +/** + * @Author:mianbin + * @Package:cd.casic.ci.process.api.process.pojo.mq + * @Project:ops-pro + * @name:PipelineBuildLessStartupEvent + * @Date:2025/03/25 9:37 + * @Filename:PipelineBuildLessStartupEvent + * @description:Todo + */ +public class PipelineBuildLessStartupEvent extends IPipelineEvent { + private String source; + private String projectId; + private String pipelineId; + private String userId; + private String buildId; + private String vmSeqId; + private String containerId; + private String containerHashId; + private String os; + private long startTime; + private String channelCode; + private Zone zone; + private Map atoms = Map.of(); + private Integer executeCount; + private Map customBuildEnv; + private Integer queueTimeoutMinutes; + private ActionType actionType = ActionType.REFRESH; + private int delayMills = 0; +} diff --git a/modules/ci-worker/pom.xml b/modules/ci-worker/pom.xml index 7ff2ada..b5dc4e5 100644 --- a/modules/ci-worker/pom.xml +++ b/modules/ci-worker/pom.xml @@ -7,24 +7,24 @@ cd.casic.boot modules ${revision} + ../pom.xml - cd.casic.devops ci-worker - - - - + + + + - - - - - + + + + + cd.casic.ci ci-commons @@ -54,7 +54,7 @@ org.jvnet.winp winp - + @@ -67,32 +67,32 @@ org.reflections reflections - + org.apache.commons commons-exec - + org.apache.commons commons-compress - + com.googlecode.plist dd-plist - + net.dongliu apk-parser - + @@ -104,24 +104,24 @@ ch.qos.logback logback-core - + ch.qos.logback logback-classic - + com.github.ben-manes.caffeine caffeine - + io.github.resilience4j resilience4j-circuitbreaker - + @@ -214,10 +214,10 @@ version-number --> - - - - + + + + \ No newline at end of file diff --git a/modules/pom.xml b/modules/pom.xml index 39c06da..cb8c2c6 100644 --- a/modules/pom.xml +++ b/modules/pom.xml @@ -23,6 +23,8 @@ ci-project ci-scm-repository ci-ticket + ci-worker + ci-environment modules