冲掉之前的代码,太难了

This commit is contained in:
mianbin 2025-04-16 19:04:30 +08:00
parent 19858ca927
commit 3f1f4a3268
1732 changed files with 627 additions and 73554 deletions

46
.idea/compiler.xml generated
View File

@ -18,43 +18,29 @@
<entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.6.2/mapstruct-processor-1.6.2.jar" /> <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.6.2/mapstruct-processor-1.6.2.jar" />
<entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.6.2/mapstruct-1.6.2.jar" /> <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.6.2/mapstruct-1.6.2.jar" />
</processorPath> </processorPath>
<module name="module-infra-api" />
<module name="spring-boot-starter-protection" /> <module name="spring-boot-starter-protection" />
<module name="module-ci-environment" />
<module name="spring-boot-starter-monitor" /> <module name="spring-boot-starter-monitor" />
<module name="module-system-biz" /> <module name="module-system-biz" />
<module name="module-ci-process-biz" />
<module name="module-ci-dispatch-api" />
<module name="module-system-api" />
<module name="spring-boot-starter-mq" />
<module name="module-ci-quality" />
<module name="spring-boot-starter-mongo" />
<module name="module-ci-market" />
<module name="commons" />
<module name="module-ci-common-pipeline" />
<module name="spring-boot-starter-plugin" />
<module name="module-ci-store-api" />
<module name="ops-server" />
<module name="spring-boot-starter-biz-data-permission" />
<module name="spring-boot-starter-mybatis" />
<module name="module-ci-process-api" />
<module name="module-ci-project" />
<module name="module-infra-api" />
<module name="module-ci-worker" />
<module name="spring-boot-starter-test" /> <module name="spring-boot-starter-test" />
<module name="spring-boot-starter-websocket" /> <module name="spring-boot-starter-websocket" />
<module name="system-plugin-example-web" /> <module name="system-plugin-example-web" />
<module name="module-system-api" />
<module name="spring-boot-starter-biz-ip" /> <module name="spring-boot-starter-biz-ip" />
<module name="module-infra-biz" /> <module name="module-infra-biz" />
<module name="module-ci-log" /> <module name="spring-boot-starter-mq" />
<module name="spring-boot-starter-job" /> <module name="spring-boot-starter-job" />
<module name="module-ci-event" /> <module name="spring-boot-starter-mongo" />
<module name="module-ci-repository" /> <module name="commons" />
<module name="spring-boot-starter-web" /> <module name="spring-boot-starter-web" />
<module name="spring-boot-starter-plugin" />
<module name="spring-boot-starter-excel" /> <module name="spring-boot-starter-excel" />
<module name="ops-server" />
<module name="spring-boot-starter-biz-tenant" /> <module name="spring-boot-starter-biz-tenant" />
<module name="module-ci-ticket" /> <module name="spring-boot-starter-biz-data-permission" />
<module name="spring-boot-starter-redis" /> <module name="spring-boot-starter-redis" />
<module name="spring-boot-starter-security" /> <module name="spring-boot-starter-security" />
<module name="spring-boot-starter-mybatis" />
</profile> </profile>
</annotationProcessing> </annotationProcessing>
<bytecodeTargetLevel> <bytecodeTargetLevel>
@ -64,7 +50,21 @@
<module name="common-pipeline" target="17" /> <module name="common-pipeline" target="17" />
<module name="common-public" target="17" /> <module name="common-public" target="17" />
<module name="module-ci-common" target="17" /> <module name="module-ci-common" target="17" />
<module name="module-ci-common-pipeline" target="17" />
<module name="module-ci-commons" target="17" /> <module name="module-ci-commons" target="17" />
<module name="module-ci-dispatch-api" target="17" />
<module name="module-ci-environment" target="17" />
<module name="module-ci-event" target="17" />
<module name="module-ci-log" target="17" />
<module name="module-ci-market" target="17" />
<module name="module-ci-process-api" target="17" />
<module name="module-ci-process-biz" target="17" />
<module name="module-ci-project" target="17" />
<module name="module-ci-quality" target="17" />
<module name="module-ci-repository" target="17" />
<module name="module-ci-store-api" target="17" />
<module name="module-ci-ticket" target="17" />
<module name="module-ci-worker" target="17" />
<module name="pipeline-ci-api" target="17" /> <module name="pipeline-ci-api" target="17" />
<module name="pipeline-ci-common" target="17" /> <module name="pipeline-ci-common" target="17" />
<module name="pipeline-ci-process-api" target="17" /> <module name="pipeline-ci-process-api" target="17" />

14
.idea/misc.xml generated
View File

@ -56,12 +56,26 @@
<set> <set>
<option value="$PROJECT_DIR$/modules/ci-commons/pipeline-ci-api/pom.xml" /> <option value="$PROJECT_DIR$/modules/ci-commons/pipeline-ci-api/pom.xml" />
<option value="$PROJECT_DIR$/modules/ci-commons/pipline-ci-common/pom.xml" /> <option value="$PROJECT_DIR$/modules/ci-commons/pipline-ci-common/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-common-pipeline/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-common/pom.xml" /> <option value="$PROJECT_DIR$/modules/module-ci-common/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-commons/ci-common-pipeline/pom.xml" /> <option value="$PROJECT_DIR$/modules/module-ci-commons/ci-common-pipeline/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-commons/ci-common-public/pom.xml" /> <option value="$PROJECT_DIR$/modules/module-ci-commons/ci-common-public/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-commons/ci-common/pom.xml" /> <option value="$PROJECT_DIR$/modules/module-ci-commons/ci-common/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-commons/pom.xml" /> <option value="$PROJECT_DIR$/modules/module-ci-commons/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-dispatch-api/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-environment/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-event/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-log/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-market/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-process-api/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-process-biz/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-process/pipeline-ci-process-api/pom.xml" /> <option value="$PROJECT_DIR$/modules/module-ci-process/pipeline-ci-process-api/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-project/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-quality/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-repository/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-store-api/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-ticket/pom.xml" />
<option value="$PROJECT_DIR$/modules/module-ci-worker/pom.xml" />
</set> </set>
</option> </option>
</component> </component>

8
.idea/modules.xml generated
View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/modules/module-ci-process-biz/module-ci-process-biz.iml" filepath="$PROJECT_DIR$/modules/module-ci-process-biz/module-ci-process-biz.iml" />
</modules>
</component>
</project>

View File

590
dependencies/.flattened-pom.xml vendored Normal file
View File

@ -0,0 +1,590 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>cd.casic.boot</groupId>
<artifactId>dependencies</artifactId>
<version>2.0.0-jdk17</version>
<packaging>pom</packaging>
<name>dependencies</name>
<description>管理整个项目的依赖版本</description>
<properties>
<tika-core.version>2.9.2</tika-core.version>
<podam.version>8.0.0.RELEASE</podam.version>
<flatten-maven-plugin.version>1.6.0</flatten-maven-plugin.version>
<opengauss.jdbc.version>5.1.0</opengauss.jdbc.version>
<mapstruct.version>1.6.2</mapstruct.version>
<fastjson.version>1.2.83</fastjson.version>
<sqlite.version>3.47.1.0</sqlite.version>
<mybatis.version>3.5.16</mybatis.version>
<opentracing.version>0.33.0</opentracing.version>
<caffeine.version>2.9.3</caffeine.version>
<json.version>20250107</json.version>
<kingbase.jdbc.version>8.6.0</kingbase.jdbc.version>
<commons-compress.version>1.27.1</commons-compress.version>
<rocketmq-spring.version>2.3.1</rocketmq-spring.version>
<ip2region.version>2.7.0</ip2region.version>
<dynamic-datasource.version>4.3.1</dynamic-datasource.version>
<redisson.version>3.36.0</redisson.version>
<pf4j-spring.version>0.9.0</pf4j-spring.version>
<transmittable-thread-local.version>2.14.5</transmittable-thread-local.version>
<dd-plist.version>1.28</dd-plist.version>
<spring.boot.version>3.3.4</spring.boot.version>
<bcprov-jdk18on.version>1.80</bcprov-jdk18on.version>
<springdoc.version>2.3.0</springdoc.version>
<version-number.version>1.12</version-number.version>
<lock4j.version>2.2.7</lock4j.version>
<commons-io.version>2.17.0</commons-io.version>
<logback-core.version>1.2.11</logback-core.version>
<apk-parser.version>2.6.10</apk-parser.version>
<hutool-6.version>6.0.0-M16</hutool-6.version>
<resilience4j-circuitbreaker.version>2.3.0</resilience4j-circuitbreaker.version>
<jsoup.version>1.18.1</jsoup.version>
<mybatis-plus.version>3.5.8</mybatis-plus.version>
<knife4j.version>4.5.0</knife4j.version>
<lombok.version>1.18.34</lombok.version>
<skywalking.version>9.0.0</skywalking.version>
<mockito-inline.version>5.2.0</mockito-inline.version>
<logback-classic.version>1.2.11</logback-classic.version>
<commons-exec.version>1.4.0</commons-exec.version>
<velocity.version>2.4</velocity.version>
<reflections.version>0.10.2</reflections.version>
<bizlog-sdk.version>3.0.6</bizlog-sdk.version>
<anwena.version>2.0.8.3</anwena.version>
<pf4j.version>3.12.1</pf4j.version>
<logback.version>1.2.13</logback.version>
<mybatis-plus-join.version>1.4.13</mybatis-plus-join.version>
<hutool-5.version>5.8.32</hutool-5.version>
<revision>2.0.0-jdk17</revision>
<jsch.version>0.1.55</jsch.version>
<winp.version>1.28</winp.version>
<postgresql.version>42.7.4</postgresql.version>
<spring-boot-admin.version>3.3.3</spring-boot-admin.version>
<oracle.version>23.5.0.24.07</oracle.version>
<netty.version>4.1.113.Final</netty.version>
<oshi-version>6.6.5</oshi-version>
<jedis-mock.version>1.1.4</jedis-mock.version>
<guava.version>33.3.1-jre</guava.version>
<aws-java-sdk-s3.version>1.12.777</aws-java-sdk-s3.version>
<commons-net.version>3.11.1</commons-net.version>
<jimureport.version>1.7.8</jimureport.version>
<easyexcel.verion>4.0.3</easyexcel.verion>
<json.schema.validator.veresion>1.5.6</json.schema.validator.veresion>
<druid.version>1.2.23</druid.version>
<easy-trans.version>3.0.6</easy-trans.version>
<dm8.jdbc.version>8.1.3.140</dm8.jdbc.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-bom</artifactId>
<version>${netty.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>commons</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-biz-data-permission</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-biz-ip</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-biz-tenant</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-excel</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-job</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-mongo</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-monitor</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-mq</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>${rocketmq-spring.version}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-mybatis</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-protection</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-infra-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-infra-biz</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-system-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-system-biz</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>io.github.mouzt</groupId>
<artifactId>bizlog-sdk</artifactId>
<version>${bizlog-sdk.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
<version>${springdoc.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
<version>${dynamic-datasource.version}</version>
</dependency>
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId>
<version>${mybatis-plus-join.version}</version>
</dependency>
<dependency>
<groupId>com.fhs-opensource</groupId>
<artifactId>easy-trans-spring-boot-starter</artifactId>
<version>${easy-trans.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fhs-opensource</groupId>
<artifactId>easy-trans-mybatis-plus-extend</artifactId>
<version>${easy-trans.version}</version>
</dependency>
<dependency>
<groupId>com.fhs-opensource</groupId>
<artifactId>easy-trans-anno</artifactId>
<version>${easy-trans.version}</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>${redisson.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>lock4j-redisson-spring-boot-starter</artifactId>
<version>${lock4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>${skywalking.version}</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>${skywalking.version}</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-opentracing</artifactId>
<version>${skywalking.version}</version>
</dependency>
<dependency>
<groupId>io.opentracing</groupId>
<artifactId>opentracing-api</artifactId>
<version>${opentracing.version}</version>
</dependency>
<dependency>
<groupId>io.opentracing</groupId>
<artifactId>opentracing-util</artifactId>
<version>${opentracing.version}</version>
</dependency>
<dependency>
<groupId>io.opentracing</groupId>
<artifactId>opentracing-noop</artifactId>
<version>${opentracing.version}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${spring-boot-admin.version}</version>
<exclusions>
<exclusion>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-cloud</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>${mockito-inline.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.version}</version>
<exclusions>
<exclusion>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
</exclusion>
<exclusion>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.fppt</groupId>
<artifactId>jedis-mock</artifactId>
<version>${jedis-mock.version}</version>
</dependency>
<dependency>
<groupId>uk.co.jemos.podam</groupId>
<artifactId>podam</artifactId>
<version>${podam.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool-5.version}</version>
</dependency>
<dependency>
<groupId>org.dromara.hutool</groupId>
<artifactId>hutool-extra</artifactId>
<version>${hutool-6.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.verion}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>${commons-compress.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>${tika-core.version}</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>com.networknt</groupId>
<artifactId>json-schema-validator</artifactId>
<version>${json.schema.validator.veresion}</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>${json.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>transmittable-thread-local</artifactId>
<version>${transmittable-thread-local.version}</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>${commons-net.version}</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>${jsch.version}</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>${aws-java-sdk-s3.version}</version>
</dependency>
<dependency>
<groupId>org.lionsoul</groupId>
<artifactId>ip2region</artifactId>
<version>${ip2region.version}</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>${jsoup.version}</version>
</dependency>
<dependency>
<groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId>
<version>${oshi-version}</version>
</dependency>
<dependency>
<groupId>org.pf4j</groupId>
<artifactId>pf4j</artifactId>
<version>${pf4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.pf4j</groupId>
<artifactId>pf4j-spring</artifactId>
<version>${pf4j-spring.version}</version>
</dependency>
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>${dm8.jdbc.version}</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>${oracle.version}</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
<dependency>
<groupId>org.opengauss</groupId>
<artifactId>opengauss-jdbc</artifactId>
<version>${opengauss.jdbc.version}</version>
</dependency>
<dependency>
<groupId>cn.com.kingbase</groupId>
<artifactId>kingbase8</artifactId>
<version>${kingbase.jdbc.version}</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>${sqlite.version}</version>
</dependency>
<dependency>
<groupId>com.gitee.anwena</groupId>
<artifactId>mongo-plus-boot-starter</artifactId>
<version>${anwena.version}</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<version>${bcprov-jdk18on.version}</version>
</dependency>
<dependency>
<groupId>org.jvnet.winp</groupId>
<artifactId>winp</artifactId>
<version>${winp.version}</version>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>${reflections.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-exec</artifactId>
<version>${commons-exec.version}</version>
</dependency>
<dependency>
<groupId>com.googlecode.plist</groupId>
<artifactId>dd-plist</artifactId>
<version>${dd-plist.version}</version>
</dependency>
<dependency>
<groupId>net.dongliu</groupId>
<artifactId>apk-parser</artifactId>
<version>${apk-parser.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback-core.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback-classic.version}</version>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>${caffeine.version}</version>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-circuitbreaker</artifactId>
<version>${resilience4j-circuitbreaker.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>

84
dependencies/pom.xml vendored
View File

@ -220,90 +220,6 @@
</dependency> </dependency>
<!--ci-pipeline-dependency--> <!--ci-pipeline-dependency-->
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-common-pipeline</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-process-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-environment</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-event</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-log</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-market</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-process-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-project</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-quality</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-ticket</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-repository</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-worker</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-dispatch-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>module-ci-store-api</artifactId>
<version>${revision}</version>
</dependency>
<!----> <!---->
<dependency> <dependency>
<groupId>io.github.mouzt</groupId> <groupId>io.github.mouzt</groupId>

View File

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cd.casic.boot</groupId>
<artifactId>modules</artifactId>
<version>${revision}</version>
</parent>
<artifactId>module-ci-common-pipeline</artifactId>
<name>${project.artifactId}</name>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>commons</artifactId>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-mybatis</artifactId>
</dependency>
<dependency>
<groupId>com.networknt</groupId>
<artifactId>json-schema-validator</artifactId>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
</dependency>
<dependency>
<groupId>cd.casic.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -1,32 +0,0 @@
package cd.casic.ci.common.pipeline;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameCommonPipelineAutoConfiguration
* @Date2025/03/25 17:30
* @FilenameCommonPipelineAutoConfiguration
* @descriptionTodo
*/
@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();
}
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline;
import cd.casic.ci.common.pipeline.matrix.DispatchInfo;
import java.util.Map;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameDispatchSubInfoFetcher
* @Date2025/03/25 17:34
* @FilenameDispatchSubInfoFetcher
* @descriptionTodo
*/
public interface DispatchSubInfoFetcher {
/**
* 返回扩展的子类
*/
Map<String, Class<? extends DispatchInfo>> jsonSubInfo();
}

View File

@ -1,40 +0,0 @@
package cd.casic.ci.common.pipeline;
import cd.casic.ci.common.pipeline.matrix.DispatchInfo;
import com.fasterxml.jackson.databind.jsontype.NamedType;
import com.fasterxml.jackson.databind.module.SimpleModule;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
import java.util.ServiceLoader;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameDispatchSubInfoRegisterLoader
* @Date2025/03/25 17:34
* @FilenameDispatchSubInfoRegisterLoader
* @descriptionTodo
*/
@Slf4j
public class DispatchSubInfoRegisterLoader {
public static void registerInfo() {
Class<DispatchSubInfoFetcher> clazz = DispatchSubInfoFetcher.class;
ServiceLoader<DispatchSubInfoFetcher> 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<String, Class<? extends DispatchInfo>> jsonSubTypes = fetcher.jsonSubInfo();
for (Map.Entry<String, Class<? extends DispatchInfo>> entry : jsonSubTypes.entrySet()) {
infoSubModule.registerSubtypes(new NamedType(entry.getValue(), entry.getKey()));
log.info("[REGISTER_DISPATCH]|{} for {}", entry.getValue(), entry.getKey());
}
}
}
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline;
import cd.casic.ci.common.pipeline.type.DispatchType;
import java.util.Map;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameDispatchSubTypeFetcher
* @Date2025/03/25 17:36
* @FilenameDispatchSubTypeFetcher
* @descriptionTodo
*/
public interface DispatchSubTypeFetcher {
/**
* 返回扩展的子类
*/
Map<String, Class<? extends DispatchType>> jsonSubTypes();
}

View File

@ -1,40 +0,0 @@
package cd.casic.ci.common.pipeline;
import cd.casic.ci.common.pipeline.type.DispatchType;
import com.fasterxml.jackson.databind.jsontype.NamedType;
import com.fasterxml.jackson.databind.module.SimpleModule;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
import java.util.ServiceLoader;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameDispatchSubTypeRegisterLoader
* @Date2025/03/25 17:37
* @FilenameDispatchSubTypeRegisterLoader
* @descriptionTodo
*/
@Slf4j
public class DispatchSubTypeRegisterLoader {
public static void registerType() {
Class<DispatchSubTypeFetcher> clazz = DispatchSubTypeFetcher.class;
ServiceLoader<DispatchSubTypeFetcher> 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<String, Class<? extends DispatchType>> jsonSubTypes = fetcher.jsonSubTypes();
for (Map.Entry<String, Class<? extends DispatchType>> entry : jsonSubTypes.entrySet()) {
typeSubModule.registerSubtypes(new NamedType(entry.getValue(), entry.getKey()));
log.info("[REGISTER_DISPATCH]|{} for {}", entry.getValue(), entry.getKey());
}
}
}
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline;
import cd.casic.ci.common.pipeline.pojo.element.Element;
import java.util.Map;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameElementSubTypeFetcher
* @Date2025/03/25 17:38
* @FilenameElementSubTypeFetcher
* @descriptionTodo
*/
public interface ElementSubTypeFetcher {
/**
* 返回扩展的子类
*/
Map<String, Class<? extends Element>> jsonSubTypes();
}

View File

@ -1,46 +0,0 @@
package cd.casic.ci.common.pipeline;
import cd.casic.ci.common.pipeline.pojo.element.Element;
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 java.util.Map;
import java.util.ServiceLoader;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameElementSubTypeRegisterLoader
* @Date2025/03/25 17:38
* @FilenameElementSubTypeRegisterLoader
* @descriptionTodo
*/
@Slf4j
public class ElementSubTypeRegisterLoader {
public static void registerElementForJsonUtil() {
registerElement(null);
}
public static void registerElement(ObjectMapper objectMapper) {
Class<ElementSubTypeFetcher> clazz = ElementSubTypeFetcher.class;
ServiceLoader<ElementSubTypeFetcher> 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<String, Class<? extends Element>> jsonSubTypes = fetcher.jsonSubTypes();
for (Map.Entry<String, Class<? extends Element>> entry : jsonSubTypes.entrySet()) {
elementSubModule.registerSubtypes(new NamedType(entry.getValue(), entry.getKey()));
log.info("[REGISTER_MODEL_ELEMENT]|{} for {}", entry.getValue(), entry.getKey());
}
}
}
}

View File

@ -1,65 +0,0 @@
package cd.casic.ci.common.pipeline;
import cd.casic.ci.common.pipeline.functions.ExpressionOutput;
import cd.casic.ci.common.pipeline.functions.IFunctionInfo;
import cd.casic.ci.common.pipeline.pojo.NamedValueInfo;
import cd.casic.ci.common.pipeline.dialect.IPipelineDialect;
import cd.casic.ci.common.pipeline.utils.ObjectReplaceEnvVarUtil;
import cn.hutool.core.lang.Pair;
import cn.hutool.json.JSONUtil;
import com.networknt.schema.ExecutionContext;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameEnvReplacementParser
* @Date2025/03/25 17:38
* @FilenameEnvReplacementParser
* @descriptionTodo
*/
@Slf4j
public class EnvReplacementParser {
private static final Pattern expressionPattern = Pattern.compile("\\$[{]{2}([^$^{}]+)[}]{2}");
public static String parse(Object value, Map<String, String> contextMap, Boolean onlyExpression,
Pair<ExecutionContext, List<NamedValueInfo>> contextPair, Iterable<IFunctionInfo> functions,
ExpressionOutput output) {
ExprReplacementOptions options = new ExprReplacementOptions(contextMap, contextPair, functions, output);
return parse(value, onlyExpression, options);
}
public static String parse(Object value, Map<String, String> contextMap, IPipelineDialect dialect,
Pair<ExecutionContext, List<NamedValueInfo>> contextPair, Iterable<IFunctionInfo> 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.toJsonStr(ObjectReplaceEnvVarUtil.replaceEnvVar(value, options.getContextMap()));
} else {
//return JsonUtil.toJson(ExprReplacementUtil.replaceEnvVar(value, options), false);
return null;
}
}
// public static Pair<ExecutionContext, List<NamedValueInfo>> getCustomExecutionContextByMap(Map<String, String> variables,
// List<RuntimeNamedValue> extendNamedValueMap) {
// return ExprReplacementUtil.getCustomExecutionContextByMap(variables, extendNamedValueMap);
// }
public static boolean containsExpressions(String value) {
if (value == null) {
return false;
}
return expressionPattern.matcher(value).find();
}
}

View File

@ -1,48 +0,0 @@
package cd.casic.ci.common.pipeline;
import cd.casic.ci.common.pipeline.functions.ExpressionOutput;
import cd.casic.ci.common.pipeline.functions.IFunctionInfo;
import cd.casic.ci.common.pipeline.pojo.NamedValueInfo;
import cn.hutool.core.lang.Pair;
import com.networknt.schema.ExecutionContext;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameExprReplacementOptions
* @Date2025/03/25 17:39
* @FilenameExprReplacementOptions
* @descriptionTodo
*/
@Data
@AllArgsConstructor
@Schema(title = "表达式替换参数")
public class ExprReplacementOptions {
@Schema(title = "环境变量", required = true)
private Map<String, String> contextMap;
@Schema(title = "值是否能不存在", required = true)
private boolean contextNotNull;
@Schema(title = "表达式上下文", required = true)
private Pair<ExecutionContext, List<NamedValueInfo>> contextPair;
private Iterable<IFunctionInfo> functions;
private ExpressionOutput output;
public ExprReplacementOptions(Map<String, String> contextMap, Pair<ExecutionContext, List<NamedValueInfo>> contextPair, Iterable<IFunctionInfo> functions, ExpressionOutput output) {
this.contextMap = contextMap;
this.contextPair = contextPair;
this.functions = functions;
this.output = output;
}
}

View File

@ -1,43 +0,0 @@
package cd.casic.ci.common.pipeline;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Map;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameIModelTemplate
* @Date2025/03/25 17:39
* @FilenameIModelTemplate
* @descriptionTodo
*/
@Schema(title = "model中报错模板信息的扩展参数")
public interface IModelTemplate {
@Schema(title = "模板", required = true)
String getTemplate();
@Schema(title = "引用", required = true)
String getRef();
@Schema(title = "变量", required = true)
Map<String, String> getVariables();
void setTemplate(String template);
void setRef(String ref);
void setVariables(Map<String, String> variables);
/**
* 判读是否来自于模板
*
* @return true 是来自于模板|false 不是来自于模板
*/
default boolean fromTemplate() {
String template = getTemplate();
return template != null && !template.isEmpty();
}
}

View File

@ -1,121 +0,0 @@
package cd.casic.ci.common.pipeline;
import cd.casic.ci.common.pipeline.container.Container;
import cd.casic.ci.common.pipeline.container.Stage;
import cd.casic.ci.common.pipeline.container.TriggerContainer;
import cd.casic.ci.common.pipeline.enums.CallBackEvent;
import cd.casic.ci.common.pipeline.pojo.event.PipelineCallbackEvent;
import cd.casic.ci.common.pipeline.pojo.event.ProjectPipelineCallBack;
import cd.casic.ci.common.pipeline.pojo.time.BuildRecordTimeCost;
import cd.casic.ci.common.pipeline.pojo.transfer.Resources;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameModel
* @Date2025/03/25 17:39
* @FilenameModel
* @descriptionTodo
*/
@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<Stage> stages;
@Schema(title = "标签", required = false)
@Deprecated
//"以PipelineGroupService和流水线设置版本中为准"
private List<String> 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<String, PipelineCallbackEvent> events;
@Schema(title = "静态流水线组", required = false)
private List<String> 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<String, String> variables;
@Schema(title = "模板资源", required = true)
private Resources resources;
@Schema(title = "提交时流水线最新版本号", required = false)
private int latestVersion;
/**
* 获取流水线回调配置
* @param projectId 项目ID
* @param callbackEvent 回调事件类型
* @return 流水线回调配置列表
*/
public List<ProjectPipelineCallBack> getPipelineCallBack(
String projectId,
CallBackEvent callbackEvent
) {
List<ProjectPipelineCallBack> pipelineCallBack = new ArrayList<>();
if (events != null) {
events.forEach((eventName, event) -> {
// TODO 可能要重写equals
if (callbackEvent==event.getCallbackEvent()) {
pipelineCallBack.add(
new ProjectPipelineCallBack(
null,
projectId,
event.getCallbackEvent().name(),
event.getCallbackUrl(),
event.getSecretToken(),
true,
null,
null,
null
)
);
}
});
}
return pipelineCallBack;
}
public TriggerContainer getTriggerContainer(){
Container container = stages.get(0).getContainers().get(0);
return JSON.parseObject(JSON.toJSONString(container),TriggerContainer.class);
}
}

View File

@ -1,36 +0,0 @@
package cd.casic.ci.common.pipeline;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameModelUpdate
* @Date2025/03/25 17:40
* @FilenameModelUpdate
* @descriptionTodo
*/
@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;
}

View File

@ -1,24 +0,0 @@
package cd.casic.ci.common.pipeline;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @nameNameAndValue
* @Date2025/03/25 17:40
* @FilenameNameAndValue
* @descriptionTodo
*/
@Data
@Schema(title = "名称和值")
public class NameAndValue {
@Schema(title = "名称", required = true)
private String key;
@Schema(title = "", required = false)
private String value;
}

View File

@ -1,56 +0,0 @@
package cd.casic.ci.common.pipeline;
import cd.casic.ci.common.pipeline.pojo.PipelineModelAndSetting;
import cd.casic.ci.common.pipeline.pojo.transfer.PreviewResponse;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @namePipelineVersionWithModel
* @Date2025/03/25 17:40
* @FilenamePipelineVersionWithModel
* @descriptionTodo
*/
@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;
}

View File

@ -1,38 +0,0 @@
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;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline
* @Projectops-pro
* @namePipelineVersionWithModelRequest
* @Date2025/03/25 17:41
* @FilenamePipelineVersionWithModelRequest
* @descriptionTodo
*/
@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;
}

View File

@ -1,26 +0,0 @@
package cd.casic.ci.common.pipeline;
import java.util.UUID;
public class UUIDUtil {
private UUIDUtil() {
// 私有构造方法防止实例化
}
/**
* 生成32位字符随机UUID
* @return UUID字符串
*/
public static String generate() {
UUID uuid = UUID.randomUUID();
String str = uuid.toString();
// 通过substring拼接去掉UUID中的连字符
return str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24);
}
// 可选方案使用replace方法更简洁
// public static String generate() {
// return UUID.randomUUID().toString().replace("-", "");
// }
}

View File

@ -1,19 +0,0 @@
package cd.casic.ci.common.pipeline.constant;
/**
* @Classname BaseConstant
* @Description 标志位
* @Date 2025/3/18 10:00
* @author mianbin
*/
public class BaseConstant {
/**
* 已删
*/
public static final Integer DELETED = 1;
/**
* 未删
*/
public static final Integer NOT_DELETED = 0;
}

View File

@ -1,160 +0,0 @@
package cd.casic.ci.common.pipeline.constant;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.constant
* @Projectops-pro
* @nameCommonConstants
* @Date2025/03/26 18:02
* @FilenameCommonConstants
* @descriptionTodo
*/
public class CommonConstants {
public static final String BCI_CODE_PREFIX = "BCI_CODE_";
public static final String DEVOPS = "DevOps";
public static final int NUM_ONE = 1;
public static final int NUM_TWO = 2;
public static final int NUM_THREE = 3;
public static final int NUM_FOUR = 4;
public static final int NUM_FIVE = 5;
public static final int NUM_SIX = 6;
public static final int NUM_SEVEN = 7;
public static final int NUM_EIGHT = 8;
public static final int 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 IMPORTER = "importer"; // 导入人
public static final String USAGE = "usage"; // 用途
public static final String ALIAS = "alias"; // 别名
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 LATEST_EXECUTE_PIPELINE = "latestExecutePipeline"; // 最近执行流水线
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 IN_READY_TEST = "IN_READY_TEST"; // 正在测试中
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 LOCALE_LANGUAGE = "BK_CI_LOCALE_LANGUAGE"; // locale国际化语言信息
public static final String DEFAULT_LOCALE_LANGUAGE = "zh_CN"; // 默认语言信息
public static final String REQUEST_CHANNEL = "BK_CI_REQUEST_CHANNEL"; // 请求渠道
public static final String API_PERMISSION = "BK_CI_API_PERMISSION"; // 请求API权限
public static final String REQUEST_IP = "X-Forwarded-For"; // 请求IP
public static final String BK_CREATE = "bkCreate"; // 创建
public static final String BK_REVISE = "bkRevise"; // 修改
public static final String FAIL_MSG = "failMsg"; // 失败信息
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_INSTANCE_ERROR_INFO = "instanceErrorInfo";
public static final String KEY_DEFAULT_LOCALE_LANGUAGE = "defaultLocaleLanguage";
public static final String KEY_PROJECT_ID = "projectId";
public static final String KEY_PIPELINE_ID = "pipelineId";
public static final String KEY_PIPELINE_NUM = "pipelineNum";
public static final String KEY_ARCHIVE = "archive";
public static final String KEY_BRANCH_TEST_FLAG = "branchTestFlag";
public static final String KEY_TASK_ATOM = "taskAtom";
public static final String KEY_ELEMENT_ENABLE = "elementEnable";
public static final String KEY_SHA_CONTENT = "shaContent";
public static final String KEY_FILE_SHA_CONTENT = "fileShaContent";
public static final String BK_BUILD_ENV_START_FAILED = "bkBuildEnvStartFailed"; // 构建环境启动失败
public static final String BK_START_PULL_IMAGE = "bkStartPullImage"; // 开始拉取镜像镜像名称
public static final String BK_PULLING_IMAGE = "bkPullingImage"; // 正在拉取镜像,{0}进度{1}
public static final String BK_PUSH_IMAGE = "bkPushImage"; // 正在推送镜像,{0}进度{1}
public static final String BK_HUMAN_SERVICE = "bkHumanService"; // 人工服务
}

View File

@ -1,225 +0,0 @@
package cd.casic.ci.common.pipeline.constant;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.constant
* @Projectops-pro
* @nameCommonMessageCode
* @Date2025/03/26 18:02
* @FilenameCommonMessageCode
* @descriptionTodo
*/
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 int 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 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_FAIL = "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"; // 非项目成员且项目为非开源项目
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限制!
public static final String ERROR_YAML_FORMAT_EXCEPTION_ENV_VARIABLE_LENGTH_LIMIT_EXCEEDED = "2100121"; // {0}Env单变量{1}长度超过{2}字符!({3})
public static final String ERROR_PROJECT_API_ACCESS_NO_PERMISSION = "2100122"; // 项目[{0}]没有接口[{1}]的访问权限
public static final String ERROR_INTERFACE_RETRY_NUM_EXCEEDED = "2100123"; // 接口连续重试次数超过{0}请稍后再试
public static final String ERROR_PIPELINE_API_ACCESS_NO_PERMISSION = "2100124"; // 流水线[{0}]没有接口[{1}]的访问权限
public static final String TEMPLATE_PLUGIN_NOT_ALLOWED_USE = "2100125"; // 模板中插件{0}{1}版本的状态是{2}不允许使用
public static final String ADD_MR_FAIL = "2100126"; // 添加MR失败
public static final String ELEMENT_UPDATE_WRONG_PATH = "2100127"; // 更新插件的标注位置有误
public static final String ELEMENT_NOT_SUPPORT_TRANSFER = "2100128"; // 如下插件在 Code 方式下已不支持请修改后再切换: \n[{0}]
public static final String DISPATCH_NOT_SUPPORT_TRANSFER = "2100129"; // 如下构建环境在 Code 方式下不支持转换请修改后再切换: \n[{0}]
public static final String YAML_NOT_VALID = "2100130"; // yaml不合法 {0}
public static final String GIT_INVALID_PRIVATE_KEY = "2100131"; // 不支持的SSH私钥格式仅支持rsa格式私钥
public static final String THIRD_PARTY_SERVICE_OPERATION_FAILED = "2100132"; // 第三方服务[{0}]操作失败失败详情{1}
public static final String MR_ACCEPT_EVENT_NOT_SUPPORT_TRANSFER = "2100133"; // mr accept事件类型不支持code转换
public static final String SVN_TOKEN_FAIL = "2100135"; // SVN Token 不正确
public static final String SVN_TOKEN_EMPTY = "2100136"; // SVN Token 为空, 请检查代码库的凭证类型
public static final String ERROR_VARIABLE_NOT_FOUND = "2100137"; // SVN Token 为空, 请检查代码库的凭证类型
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
public static final String BK_REQUEST_BODY_CONTENT_PARAMETER_INCORRECT = "bkRequestBodyContentParameterIncorrect"; // 请求体内容参数错误温馨提示请确认{0}是否符合要求
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 GET_COMMIT_REVIEW_INFO = "bkGetCommitReviewInfo"; // 获取Commit Review详情
public static final String GET_SESSION_INFO = "bkGetSessionInfo"; // 获取会话详情
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_LIST_MR = "bkOperationListMr"; // 添加MR
public static final String OPERATION_ADD_MR = "bkOperationAddMr"; // 添加MR
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} 修改于
public static final String BK_USER_REQUESTS_THE_PROJECT = "bkUserRequestsTheProject"; // 用户 {0} 申请{1}蓝盾项目 {2} ,请审批
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"; // 构建触发
public static final String TRANSFER_ERROR_CHECK_AGENT_ID_FAILED = "transferErrorCheckAgentIdFailed"; // 当前私有构建机数据有误或不存在
public static final String TRANSFER_ERROR_CHECK_ENV_ID_FAILED = "transferErrorCheckEnvIdFailed"; // 当前私有构建机集群数据有误或不存在
}

View File

@ -1,119 +0,0 @@
package cd.casic.ci.common.pipeline.constant;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.constant
* @Projectops-pro
* @nameHttpStatus
* @Date2025/03/26 18:26
* @FilenameHttpStatus
* @descriptionTodo
*/
public enum HttpStatus {
CONTINUE(100, "Continue"),
SWITCHING_PROTOCOLS(101, "Switching Protocols"),
PROCESSING(102, "Processing"),
CHECKPOINT(103, "Checkpoint"),
OK(200, "OK"),
CREATED(201, "Created"),
ACCEPTED(202, "Accepted"),
NON_AUTHORITATIVE_INFORMATION(203, "Non-Authoritative Information"),
NO_CONTENT(204, "No Content"),
RESET_CONTENT(205, "Reset Content"),
PARTIAL_CONTENT(206, "Partial Content"),
MULTI_STATUS(207, "Multi-Status"),
ALREADY_REPORTED(208, "Already Reported"),
IM_USED(226, "IM Used"),
MULTIPLE_CHOICES(300, "Multiple Choices"),
MOVED_PERMANENTLY(301, "Moved Permanently"),
FOUND(302, "Found"),
MOVED_TEMPORARILY(302, "Moved Temporarily"),
SEE_OTHER(303, "See Other"),
NOT_MODIFIED(304, "Not Modified"),
USE_PROXY(305, "Use Proxy"),
TEMPORARY_REDIRECT(307, "Temporary Redirect"),
PERMANENT_REDIRECT(308, "Permanent Redirect"),
BAD_REQUEST(400, "Bad Request"),
UNAUTHORIZED(401, "Unauthorized"),
PAYMENT_REQUIRED(402, "Payment Required"),
FORBIDDEN(403, "Forbidden"),
NOT_FOUND(404, "Not Found"),
METHOD_NOT_ALLOWED(405, "Method Not Allowed"),
NOT_ACCEPTABLE(406, "Not Acceptable"),
PROXY_AUTHENTICATION_REQUIRED(407, "Proxy Authentication Required"),
REQUEST_TIMEOUT(408, "Request Timeout"),
CONFLICT(409, "Conflict"),
GONE(410, "Gone"),
LENGTH_REQUIRED(411, "Length Required"),
PRECONDITION_FAILED(412, "Precondition Failed"),
PAYLOAD_TOO_LARGE(413, "Payload Too Large"),
REQUEST_ENTITY_TOO_LARGE(413, "Request Entity Too Large"),
URI_TOO_LONG(414, "URI Too Long"),
REQUEST_URI_TOO_LONG(414, "Request-URI Too Long"),
UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"),
REQUESTED_RANGE_NOT_SATISFIABLE(416, "Requested range not satisfiable"),
EXPECTATION_FAILED(417, "Expectation Failed"),
I_AM_A_TEAPOT(418, "I'm a teapot"),
INSUFFICIENT_SPACE_ON_RESOURCE(419, "Insufficient Space On Resource"),
METHOD_FAILURE(420, "Method Failure"),
DESTINATION_LOCKED(421, "Destination Locked"),
UNPROCESSABLE_ENTITY(422, "Unprocessable Entity"),
LOCKED(423, "Locked"),
FAILED_DEPENDENCY(424, "Failed Dependency"),
TOO_EARLY(425, "Too Early"),
UPGRADE_REQUIRED(426, "Upgrade Required"),
PRECONDITION_REQUIRED(428, "Precondition Required"),
TOO_MANY_REQUESTS(429, "Too Many Requests"),
REQUEST_HEADER_FIELDS_TOO_LARGE(431, "Request Header Fields Too Large"),
UNAVAILABLE_FOR_LEGAL_REASONS(451, "Unavailable For Legal Reasons"),
INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
NOT_IMPLEMENTED(501, "Not Implemented"),
BAD_GATEWAY(502, "Bad Gateway"),
SERVICE_UNAVAILABLE(503, "Service Unavailable"),
GATEWAY_TIMEOUT(504, "Gateway Timeout"),
HTTP_VERSION_NOT_SUPPORTED(505, "HTTP Version not supported"),
VARIANT_ALSO_NEGOTIATES(506, "Variant Also Negotiates"),
INSUFFICIENT_STORAGE(507, "Insufficient Storage"),
LOOP_DETECTED(508, "Loop Detected"),
BANDWIDTH_LIMIT_EXCEEDED(509, "Bandwidth Limit Exceeded"),
NOT_EXTENDED(510, "Not Extended"),
NETWORK_AUTHENTICATION_REQUIRED(511, "Network Authentication Required");
private final int value;
private final String reasonPhrase;
HttpStatus(int value, String reasonPhrase) {
this.value = value;
this.reasonPhrase = reasonPhrase;
}
public int getValue() {
return value;
}
public String getReasonPhrase() {
return reasonPhrase;
}
public boolean isServerError() {
return value >= INTERNAL_SERVER_ERROR.getValue();
}
public static HttpStatus valueOf(int statusCode) throws IllegalArgumentException {
for (HttpStatus status : values()) {
if (status.getValue() == statusCode) {
return status;
}
}
throw new IllegalArgumentException("No matching constant for [" + statusCode + "]");
}
public static HttpStatus resolve(int statusCode) {
for (HttpStatus status : values()) {
if (status.getValue() == statusCode) {
return status;
}
}
return null;
}
}

View File

@ -1,64 +0,0 @@
package cd.casic.ci.common.pipeline.constant;
/**
* @Classname LeafAllocConstant
* @Description 流水线的枚举
* @Date 2025/3/18 10:16
* @author mianbin
*/
public class LeafAllocConstant {
/** =========================================流水线====================================================== */
public static final String AUDIT_RESOURCE = "AUDIT_RESOURCE";
public static final String PIPELINE_RESOURCE = "PIPELINE_RESOURCE";
public static final String PIPELINE_VERSION_SIMPLE_RESOURCE = "PIPELINE_VERSION_SIMPLE_RESOURCE";
public static final String PIPELINE_SETTING_RESOURCE = "PIPELINE_SETTING_RESOURCE";
public static final String PIPELINE_VERSION_SETTING_RESOURCE = "PIPELINE_VERSION_SETTING_RESOURCE";
public static final String PIPELINE_LABEL_PIPELINE_RESOURCE = "PIPELINE_LABEL_PIPELINE_RESOURCE";
public static final String TEMPLATE_PIPELINE_RESOURCE = "TEMPLATE_PIPELINE_RESOURCE";
public static final String PIPELINE_BUILD_SUMMARY = "PIPELINE_BUILD_SUMMARY";
public static final String PIPELINE_BUILD_HISTORY = "PIPELINE_BUILD_HISTORY";
public static final String PIPELINE_BUILD_TASK = "PIPELINE_BUILD_TASK";
public static final String PIPELINE_BUILD_CONTAINER = "PIPELINE_BUILD_CONTAINER";
public static final String PIPELINE_BUILD_STAGE = "PIPELINE_BUILD_STAGE";
public static final String PIPELINE_BUILD_RECORD_CONTAINER = "PIPELINE_BUILD_RECORD_CONTAINER";
public static final String PIPELINE_BUILD_RECORD_MODEL = "PIPELINE_BUILD_RECORD_MODEL";
public static final String PIPELINE_BUILD_RECORD_STAGE = "PIPELINE_BUILD_RECORD_STAGE";
public static final String PIPELINE_BUILD_RECORD_TASK = "PIPELINE_BUILD_RECORD_TASK";
public static final String PIPELINE_BUILD_DETAIL = "PIPELINE_BUILD_DETAIL";
public static final String PIPELINE_LABEL_PIPELINE = "PIPELINE_LABEL_PIPELINE";
public static final String STAGE_TAG = "STAGE_TAG";
public static final String PIPELINE_JOB_MUTEX_GROUP_RESOURCE = "PIPELINE_JOB_MUTEX_GROUP_RESOURCE";
public static final String MODEL_TASK = "PIPELINE_MODEL_TASK";
public static final String PIPELINE_TRIGGER_REVIEW = "PIPELINE_TRIGGER_REVIEW";
public static final String PIPELINE_BUILD_VAR = "PIPELINE_BUILD_VAR";
/** =========================================项目====================================================== */
public static final String PROJECT_RESOURCE = "PROJECT_RESOURCE";
/** ========================================日志===================================================== */
public static final String LOG_STATUS = "LOG_STATUS";
public static final String LOG_SUBTAGS = "LOG_SUBTAGS";
public static final String LOG_INDICES_V2 = "LOG_INDICES_V2";
}

View File

@ -1,88 +0,0 @@
package cd.casic.ci.common.pipeline.constant;
/**
* @author by mianbin
* @Classname OpsHeader
* @Description 重要莫动
* @Date 2025/3/19 14:49
*/
public final class OpsHeader {
public static final String AUTH_HEADER_USER_ID = "X-DEVOPS-UID";
public static final String AUTH_HEADER_USER_ID_DEFAULT_VALUE = "admin";
public static final String AUTH_HEADER_BUILD_ID = "X-DEVOPS-BUILD-ID";
public static final String AUTH_HEADER_VM_SEQ_ID = "X-DEVOPS-VM-SID";
public static final String AUTH_HEADER_VM_NAME = "X-DEVOPS-VM-NAME";
public static final String AUTH_HEADER_PROJECT_ID = "X-DEVOPS-PROJECT-ID";
public static final String AUTH_HEADER_AGENT_SECRET_KEY = "X-DEVOPS-AGENT-SECRET-KEY";
public static final String AUTH_HEADER_AGENT_ID = "X-DEVOPS-AGENT-ID";
public static final String AUTH_HEADER_PIPELINE_ID = "X-DEVOPS-PIPELINE-ID";
public static final String AUTH_HEADER_REGION = "X-DEVOPS-REGION";
public static final String AUTH_HEADER_DEVOPS_APP_CODE = "X-DEVOPS-APP-CODE";
public static final String AUTH_HEADER_DEVOPS_APP_SECRET = "X-DEVOPS-APP-SECRET";
public static final String AUTH_HEADER_DEVOPS_BUILD_TYPE = "X-DEVOPS-BUILD-TYPE";
public static final String AUTH_HEADER_DEVOPS_USER_ID = AUTH_HEADER_USER_ID;
public static final String AUTH_HEADER_DEVOPS_USER_ID_DEFAULT_StringUE = "admin";
public static final String AUTH_HEADER_DEVOPS_APP_CODE_DEFAULT_StringUE = "opsci";
public static final String AUTH_HEADER_DEVOPS_BG_ID = "X-DEVOPS-BG-ID";
public static final String AUTH_HEADER_DEVOPS_DEPT_ID = "X-DEVOPS-DEPT-ID";
public static final String AUTH_HEADER_DEVOPS_CENTER_ID = "X-DEVOPS-CENTER-ID";
public static final String AUTH_HEADER_DEVOPS_ORGANIZATION_TYPE = "X-DEVOPS-ORGANIZATION-TYPE";
public static final String AUTH_HEADER_DEVOPS_ORGANIZATION_TYPE_BG = "BG";
public static final String AUTH_HEADER_DEVOPS_ORGANIZATION_TYPE_DEPARTMENT = "DEPARTMENT";
public static final String AUTH_HEADER_DEVOPS_ORGANIZATION_TYPE_CENTER = "CENTER";
public static final String AUTH_HEADER_DEVOPS_ORGANIZATION_ID = "X-DEVOPS-ORGANIZATION-ID";
public static final String AUTH_HEADER_DEVOPS_ORGANIZATION_NAME = "X-DEVOPS-ORGANIZATION-NAME";
public static final String AUTH_HEADER_DEVOPS_PROJECT_ID = "X-DEVOPS-PROJECT-ID";
public static final String AUTH_HEADER_DEVOPS_PIPELINE_ID = "X-DEVOPS-PIPELINE-ID";
public static final String AUTH_HEADER_DEVOPS_BUILD_ID = "X-DEVOPS-BUILD-ID";
public static final String AUTH_HEADER_DEVOPS_VM_SEQ_ID = "X-DEVOPS-VM-SID";
public static final String AUTH_HEADER_DEVOPS_VM_NAME = "X-DEVOPS-VM-NAME";
public static final String AUTH_HEADER_DEVOPS_REAL_IP = "X-DEVOPS-REAL-IP";
public static final String AUTH_HEADER_DEVOPS_AGENT_ID = "X-DEVOPS-AGENT-ID";
public static final String AUTH_HEADER_DEVOPS_AGENT_SECRET_KEY = "X-DEVOPS-AGENT-SECRET-KEY";
public static final String AUTH_HEADER_DEVOPS_OPS_TOKEN = "X-DEVOPS-OPS-TOKEN";
public static final String AUTH_HEADER_DEVOPS_ACCESS_TOKEN = "X-DEVOPS-ACCESS-TOKEN";
public static final String AUTH_HEADER_DEVOPS_OPS_TICKET = "X-DEVOPS-OPS-TOKEN";
public static final String AUTH_HEADER_DEVOPS_USER_CHINESE_NAME = "X-DEVOPS-CHINESE-NAME";
public static final String AUTH_HEADER_DEVOPS_USER_PAAS_ID = "X-DEVOPS-PAAS-USER-ID";
public static final String AUTH_HEADER_DEVOPS_ORIGINAL_HOST = "X-DEVOPS-ORIGINAL-HOST";
public static final String AUTH_HEADER_DEVOPS_JWT_TOKEN = "X-DEVOPS-JWT-TOKEN";
public static final String AUTH_HEADER_IAM_TOKEN = "Authorization";
public static final String AUTH_HEADER_DEVOPS_SIGN_INFO = "X-DEVOPS-SIGN-INFO";
public static final String AUTH_HEADER_PLATFORM = "X-DEVOPS-PLATFORM";
public static final String AUTH_HEADER_APP_VERSION = "X-DEVOPS-APP-VERSION";
public static final String AUTH_HEADER_GATEWAY_TAG = "X-GATEWAY-TAG";
public static final String AUTH_HEADER_DEVOPS_CI_TASK_ID = "X-DEVOPS-CI-TASK-ID";
public static final String SIGN_HEADER_TIMESTAMP = "X-DEVOPS-TIMESTAMP";
public static final String SIGN_HEADER_NONCE = "X-DEVOPS-NONCE";
public static final String SING_HEADER_SIGNATURE = "X-DEVOPS-SIGNATURE";
public static final String AUTH_HEADER_GITHUB_TOKEN = "X-GITHUB-TOKEN";
public static final String AUTH_HEADER_GIT_TYPE = "X-DEVOPS-STREAM-GIT-TYPE";
public static final String AUTH_HEADER_OPS_CI_LOGIN_TOKEN = "X-DEVOPS-CI-LOGIN-TOKEN";
public static final String AUTH_HEADER_DEVOPS_SERVICE_NAME = "X-DEVOPS-SERVICE-NAME";
public static final String AUTH_HEADER_DEVOPS_BK_TOKEN = "X-DEVOPS-BK-TOKEN";
public static final String AUTH_HEADER_CODECC_OPENAPI_TOKEN = "X-CODECC-OPENAPI-TOKEN";
public static final String AUTH_HEADER_OAUTH2_CLIENT_ID = "X-DEVOPS-OAUTH2-CLIENT-ID";
public static final String AUTH_HEADER_OAUTH2_CLIENT_SECRET = "X-DEVOPS-OAUTH2-CLIENT-SECRET";
public static final String AUTH_HEADER_OAUTH2_AUTHORIZATION = "X-DEVOPS-OAUTH2-AUTHORIZATION";
public static final String REFERER = "referer"; // 来源
public static final String DEVX_HEADER_GW_TOKEN = "X-DEVOPS-DEVX-GW-TOKEN";
public static final String DEVX_HEADER_NGGW_CLIENT_ADDRESS = "X-OPS-NGGW-CLIENT-ADDRESS";
public static final String DEVX_HEADER_CDS_TOKEN = "X-OPS-CDS-TOKEN";
public static final String AUTH_HEADER_DEVOPS_SHA_CONTENT = "X-DEVOPS-SHA-CONTENT";
public static final String AUTH_HEADER_DEVOPS_OS_NAME = "X-DEVOPS-OS-NAME";
public static final String AUTH_HEADER_DEVOPS_OS_ARCH = "X-DEVOPS-OS-ARCH";
public static final String AUTH_HEADER_DEVOPS_STORE_CODE = "X-DEVOPS-STORE-CODE";
public static final String AUTH_HEADER_DEVOPS_STORE_TYPE = "X-DEVOPS-STORE-TYPE";
public static final String AUTH_HEADER_DEVOPS_STORE_VERSION = "X-DEVOPS-STORE-VERSION";
public static final String AUTH_HEADER_DEVOPS_SIGN_FILE_NAME = "X-DEVOPS-SIGN-FILE-NAME";
public static final String AUTH_HEADER_DEVOPS_ENV = "X-DEVOPS-ENV";
}

View File

@ -1,51 +0,0 @@
package cd.casic.ci.common.pipeline.constant;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.constant
* @Projectops-pro
* @namePipelineConstants
* @Date2025/03/26 15:59
* @FilenamePipelineConstants
* @descriptionTodo
*/
public class PipelineConstants {
public static final String PIPELINE_SUBPIPELINE_CALL_ELEMENT_ID = "pipeline.subpipeline.call.element.id";
public static final String PIPELINE_SUBPIPELINE_CALL_ELEMENT_NAME = "pipeline.subpipeline.call.element.name";
public static final String PIPELINE_GIT_REF = "GIT_CI_REF";
public static final String PIPELINE_GIT_HEAD_REF = "GIT_CI_HEAD_REF";
public static final String PIPELINE_GIT_BASE_REF = "GIT_CI_BASE_REF";
public static final String PIPELINE_GIT_REPO = "GIT_CI_REPO";
public static final String PIPELINE_GIT_REPO_ID = "GIT_CI_REPO_ID";
public static final String PIPELINE_GIT_REPO_NAME = "GIT_CI_REPO_NAME";
public static final String PIPELINE_GIT_REPO_GROUP = "GIT_CI_REPO_GROUP";
public static final String PIPELINE_GIT_REPO_CREATE_TIME = "GIT_CI_REPO_CREATE_TIME";
public static final String PIPELINE_GIT_REPO_CREATOR = "GIT_CI_REPO_CREATOR";
public static final String PIPELINE_GIT_EVENT = "GIT_CI_EVENT";
public static final String PIPELINE_GIT_EVENT_CONTENT = "GIT_CI_EVENT_CONTENT";
public static final String PIPELINE_GIT_SHA = "GIT_CI_SHA";
public static final String PIPELINE_GIT_SHA_SHORT = "GIT_CI_SHA_SHORT";
public static final String PIPELINE_GIT_BEFORE_SHA = "GIT_CI_BEFORE_SHA";
public static final String PIPELINE_GIT_BEFORE_SHA_SHORT = "GIT_CI_BEFORE_SHA_SHORT";
public static final String PIPELINE_GIT_COMMIT_MESSAGE = "GIT_CI_COMMIT_MESSAGE";
public static final String PIPELINE_GIT_EVENT_URL = "GIT_CI_EVENT_URL";
public static final String PIPELINE_GIT_ACTION = "GIT_CI_ACTION";
public static final String PIPELINE_GIT_YAML_PATH = "GIT_CI_YAML_PATH";
public static final String PIPELINE_GIT_REPO_URL = "GIT_CI_REPO_URL";
public static final String PIPELINE_GIT_BASE_REPO_URL = "GIT_CI_BASE_REPO_URL";
public static final String PIPELINE_GIT_HEAD_REPO_URL = "GIT_CI_HEAD_REPO_URL";
public static final String PIPELINE_GIT_COMMIT_AUTHOR = "GIT_CI_COMMIT_AUTHOR";
public static final String PIPELINE_GIT_UPDATE_USER = "GIT_CI_PIPELINE_UPDATE_USER";
public static final String PIPELINE_GIT_AUTHORIZER = "GIT_CI_AUTHORIZER";
public static final String PIPELINE_GIT_TAG_MESSAGE = "GIT_CI_TAG_MESSAGE";
public static final String PIPELINE_GIT_TAG_FROM = "GIT_CI_TAG_FROM";
public static final String PIPELINE_GIT_MR_ID = "GIT_CI_MR_ID";
public static final String PIPELINE_GIT_MR_IID = "GIT_CI_MR_IID";
public static final String PIPELINE_GIT_MR_URL = "GIT_CI_MR_URL";
public static final String PIPELINE_GIT_MR_TITLE = "GIT_CI_MR_TITLE";
public static final String PIPELINE_GIT_MR_DESC = "GIT_CI_MR_DESC";
public static final String PIPELINE_GIT_MR_PROPOSER = "GIT_CI_MR_PROPOSER";
public static final String PIPELINE_GIT_MR_ACTION = "GIT_CI_MR_ACTION";
public static final String PIPELINE_PAC_REPO_HASH_ID = "BK_CI_PAC_REPO_HASH_ID";
public static final String PIPELINE_GIT_TIME_TRIGGER_KIND = "schedule";
}

View File

@ -1,30 +0,0 @@
package cd.casic.ci.common.pipeline.constant;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.constant
* @Projectops-pro
* @nameStringConstant
* @Date2025/03/26 18:26
* @FilenameStringConstant
* @descriptionTodo
*/
public class StringConstant {
public static String coerceAtMaxLength(String str, int maxLength) {
if (str.length() > maxLength) {
return str.substring(0, maxLength);
}
return str;
}
public static String appendIfNotEmpty(String str, String suffix, String separator) {
if (suffix != null && !suffix.isEmpty()) {
return str + separator + suffix;
}
return str;
}
public static String appendIfNotEmpty(String str, String suffix) {
return appendIfNotEmpty(str, suffix, ".");
}
}

View File

@ -1,178 +0,0 @@
package cd.casic.ci.common.pipeline.constant;
/**
* @author by mianbin
* @Classname WebhookConstant
* @Description TODO
* @Date 2025/4/1 16:55
*/
public class WebhookConstant {
public static final String CI_RUN = "CI_RUN";
public static final String CI_REF = "CI_REF";
public static final String CI_REPO_OWNER = "CI_REPO_OWNER";
public static final String CI_REPOSITORY = "CI_REPOSITORY";
public static final String CI_BRANCH = "ci.branch";
public static final String DELETE_EVENT = "delete";
public static final String REPO_WEBHOOK_REPO_TYPE = "CI_REPO_WEBHOOK_REPO_TYPE";
public static final String REPO_WEBHOOK_REPO_URL = "CI_REPO_WEBHOOK_REPO_URL";
public static final String REPO_WEBHOOK_REPO_NAME = "CI_REPO_WEBHOOK_NAME";
public static final String REPO_WEBHOOK_REPO_ALIAS_NAME = "CI_REPO_WEBHOOK_ALIAS_NAME";
public static final String REPO_WEBHOOK_HASH_ID = "CI_REPO_WEB_HOOK_HASHID";
public static final String REPO_WEBHOOK_REPO_AUTH_USER = "CI_REPO_WEBHOOK_AUTH_USER";
public static final String REPO_GIT_WEBHOOK_COMMIT_MESSAGE = "CI_REPO_GIT_WEBHOOK_COMMIT_MESSAGE";
public static final String REPO_GIT_WEBHOOK_COMMIT_ID = "CI_REPO_GIT_WEBHOOK_COMMITID";
public static final String REPO_GIT_WEBHOOK_COMMIT_ID_SHORT = "CI_REPO_GIT_WEBHOOK_COMMITID_SHORT";
public static final String REPO_GIT_WEBHOOK_EVENT_TYPE = "CI_REPO_GIT_WEBHOOK_EVENT_TYPE";
public static final String REPO_GIT_WEBHOOK_INCLUDE_BRANCHS = "CI_REPO_GIT_WEBHOOK_INCLUDE_BRANCH";
public static final String REPO_GIT_WEBHOOK_EXCLUDE_BRANCHS = "CI_REPO_GIT_WEBHOOK_EXCLUDE_BRANCH";
public static final String REPO_GIT_WEBHOOK_INCLUDE_PATHS = "CI_REPO_GIT_WEBHOOK_INCLUDE_PATHS";
public static final String REPO_GIT_WEBHOOK_EXCLUDE_PATHS = "CI_REPO_GIT_WEBHOOK_EXCLUDE_PATHS";
public static final String REPO_GIT_WEBHOOK_EXCLUDE_USERS = "CI_REPO_GIT_WEBHOOK_EXCLUDE_USERS";
public static final String REPO_GIT_WEBHOOK_INCLUDE_USERS = "CI_REPO_GIT_WEBHOOK_INCLUDE_USERS";
public static final String REPO_GIT_WEBHOOK_BRANCH = "CI_REPO_GIT_WEBHOOK_BRANCH";
public static final String REPO_GIT_MANUAL_UNLOCK = "CI_REPO_GIT_MANUAL_UNLOCK";
public static final String REPO_GIT_WEBHOOK_ENABLE_CHECK = "REPO_GIT_WEBHOOK_ENABLE_CHECK";
public static final String REPO_GIT_WEBHOOK_PUSH_USERNAME = "CI_REPO_GIT_WEBHOOK_PUSH_USERNAME";
public static final String REPO_GIT_WEBHOOK_PUSH_BEFORE_COMMIT = "REPO_GIT_WEBHOOK_PUSH_BEFORE_COMMIT";
public static final String REPO_GIT_WEBHOOK_PUSH_AFTER_COMMIT = "REPO_GIT_WEBHOOK_PUSH_AFTER_COMMIT";
public static final String REPO_GIT_WEBHOOK_PUSH_TOTAL_COMMIT = "REPO_GIT_WEBHOOK_PUSH_TOTAL_COMMIT";
public static final String REPO_GIT_WEBHOOK_PUSH_COMMIT_PREFIX = "REPO_GIT_WEBHOOK_PUSH_COMMIT_";
public static final String REPO_GIT_WEBHOOK_PUSH_COMMIT_MSG_PREFIX = "REPO_GIT_WEBHOOK_PUSH_COMMIT_MSG_";
public static final String REPO_GIT_WEBHOOK_PUSH_COMMIT_TIMESTAMP_PREFIX = "REPO_GIT_WEBHOOK_PUSH_COMMIT_TIMESTAMP_";
public static final String REPO_GIT_WEBHOOK_PUSH_COMMIT_AUTHOR_PREFIX = "REPO_GIT_WEBHOOK_PUSH_COMMIT_AUTHOR_";
public static final String REPO_GIT_WEBHOOK_PUSH_ADD_FILE_PREFIX = "REPO_GIT_WEBHOOK_PUSH_ADD_FILE_";
public static final String REPO_GIT_WEBHOOK_PUSH_MODIFY_FILE_PREFIX = "REPO_GIT_WEBHOOK_PUSH_MODIFY_FILE_";
public static final String REPO_GIT_WEBHOOK_PUSH_DELETE_FILE_PREFIX = "REPO_GIT_WEBHOOK_PUSH_DELETE_FILE_";
public static final String REPO_GIT_WEBHOOK_PUSH_ADD_FILE_COUNT = "REPO_GIT_WEBHOOK_PUSH_ADD_FILE_COUNT";
public static final String REPO_GIT_WEBHOOK_PUSH_MODIFY_FILE_COUNT = "REPO_GIT_WEBHOOK_PUSH_MODIFY_FILE_COUNT";
public static final String REPO_GIT_WEBHOOK_PUSH_DELETE_FILE_COUNT = "REPO_GIT_WEBHOOK_PUSH_DELETE_FILE_COUNT";
public static final String REPO_GIT_WEBHOOK_PUSH_OPERATION_KIND = "REPO_GIT_WEBHOOK_PUSH_OPERATION_KIND";
public static final String REPO_GIT_WEBHOOK_PUSH_ACTION_KIND = "REPO_GIT_WEBHOOK_PUSH_ACTION_KIND";
public static final String REPO_GIT_WEBHOOK_PUSH_PROJECT_ID = "REPO_GIT_WEBHOOK_PUSH_PROJECT_ID";
public static final String REPO_GIT_WEBHOOK_FINAL_INCLUDE_BRANCH = "CI_GIT_WEBHOOK_FINAL_INCLUDE_BRANCH";
public static final String REPO_GIT_WEBHOOK_FINAL_INCLUDE_PATH = "CI_GIT_WEBHOOK_FINAL_INCLUDE_PATH";
public static final String REPO_GIT_WEBHOOK_MR_AUTHOR = "CI_REPO_GIT_WEBHOOK_MR_AUTHOR";
public static final String REPO_GIT_WEBHOOK_MR_ACTION = "CI_REPO_GIT_WEBHOOK_MR_ACTION";
public static final String REPO_GIT_WEBHOOK_MR_TARGET_URL = "CI_REPO_GIT_WEBHOOK_TARGET_URL";
public static final String REPO_GIT_WEBHOOK_MR_SOURCE_URL = "CI_REPO_GIT_WEBHOOK_SOURCE_URL";
public static final String REPO_GIT_WEBHOOK_MR_TARGET_BRANCH = "CI_REPO_GIT_WEBHOOK_TARGET_BRANCH";
public static final String REPO_GIT_WEBHOOK_MR_SOURCE_BRANCH = "CI_REPO_GIT_WEBHOOK_SOURCE_BRANCH";
public static final String REPO_GIT_WEBHOOK_MR_CREATE_TIME = "CI_REPO_GIT_WEBHOOK_MR_CREATE_TIME";
public static final String REPO_GIT_WEBHOOK_MR_UPDATE_TIME = "CI_REPO_GIT_WEBHOOK_MR_UPDATE_TIME";
public static final String REPO_GIT_WEBHOOK_MR_CREATE_TIMESTAMP = "CI_REPO_GIT_WEBHOOK_MR_CREATE_TIMESTAMP";
public static final String REPO_GIT_WEBHOOK_MR_UPDATE_TIMESTAMP = "CI_REPO_GIT_WEBHOOK_MR_UPDATE_TIMESTAMP";
public static final String REPO_GIT_WEBHOOK_MR_ID = "CI_REPO_GIT_WEBHOOK_MR_ID";
public static final String REPO_GIT_WEBHOOK_MR_NUMBER = "CI_REPO_GIT_WEBHOOK_MR_NUMBER";
public static final String REPO_GIT_WEBHOOK_MR_DESCRIPTION = "CI_REPO_GIT_WEBHOOK_MR_DESC";
public static final String REPO_GIT_WEBHOOK_MR_TITLE = "CI_REPO_GIT_WEBHOOK_MR_TITLE";
public static final String REPO_GIT_WEBHOOK_MR_ASSIGNEE = "CI_REPO_GIT_WEBHOOK_MR_ASSIGNEE";
public static final String REPO_GIT_WEBHOOK_MR_URL = "CI_REPO_GIT_WEBHOOK_MR_URL";
public static final String REPO_GIT_WEBHOOK_MR_REVIEWERS = "CI_REPO_GIT_WEBHOOK_MR_REVIEWERS";
public static final String REPO_GIT_WEBHOOK_MR_MILESTONE = "CI_REPO_GIT_WEBHOOK_MR_MILESTONE";
public static final String REPO_GIT_WEBHOOK_MR_MILESTONE_ID = "CI_REPO_GIT_WEBHOOK_MR_MILESTONE_ID";
public static final String REPO_GIT_WEBHOOK_MR_MILESTONE_DUE_DATE = "CI_REPO_GIT_WEBHOOK_MR_MILESTONE_DUE_DATE";
public static final String REPO_GIT_WEBHOOK_MR_LABELS = "CI_REPO_GIT_WEBHOOK_MR_LABELS";
public static final String REPO_GIT_WEBHOOK_MR_LAST_COMMIT = "REPO_GIT_WEBHOOK_MR_LAST_COMMIT";
public static final String REPO_GIT_WEBHOOK_MR_LAST_COMMIT_MSG = "REPO_GIT_WEBHOOK_MR_LAST_COMMIT_MSG";
public static final String REPO_GIT_WEBHOOK_MR_MERGE_TYPE = "REPO_GIT_WEBHOOK_MR_MERGE_TYPE";
public static final String REPO_GIT_WEBHOOK_MR_MERGE_COMMIT_SHA = "REPO_GIT_WEBHOOK_MR_MERGE_COMMIT_SHA";
public static final String REPO_GIT_WEBHOOK_MR_BASE_COMMIT = "REPO_GIT_WEBHOOK_MR_BASE_COMMIT";
public static final String REPO_GIT_WEBHOOK_MR_TARGET_COMMIT = "REPO_GIT_WEBHOOK_MR_TARGET_COMMIT";
public static final String REPO_GIT_WEBHOOK_MR_SOURCE_COMMIT = "REPO_GIT_WEBHOOK_MR_SOURCE_COMMIT";
public static final String REPO_GIT_WEBHOOK_REVIEW_REVIEWABLE_ID = "CI_REPO_GIT_WEBHOOK_REVIEW_REVIEWABLE_ID";
public static final String REPO_GIT_WEBHOOK_REVIEW_REVIEWABLE_TYPE = "CI_REPO_GIT_WEBHOOK_REVIEW_REVIEWABLE_TYPE";
public static final String REPO_GIT_WEBHOOK_REVIEW_RESTRICT_TYPE = "CI_REPO_GIT_WEBHOOK_REVIEW_RESTRICT_TYPE";
public static final String REPO_GIT_WEBHOOK_REVIEW_APPROVING_REVIEWERS = "CI_REPO_GIT_WEBHOOK_REVIEW_APPROVING_REVIEWERS";
public static final String REPO_GIT_WEBHOOK_REVIEW_APPROVED_REVIEWERS = "CI_REPO_GIT_WEBHOOK_REVIEW_APPROVED_REVIEWERS";
public static final String REPO_GIT_WEBHOOK_REVIEW_REVIEWERS = "CI_REPO_GIT_WEBHOOK_REVIEW_REVIEWERS";
public static final String REPO_GIT_WEBHOOK_REVIEW_STATE = "CI_REPO_GIT_WEBHOOK_REVIEW_STATE";
public static final String REPO_GIT_WEBHOOK_REVIEW_OWNER = "CI_REPO_GIT_WEBHOOK_REVIEW_OWNER";
public static final String REPO_GIT_WEBHOOK_REVIEW_ID = "CI_REPO_GIT_WEBHOOK_REVIEW_ID";
public static final String REPO_GIT_WEBHOOK_REVIEW_IID = "CI_REPO_GIT_WEBHOOK_REVIEW_IID";
public static final String REPO_GIT_WEBHOOK_REVIEW_SOURCE_BRANCH = "CI_REPO_GIT_WEBHOOK_REVIEW_SOURCE_BRANCH";
public static final String REPO_GIT_WEBHOOK_REVIEW_SOURCE_PROJECT_ID = "CI_REPO_GIT_WEBHOOK_REVIEW_SOURCE_PROJECT_ID";
public static final String REPO_GIT_WEBHOOK_REVIEW_SOURCE_COMMIT = "CI_REPO_GIT_WEBHOOK_REVIEW_SOURCE_COMMIT";
public static final String REPO_GIT_WEBHOOK_REVIEW_TARGET_COMMIT = "CI_REPO_GIT_WEBHOOK_REVIEW_TARGET_COMMIT";
public static final String REPO_GIT_WEBHOOK_REVIEW_TARGET_BRANCH = "CI_REPO_GIT_WEBHOOK_REVIEW_TARGET_BRANCH";
public static final String REPO_GIT_WEBHOOK_REVIEW_TARGET_PROJECT_ID = "CI_REPO_GIT_WEBHOOK_REVIEW_TARGET_PROJECT_ID";
public static final String REPO_GIT_WEBHOOK_TAG_NAME = "CI_REPO_GIT_WEBHOOK_TAG_NAME";
public static final String REPO_GIT_WEBHOOK_TAG_OPERATION = "CI_REPO_GIT_WEBHOOK_TAG_OPERATION";
public static final String REPO_GIT_WEBHOOK_TAG_USERNAME = "CI_REPO_GIT_WEBHOOK_TAG_USERNAME";
public static final String REPO_GIT_WEBHOOK_TAG_CREATE_FROM = "CI_REPO_GIT_WEBHOOK_TAG_CREATE_FROM";
public static final String REPO_GITHUB_WEBHOOK_CREATE_REF_NAME = "CI_REPO_GITHUB_WEBHOOK_CREATE_REF_NAME";
public static final String REPO_GITHUB_WEBHOOK_CREATE_REF_TYPE = "CI_REPO_GITHUB_WEBHOOK_CREATE_REF_TYPE";
public static final String REPO_GITHUB_WEBHOOK_CREATE_USERNAME = "CI_REPO_GITHUB_WEBHOOK_CREATE_USERNAME";
public static final String REPO_SVN_WEBHOOK_REVERSION = "CI_REPO_SVN_WEBHOOK_REVERSION";
public static final String REPO_SVN_WEBHOOK_USERNAME = "CI_REPO_SVN_WEBHOOK_USERNAME";
public static final String REPO_SVN_WEBHOOK_COMMIT_TIME = "CI_REPO_SVN_WEBHOOK_COMMIT_TIME";
public static final String REPO_SVN_WEBHOOK_RELATIVE_PATH = "CI_REPO_SVN_WEBHOOK_INCLUDE_PATHS";
public static final String REPO_SVN_WEBHOOK_EXCLUDE_PATHS = "CI_REPO_SVN_WEBHOOK_EXCLUDE_PATHS";
public static final String REPO_SVN_WEBHOOK_INCLUDE_USERS = "CI_REPO_SVN_WEBHOOK_INCLUDE_USERS";
public static final String REPO_SVN_WEBHOOK_EXCLUDE_USERS = "CI_REPO_SVN_WEBHOOK_EXCLUDE_USERS";
public static final String REPO_SVN_WEBHOOK_FINAL_INCLUDE_PATH = "CI_REPO_SVN_WEBHOOK_FINAL_INCLUDE_PATH";
public static final String PIPELINE_WEBHOOK_MR_ID = "CI_HOOK_MR_ID"; // hookMergeRequestId
public static final String PIPELINE_WEBHOOK_MR_COMMITTER = "CI_HOOK_MR_COMMITTER"; // "hookMergeRequest_committer"
public static final String PIPELINE_WEBHOOK_SOURCE_BRANCH = "CI_HOOK_SOURCE_BRANCH"; // hookSourceBranch
public static final String PIPELINE_WEBHOOK_TARGET_BRANCH = "CI_HOOK_TARGET_BRANCH"; // hookTargetBranch
public static final String PIPELINE_WEBHOOK_SOURCE_PROJECT_ID = "CI_HOOK_SOURCE_PROJECT_ID";
public static final String PIPELINE_WEBHOOK_TARGET_PROJECT_ID = "CI_HOOK_TARGET_PROJECT_ID";
public static final String PIPELINE_WEBHOOK_SOURCE_REPO_NAME = "CI_HOOK_SOURCE_REPO_NAME";
public static final String PIPELINE_WEBHOOK_TARGET_REPO_NAME = "CI_HOOK_TARGET_REPO_NAME";
public static final String MATCH_BRANCH = "matchBranch";
public static final String MATCH_PATHS = "matchPaths";
public static final String GIT_MR_NUMBER = "CI_GIT_MR_NUMBER"; // git_mr_number
public static final String GITHUB_PR_NUMBER = "CI_GITHUB_PR_NUMBER"; // github_pr_number
public static final String REPO_P4_WEBHOOK_P4PORT = "CI_REPO_P4_WEBHOOK_P4PORT";
public static final String REPO_P4_WEBHOOK_EVENT_TYPE = "CI_REPO_P4_WEBHOOK_EVENT_TYPE";
public static final String REPO_P4_WEBHOOK_INCLUDE_PATHS = "CI_REPO_P4_WEBHOOK_INCLUDE_PATHS";
public static final String REPO_P4_WEBHOOK_EXCLUDE_PATHS = "CI_REPO_P4_WEBHOOK_EXCLUDE_PATHS";
public static final String REPO_P4_WEBHOOK_CHANGE = "CI_REPO_P4_WEBHOOK_CHANGE";
public static final String PIPELINE_WEBHOOK_REVISION = "CI_HOOK_REVISION"; // hookRevision
public static final String PIPELINE_WEBHOOK_BRANCH = "CI_HOOK_BRANCH"; // hookBranch
public static final String PIPELINE_WEBHOOK_SOURCE_URL = "CI_HOOK_SOURCE_URL"; // hookSourceUrl
public static final String PIPELINE_WEBHOOK_TARGET_URL = "CI_HOOK_TARGET_URL"; // hookTargetUrl
public static final String PIPELINE_WEBHOOK_REPO = "CI_HOOK_REPO"; // hookRepo
public static final String PIPELINE_WEBHOOK_REPO_TYPE = "CI_HOOK_REPO_TYPE"; // hookRepoType
public static final String PIPELINE_WEBHOOK_BLOCK = "CI_HOOK_BLOCK"; // hookBlock
public static final String PIPELINE_WEBHOOK_TYPE = "CI_HOOK_TYPE"; // hookType
public static final String PIPELINE_WEBHOOK_EVENT_TYPE = "CI_HOOK_EVENT_TYPE"; // hookEventType
public static final String PIPELINE_REPO_NAME = "CI_REPO_NAME"; // "repoName"
public static final String PIPELINE_WEBHOOK_COMMIT_MESSAGE = "CI_HOOK_MESSAGE"; // hook message
public static final String PIPELINE_START_WEBHOOK_USER_ID = "CI_START_WEBHOOK_USER_ID"; // "pipeline.start.webhook.user.id"
public static final String PIPELINE_WEBHOOK_QUEUE = "CI_HOOK_QUEUE";
// issue事件
public static final String REPO_GIT_WEBHOOK_ISSUE_TITLE = "CI_REPO_GIT_WEBHOOK_ISSUE_TITLE";
public static final String REPO_GIT_WEBHOOK_ISSUE_ID = "CI_REPO_GIT_WEBHOOK_ISSUE_ID";
public static final String REPO_GIT_WEBHOOK_ISSUE_IID = "CI_REPO_GIT_WEBHOOK_ISSUE_IID";
public static final String REPO_GIT_WEBHOOK_ISSUE_DESCRIPTION = "CI_REPO_GIT_WEBHOOK_ISSUE_DESCRIPTION";
public static final String REPO_GIT_WEBHOOK_ISSUE_STATE = "CI_REPO_GIT_WEBHOOK_ISSUE_STATE";
public static final String REPO_GIT_WEBHOOK_ISSUE_OWNER = "CI_REPO_GIT_WEBHOOK_ISSUE_OWNER"; // issue 的负责人
public static final String REPO_GIT_WEBHOOK_ISSUE_URL = "CI_REPO_GIT_WEBHOOK_ISSUE_URL";
public static final String REPO_GIT_WEBHOOK_ISSUE_MILESTONE_ID = "CI_REPO_GIT_WEBHOOK_ISSUE_MILESTONE_ID";
public static final String REPO_GIT_WEBHOOK_ISSUE_ACTION = "CI_REPO_GIT_WEBHOOK_ISSUE_ACTION";
// note事件
public static final String PIPELINE_WEBHOOK_NOTE_COMMENT = "PIPELINE_WEBHOOK_NOTE_COMMENT";
public static final String PIPELINE_WEBHOOK_NOTE_ID = "PIPELINE_WEBHOOK_NOTE_ID";
public static final String REPO_GIT_WEBHOOK_NOTE_COMMENT = "CI_REPO_GIT_WEBHOOK_NOTE_COMMENT";
public static final String REPO_GIT_WEBHOOK_NOTE_ID = "CI_REPO_GIT_WEBHOOK_NOTE_ID";
public static final String REPO_GIT_WEBHOOK_NOTE_PROJECT_ID = "CI_REPO_GIT_WEBHOOK_NOTE_PROJECT_ID";
public static final String REPO_GIT_WEBHOOK_NOTE_NOTEABLE_TYPE = "CI_REPO_GIT_WEBHOOK_NOTE_NOTEABLE_TYPE";
public static final String REPO_GIT_WEBHOOK_NOTE_AUTHOR_ID = "CI_REPO_GIT_WEBHOOK_NOTE_AUTHOR_ID";
public static final String REPO_GIT_WEBHOOK_NOTE_CREATED_AT = "CI_REPO_GIT_WEBHOOK_NOTE_CREATED_AT";
public static final String REPO_GIT_WEBHOOK_NOTE_UPDATED_AT = "CI_REPO_GIT_WEBHOOK_NOTE_UPDATED_AT";
public static final String REPO_GIT_WEBHOOK_NOTE_URL = "CI_REPO_GIT_WEBHOOK_NOTE_URL";
}

View File

@ -1,108 +0,0 @@
package cd.casic.ci.common.pipeline.container;
import cd.casic.ci.common.pipeline.pojo.agent.AgentType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.container
* @Projectops-pro
* @nameAgentReuseMutex
* @Date2025/03/25 16:51
* @FilenameAgentReuseMutex
* @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读取变量执行
* * 3Agent集群且明确指定了某个集群(集群ID或者名称)在分发到Dispatch前需要进行集群级别的互斥锁逻辑
* * 这样可以保证同样进行互斥逻辑的集群在引擎处进行等待
* * 与单个Agent节点的Job关系相同并行执行时并行竞争串行时天然的有先后顺序读取Var表中节点进行项目级的互斥逻辑
* * 4Agent集群但使用变量指代与未进行变量指代的逻辑一致无需特殊声明
* * 如果是共享集群不受影响依旧使用执行项目来进行锁定
* * @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;
}
}
}
}

View File

@ -1,99 +0,0 @@
package cd.casic.ci.common.pipeline.container;
import cd.casic.ci.common.pipeline.IModelTemplate;
import cd.casic.ci.common.pipeline.pojo.element.Element;
import cd.casic.ci.common.pipeline.pojo.time.BuildRecordTimeCost;
import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
import java.util.Map;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.container
* @Projectops-pro
* @nameContainer
* @Date2025/03/25 16:53
* @FilenameContainer
* @descriptionTodo
*/
@Data
@SuperBuilder
@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)
})
@Getter
@NoArgsConstructor
@AllArgsConstructor
public abstract class Container implements IModelTemplate {
protected String id; // seq id
protected String name;
protected List<Element> elements;
protected String status;
@Deprecated(since = "即将被timeCost代替")
protected Long startEpoch;
@Deprecated(since = "即将被timeCost代替")
protected Long systemElapsed; // 系统耗时开机时间
@Deprecated(since = "即将被timeCost代替")
protected Long elementElapsed; // 插件执行耗时
protected Boolean canRetry; // 当前job是否能重试
protected String containerId; // container 流水线唯一ID同seq id
protected String containerHashId; // container 全局唯一ID
protected String startVMStatus;
protected Integer executeCount;
protected String jobId; // 用户自定义id
protected Boolean containPostTaskFlag; // 是否包含post任务
protected Boolean matrixGroupFlag; // 是否为构建矩阵组
protected BuildRecordTimeCost timeCost; // 耗时结果
protected Integer startVMTaskSeq; // 开机任务序号
public void resetBuildOption(int executeCount) {
this.status = null;
this.timeCost = null;
this.startEpoch = null;
this.elementElapsed = null;
this.systemElapsed = null;
this.startVMStatus = null;
this.executeCount = executeCount;
}
public void transformCompatibility() {
if (elements != null) {
elements.forEach(Element::transformCompatibility);
}
}
public Map<String, Object> genTaskParams() {
Map<String, Object> configParams = JSONUtil.parseObj(this).toBean(Map.class);
if (elements != null && !elements.isEmpty()) {
configParams.put("elements", List.of());
}
return configParams;
}
public abstract String getClassType();
public abstract Container getContainerById(String vmSeqId);
public abstract void retryFreshMatrixOption();
public abstract List<Container> fetchGroupContainers();
public abstract Map<String, String> fetchMatrixContext();
public abstract boolean containerEnabled();
public abstract void setContainerEnable(boolean enable);
}

View File

@ -1,36 +0,0 @@
package cd.casic.ci.common.pipeline.container;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.container
* @Projectops-pro
* @nameMutexGroup
* @Date2025/03/25 16:54
* @FilenameMutexGroup
* @descriptionTodo
*/
@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;
}

View File

@ -1,125 +0,0 @@
package cd.casic.ci.common.pipeline.container;
import cd.casic.ci.common.pipeline.NameAndValue;
import cd.casic.ci.common.pipeline.option.JobControlOption;
import cd.casic.ci.common.pipeline.option.MatrixControlOption;
import io.swagger.v3.oas.annotations.media.Schema;
import kotlin.ReplaceWith;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
import java.util.Map;
@Data
@EqualsAndHashCode(callSuper = false)
@Schema(title = "流水线模型-普通任务容器")
public class NormalContainer extends Container {
public static final String classType = "normal";
private Boolean enableSkip = false;
private List<NameAndValue> conditions;
private Integer maxQueueMinutes = 60;
private Integer maxRunningMinutes = 1440;
private JobControlOption jobControlOption; // 为了兼容旧数据所以定义为可空以及var
private MutexGroup mutexGroup; // 为了兼容旧数据所以定义为可空以及var
private MatrixControlOption matrixControlOption;
private String matrixGroupId;
private Map<String, String> matrixContext;
private List<NormalContainer> groupContainers;
@Override
public String getClassType() {
return classType;
}
@Override
public Container getContainerById(String vmSeqId) {
if (vmSeqId.equals(id) || vmSeqId.equals(containerId)) {
return this;
}
List<Container> containers = fetchGroupContainers();
if (containers != null) {
for (Container container : containers) {
if (vmSeqId.equals(container.getId()) || vmSeqId.equals(container.getContainerId())) {
return container;
}
}
}
return null;
}
@Override
public void retryFreshMatrixOption() {
groupContainers = null;
if (matrixControlOption != null) {
matrixControlOption.setFinishCount(null);
matrixControlOption.setTotalCount(null);
}
}
@Override
public List<Container> fetchGroupContainers() {
return groupContainers != null ? List.copyOf(groupContainers) : null;
}
@Override
public Map<String, String> fetchMatrixContext() {
return matrixContext;
}
@Override
public boolean containerEnabled() {
return jobControlOption == null || jobControlOption.getEnable();
}
@Override
public void setContainerEnable(boolean enable) {
jobControlOption = jobControlOption != null ? jobControlOption.setEnable(enable) : new JobControlOption().setEnable(enable);
}
@Override
public void transformCompatibility() {
if (jobControlOption != null && (jobControlOption.getTimeoutVar() == null || jobControlOption.getTimeoutVar().isEmpty())) {
jobControlOption.setTimeoutVar(String.valueOf(jobControlOption.getTimeout()));
}
if (mutexGroup != null && (mutexGroup.getTimeoutVar() == null || mutexGroup.getTimeoutVar().isEmpty())) {
mutexGroup.setTimeoutVar(String.valueOf(mutexGroup.getTimeout()));
}
super.transformCompatibility();
}
@Override
public String getTemplate() {
return null;
}
@Override
public String getRef() {
return null;
}
@Override
public Map<String, String> getVariables() {
return null;
}
@Override
public void setTemplate(String template) {
}
@Override
public void setRef(String ref) {
}
@Override
public void setVariables(Map<String, String> variables) {
}
}

View File

@ -1,141 +0,0 @@
package cd.casic.ci.common.pipeline.container;
import cd.casic.ci.common.pipeline.IModelTemplate;
import cd.casic.ci.common.pipeline.option.StageControlOption;
import cd.casic.ci.common.pipeline.pojo.StagePauseCheck;
import cd.casic.ci.common.pipeline.pojo.time.BuildRecordTimeCost;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.container
* @Projectops-pro
* @nameStage
* @Date2025/03/25 16:55
* @FilenameStage
* @descriptionTodo
*/
@Data
@NoArgsConstructor
@Schema(title = "流水线模型-阶段")
public class Stage implements IModelTemplate {
@Schema(title = "容器集合", required = true)
private List<Container> 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<String> 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<String, String> customBuildEnv;
@Schema(title = "是否启用容器失败快速终止阶段", required = false)
private Boolean fastKill;
@Schema(title = "标识是否为FinallyStage每个Model只能包含一个FinallyStage并且处于最后位置", required = false)
private Boolean finallyStage;
@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 (finallyStage !=null && finallyStage){
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;
}
public boolean isFinally() {
return finallyStage != null && finallyStage;
}
@Override
public String getTemplate() {
return null;
}
@Override
public String getRef() {
return null;
}
@Override
public Map<String, String> getVariables() {
return null;
}
@Override
public void setTemplate(String template) {
}
@Override
public void setRef(String ref) {
}
@Override
public void setVariables(Map<String, String> variables) {
}
}

View File

@ -1,142 +0,0 @@
package cd.casic.ci.common.pipeline.container;
import cd.casic.ci.common.pipeline.pojo.BuildFormProperty;
import cd.casic.ci.common.pipeline.pojo.BuildNo;
import cd.casic.ci.common.pipeline.pojo.element.Element;
import cd.casic.ci.common.pipeline.pojo.time.BuildRecordTimeCost;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.container
* @Projectops-pro
* @nameTriggerContainer
* @Date2025/03/25 16:56
* @FilenameTriggerContainer
* @descriptionTodo
*/
@Data
@NoArgsConstructor
@Schema(title = "流水线模型-构建触发容器")
public class TriggerContainer extends 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<Element> 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<BuildFormProperty> params;
@Schema(title = "模板参数构建", required = false)
private List<BuildFormProperty> 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<Container> fetchGroupContainers() {
return null;
}
@Override
public Map<String, String> fetchMatrixContext() {
return null;
}
@Override
public boolean containerEnabled() {
return true;
}
@Override
public void setContainerEnable(boolean enable) {
}
@Override
public void transformCompatibility() {
// No compatibility transformation needed
}
@Override
public String getTemplate() {
return null;
}
@Override
public String getRef() {
return null;
}
@Override
public Map<String, String> getVariables() {
return null;
}
@Override
public void setTemplate(String template) {
}
@Override
public void setRef(String ref) {
}
@Override
public void setVariables(Map<String, String> variables) {
}
}

View File

@ -1,206 +0,0 @@
package cd.casic.ci.common.pipeline.container;
import cd.casic.ci.common.pipeline.NameAndValue;
import cd.casic.ci.common.pipeline.enums.VMBaseOS;
import cd.casic.ci.common.pipeline.option.JobControlOption;
import cd.casic.ci.common.pipeline.option.MatrixControlOption;
import cd.casic.ci.common.pipeline.pojo.element.Element;
import cd.casic.ci.common.pipeline.pojo.time.BuildRecordTimeCost;
import cd.casic.ci.common.pipeline.type.DispatchType;
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;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.container
* @Projectops-pro
* @nameVMBuildContainer
* @Date2025/03/25 16:56
* @FilenameVMBuildContainer
* @descriptionTodo
*/
@Data
@NoArgsConstructor
@Schema(title = "流水线模型-虚拟机构建容器")
public class VMBuildContainer extends 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<Element> 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<String> 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<String, String> buildEnv;
@Schema(title = "用户自定义环境变量Agent启动时写入环境", required = false)
@Deprecated
private Map<String, String> customBuildEnv;
@Schema(title = "用户自定义环境变量Agent启动时写入环境", required = false)
private List<NameAndValue> 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<String, String> matrixContext;
@Schema(title = "分裂后的容器集合(分裂后的父容器特有字段)", required = false)
private List<VMBuildContainer> 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<Container> fetchGroupContainers() {
return groupContainers != null ? new ArrayList<>(groupContainers) : null;
}
@Override
public Map<String, String> fetchMatrixContext() {
return matrixContext;
}
@Override
public boolean containerEnabled() {
return jobControlOption != null ? jobControlOption.getEnable() : true;
}
@Override
public void setContainerEnable(boolean 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()));
}
}
@Override
public String getTemplate() {
return null;
}
@Override
public String getRef() {
return null;
}
@Override
public Map<String, String> getVariables() {
return null;
}
@Override
public void setTemplate(String template) {
}
@Override
public void setRef(String ref) {
}
@Override
public void setVariables(Map<String, String> variables) {
}
}

View File

@ -1,32 +0,0 @@
package cd.casic.ci.common.pipeline.dialect;
import lombok.Getter;
import lombok.Setter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.dialect
* @Projectops-pro
* @nameClassicPipelineDialect
* @Date2025/03/27 10:36
* @FilenameClassicPipelineDialect
* @descriptionTodo
*/
@Getter
@Setter
public class ClassicPipelineDialect implements IPipelineDialect {
@Override
public String getPipelineDialectType() {
return PipelineDialectType.CLASSIC.name();
}
@Override
public boolean supportUseExpression() {
return false;
}
@Override
public boolean supportChineseVarName() {
return true;
}
}

View File

@ -1,32 +0,0 @@
package cd.casic.ci.common.pipeline.dialect;
import lombok.Getter;
import lombok.Setter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.dialect
* @Projectops-pro
* @nameConstrainedPipelineDialect
* @Date2025/03/27 10:36
* @FilenameConstrainedPipelineDialect
* @descriptionTodo
*/
@Getter
@Setter
public class ConstrainedPipelineDialect implements IPipelineDialect {
@Override
public String getPipelineDialectType() {
return PipelineDialectType.CONSTRAINED.name();
}
@Override
public boolean supportUseExpression() {
return true;
}
@Override
public boolean supportChineseVarName() {
return false;
}
}

View File

@ -1,24 +0,0 @@
package cd.casic.ci.common.pipeline.dialect;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.dialect
* @Projectops-pro
* @nameIPipelineDialect
* @Date2025/03/27 10:35
* @FilenameIPipelineDialect
* @descriptionTodo
*/
public interface IPipelineDialect {
String getPipelineDialectType();
/**
* 1. 仅支持双花括号避免出现 bash 脚本变量在执行前被系统赋值的问题
* 2. 流程控制选项插件入参Job设置等流水线配置中均可使用函数
*/
boolean supportUseExpression();
/**
* 是否支持中文变量名
*/
boolean supportChineseVarName();
}

View File

@ -1,24 +0,0 @@
package cd.casic.ci.common.pipeline.dialect;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.dialect
* @Projectops-pro
* @namePipelineDialectType
* @Date2025/03/27 10:36
* @FilenamePipelineDialectType
* @descriptionTodo
*/
@Getter
public enum PipelineDialectType {
CLASSIC(new ClassicPipelineDialect()),
CONSTRAINED(new ConstrainedPipelineDialect());
private final IPipelineDialect dialect;
PipelineDialectType(IPipelineDialect dialect) {
this.dialect = dialect;
}
}

View File

@ -1,36 +0,0 @@
package cd.casic.ci.common.pipeline.dialect;
import cd.casic.ci.common.pipeline.enums.ChannelCode;
import lombok.NoArgsConstructor;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.dialect
* @Projectops-pro
* @namePipelineDialectUtil
* @Date2025/03/27 10:36
* @FilenamePipelineDialectUtil
* @descriptionTodo
*/
@NoArgsConstructor
public class PipelineDialectUtil {
public static IPipelineDialect getPipelineDialect(String pipelineDialectType) {
return pipelineDialectType != null ? PipelineDialectType.valueOf(pipelineDialectType).getDialect() : PipelineDialectType.CLASSIC.getDialect();
}
public static IPipelineDialect getPipelineDialect(Boolean inheritedDialect, String projectDialect, String pipelineDialect) {
return getPipelineDialectType(inheritedDialect, projectDialect, pipelineDialect).getDialect();
}
public static PipelineDialectType getPipelineDialectType(Boolean inheritedDialect, String projectDialect, String pipelineDialect) {
if (inheritedDialect == null || inheritedDialect) {
if (projectDialect != null) {
return PipelineDialectType.valueOf(projectDialect);
}
} else if (pipelineDialect != null) {
return PipelineDialectType.valueOf(pipelineDialect);
}
return PipelineDialectType.CLASSIC;
}
}

View File

@ -1,20 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameAgentAction
* @Date2025/03/26 10:13
* @FilenameAgentAction
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum AgentAction {
OFFLINE,
ONLINE;
}

View File

@ -1,64 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameAgentStatus
* @Date2025/03/26 10:13
* @FilenameAgentStatus
* @descriptionTodo
*/
@Getter
@Slf4j
@AllArgsConstructor
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;
@Override
public String toString() {
return String.valueOf(status);
}
public static AgentStatus fromStatus(int status) {
for (AgentStatus agentStatus : values()) {
if (agentStatus.getStatus() == status) {
return agentStatus;
}
}
log.error("Unknown agent status(" + status + ")");
return AgentStatus.UN_IMPORT;
}
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;
}
public static AgentStatus fromString(String status) {
for (AgentStatus agentStatus : values()) {
if (agentStatus.name().equals(status)) {
return agentStatus;
}
}
log.error("Unknown agent status(" + status + ")");
return AgentStatus.UN_IMPORT;
}
}

View File

@ -1,17 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
public enum AuthSystemType {
// v0权限中心
V0_AUTH_TYPE("v0"),
// v3权限中心
V3_AUTH_TYPE("v3"),
// rbac权限中心
RBAC_AUTH_TYPE("rbac");
private String value;
AuthSystemType(String value) {
this.value = value;
}
}

View File

@ -1,38 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
/**
* @Classname StyleEnum
* @Description ops类型枚举
* @Date 2025/3/18 10:26
* @author mianbin
*/
public enum BkStyleEnum {
COMMON_STYLE("^(.|\\r|\\n)*$"),
NUMBER_STYLE("[0-9]*$"),
CODE_STYLE("^[a-zA-Z_][\\w-()]{0,31}$"),
ID_STYLE("^[\\w-]{1,64}$"),
NAME_STYLE("^[\\w-\\u4E00-\\u9FBB\\u3400-\\u4DBF\\uF900-\\uFAD9\\u3000-\\u303F\\u2000-\\u206F\\uFF00-\\uFFEF.()\\s]{1,40}$"),
STORE_MEMBER_TYPE_STYLE("^ADMIN|DEVELOPER$"),
EMAIL_STYLE("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"),
AUTH_STYLE("^HTTP|HTTPS|OAUTH|SSH$"),
NOTE_STYLE("^[A-Za-z0-9\\u4E00-\\u9FBB\\u3400-\\u4DBF\\uF900-\\uFAD9\\u3000-\\u303F" +
"\\u2000-\\u206F\\uFF00-\\uFFEF.。?!,(),、;;:'‘’“”\"\\s]{1,256}$"),
VISIBILITY_LEVEL_STYLE("^PRIVATE|LOGIN_PUBLIC$"),
LANGUAGE_STYLE("^java|python|nodejs|kotilin|golang|c|c++|php|c#$"),
BOOLEAN_STYLE("^true|false$"),
SCOPE_STYLE("^TEST|PRD|ALL$"),
SERVICE_CODE_STYLE("^[a-z][([-a-z-0-9]*[a-z-0-9])?]{0,31}$"),
BUILD_NUM_RULE_STYLE("^[\\w-{}() +?.:$\"]{1,256}$"),
STORE_FIELD_TYPE_STYLE("^BACKEND|FRONTEND|ALL$"),
PAGE_SIZE_STYLE("^100$|^([1-9]|[1-9]\\d)$");
private final String style;
BkStyleEnum(String style) {
this.style = style;
}
public String getStyle() {
return style;
}
}

View File

@ -1,23 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameBranchVersionAction
* @Date2025/03/25 17:25
* @FilenameBranchVersionAction
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum BranchVersionAction {
ACTIVE("活跃分支(可以被代码推送直接更新)"),
INACTIVE("不活跃分支(已被发布或已被删除)"),
CONFLICT("有冲突分支(落后于主干无法直接合入)");
private final String statusName;
}

View File

@ -1,42 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameBuildFormPropertyType
* @Date2025/03/25 17:01
* @FilenameBuildFormPropertyType
* @descriptionTodo
*/
@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;
}
}

View File

@ -1,19 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameBuildPropertyType
* @Date2025/03/25 17:01
* @FilenameBuildPropertyType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum BuildPropertyType {
BUILD;
}

View File

@ -1,35 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import cd.casic.ci.common.pipeline.pojo.time.BuildRecordTimeLine;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameBuildRecordTimeStamp
* @Date2025/03/25 17:02
* @FilenameBuildRecordTimeStamp
* @descriptionTodo
*/
@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<BuildRecordTimeLine.Moment> timeline) {
if (startTime != null && endTime != null) {
timeline.add(new BuildRecordTimeLine.Moment(startTime, endTime));
}
}
}

View File

@ -1,26 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameBuildReviewType
* @Date2025/03/26 10:15
* @FilenameBuildReviewType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum BuildReviewType {
TASK_REVIEW,
STAGE_REVIEW,
QUALITY_TASK_REVIEW_PASS,
QUALITY_TASK_REVIEW_ABORT,
QUALITY_CHECK_IN,
QUALITY_CHECK_OUT,
TRIGGER_REVIEW;
}

View File

@ -1,23 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameBuildScriptType
* @Date2025/03/25 17:02
* @FilenameBuildScriptType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum BuildScriptType {
PYTHON2,
PYTHON3,
SHELL,
BAT,
POWER_SHELL;
}

View File

@ -1,110 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameBuildStatus
* @Date2025/03/25 17:02
* @FilenameBuildStatus
* @descriptionTodo
*/
@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 static BuildStatus parse(String statusName) {
try {
return statusName == null ? UNKNOWN : BuildStatus.valueOf(statusName);
} catch (Exception ignored) {
return UNKNOWN;
}
}
}

View File

@ -1,21 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameBuildTaskStatus
* @Date2025/03/25 17:03
* @FilenameBuildTaskStatus
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum BuildTaskStatus {
WAIT,
END,
DO;
}

View File

@ -1,21 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameBusTypeEnum
* @Date2025/03/26 10:16
* @FilenameBusTypeEnum
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum BusTypeEnum {
PIPELINE,
TEMPLATE;
}

View File

@ -1,33 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
/**
* @author by mianbin
* @Classname CallBackEvent
* @Description TODO
* @Date 2025/4/2 9:48
*/ // 定义回调事件的枚举类
public enum CallBackEvent {
DELETE_PIPELINE, /*流水线删除*/
CREATE_PIPELINE, /*流水线创建*/
UPDATE_PIPELINE, /*流水线更新包括model和setting。*/
STREAM_ENABLED, /*stream ci 开启/关闭*/
RESTORE_PIPELINE, /*流水线恢复*/
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, /*插件前置暂停*/
PROJECT_CREATE, /*项目创建*/
PROJECT_UPDATE, /*项目更新*/
PROJECT_ENABLE, /*项目启用*/
PROJECT_DISABLE /*项目禁用*/
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameCertType
* @Date2025/03/25 17:03
* @FilenameCertType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum CertType {
PERSONAL("PERSONAL"),
ENTERPRISE("ENTERPRISE");
private final String value;
}

View File

@ -1,42 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameChannelCode
* @Date2025/03/25 17:03
* @FilenameChannelCode
* @descriptionTodo
*/
@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;
}
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameCharsetType
* @Date2025/03/25 17:03
* @FilenameCharsetType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum CharsetType {
DEFAULT,
GB2312,
UTF_8,
GBK;
}

View File

@ -1,31 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameCheckoutRepositoryType
* @Date2025/03/26 10:16
* @FilenameCheckoutRepositoryType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum CheckoutRepositoryType {
ID,
NAME,
URL,
SELF;
public static CheckoutRepositoryType parseType(String type) {
if (type == null || type.isBlank()) return ID;
return valueOf(type);
}
public static boolean skipTimerTriggerChange(String type) {
return "URL".equals(type) || "SELF".equals(type);
}
}

View File

@ -1,32 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameCodePullStrategy
* @Date2025/03/25 17:03
* @FilenameCodePullStrategy
* @descriptionTodo
*/
@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");
}
}

View File

@ -1,25 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameCodeTargetAction
* @Date2025/03/25 17:04
* @FilenameCodeTargetAction
* @descriptionTodo
*/
@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;
}

View File

@ -1,38 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import cd.casic.framework.commons.core.IntArrayValuable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* @Classname CommonStatusEnum
* @Description
* @Date 2025/3/18 11:26
* @author mianbin
*/
@Getter
@AllArgsConstructor
public enum CommonStatusEnum implements IntArrayValuable {
ENABLE(0, "开启"),
DISABLE(1, "关闭");
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CommonStatusEnum::getStatus).toArray();
/**
* 状态值
*/
private final Integer status;
/**
* 状态名
*/
private final String name;
@Override
public int[] array() {
return ARRAYS;
}
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameContainerMutexStatus
* @Date2025/03/25 17:04
* @FilenameContainerMutexStatus
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum ContainerMutexStatus {
READY,
WAITING,
CANCELED,
FIRST_LOG;
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameCrudEnum
* @Date2025/03/26 10:16
* @FilenameCrudEnum
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum CrudEnum {
CREATE, // 增加
DELETE, // 删除
UPDATE, // 更新
READ; // 查询
}

View File

@ -1,46 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import cd.casic.framework.commons.core.IntArrayValuable;
import cn.hutool.core.util.ArrayUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* @Classname DateIntervalEnum
* @Description 时间间隔的枚举
* @Date 2025/3/18 11:26
* @author mianbin
*/
@Getter
@AllArgsConstructor
public enum DateIntervalEnum implements IntArrayValuable {
DAY(1, ""),
WEEK(2, ""),
MONTH(3, ""),
QUARTER(4, "季度"),
YEAR(5, "")
;
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(DateIntervalEnum::getInterval).toArray();
/**
* 类型
*/
private final Integer interval;
/**
* 名称
*/
private final String name;
@Override
public int[] array() {
return ARRAYS;
}
public static DateIntervalEnum valueOf(Integer interval) {
return ArrayUtil.firstMatch(item -> item.getInterval().equals(interval), DateIntervalEnum.values());
}
}

View File

@ -1,28 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameDependOnType
* @Date2025/03/25 17:04
* @FilenameDependOnType
* @descriptionTodo
*/
@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;
}
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameDeployStatus
* @Date2025/03/25 17:12
* @FilenameDeployStatus
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum DeployStatus {
SUCCEED,
FAILED,
RUNNING,
TIMEOUT;
}

View File

@ -1,23 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameDockerVersion
* @Date2025/03/25 17:12
* @FilenameDockerVersion
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum DockerVersion {
TLINUX1_2("tlinux1.2"),
TLINUX2_2("tlinux2.2"),
CUSTOMIZE("customize");
private final String value;
}

View File

@ -1,39 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.extern.slf4j.Slf4j;
import java.util.ServiceLoader;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameEnumLoader
* @Date2025/03/26 10:16
* @FilenameEnumLoader
* @descriptionTodo
*/
@Slf4j
public class EnumLoader {
private static final AtomicBoolean MODIFY = new AtomicBoolean(false);
public static void enumModified() {
if (!MODIFY.compareAndSet(false, true)) {
return;
}
Class<EnumModifier> clazz = EnumModifier.class;
ServiceLoader<EnumModifier> fetcheries = ServiceLoader.load(clazz);
if (!fetcheries.iterator().hasNext()) {
fetcheries = ServiceLoader.load(clazz, ServiceLoader.class.getClassLoader());
}
fetcheries.forEach(modifier -> {
log.info("[ENUM MODIFIER]: " + modifier);
try {
modifier.modified();
} catch (Exception e) {
log.error("[ENUM MODIFIER]| load fail| " + e.getMessage(), e);
}
});
}
}

View File

@ -1,14 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameEnumModifier
* @Date2025/03/26 10:17
* @FilenameEnumModifier
* @descriptionTodo
*/
public interface EnumModifier {
void modified();
}

View File

@ -1,28 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameEnvControlTaskType
* @Date2025/03/25 17:12
* @FilenameEnvControlTaskType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum EnvControlTaskType {
VM,
NORMAL;
public static EnvControlTaskType parse(String type) {
try {
return EnvControlTaskType.valueOf(type);
} catch (Exception ignore) {
return null;
}
}
}

View File

@ -1,36 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
/**
* @author by mianbin
* @Classname ErrorCode
* @Description TODO
* @Date 2025/4/1 15:00
*/
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; // worker插件加载出错
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; // 用户Job排队超时自行限制
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; // 因用户配置了FastKill导致的终止执行
public static final int USER_SCRIPT_TASK_FAIL = 2199011; // bash脚本发生用户错误
private ErrorCode() {
// 私有构造函数防止实例化
}
}

View File

@ -1,32 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameFrontendTypeEnum
* @Date2025/03/26 10:26
* @FilenameFrontendTypeEnum
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum FrontendTypeEnum {
HISTORY("1.0"), // 历史老插件UI
NORMAL("1.1"), // 官方提供典型的插件UI配置方式
SPECIAL("1.2"); // 定制插件UI方式
private final String typeVersion;
public static FrontendTypeEnum getFrontendTypeObj(String typeVersion) {
for (FrontendTypeEnum frontendTypeEnum : values()) {
if (frontendTypeEnum.getTypeVersion().equals(typeVersion)) {
return frontendTypeEnum;
}
}
return null;
}
}

View File

@ -1,21 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameGitPullModeType
* @Date2025/03/25 17:13
* @FilenameGitPullModeType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum GitPullModeType {
BRANCH,
TAG,
COMMIT_ID;
}

View File

@ -1,25 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameJobRunCondition
* @Date2025/03/25 17:13
* @FilenameJobRunCondition
* @descriptionTodo
*/
@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;
}

View File

@ -1,21 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameManualReviewAction
* @Date2025/03/25 17:13
* @FilenameManualReviewAction
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum ManualReviewAction {
PROCESS,
ABORT;
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameOSType
* @Date2025/03/26 10:27
* @FilenameOSType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum OSType {
WINDOWS,
LINUX,
MAC_OS,
OTHER;
}

View File

@ -1,36 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @namePipelineInstanceTypeEnum
* @Date2025/03/25 17:13
* @FilenamePipelineInstanceTypeEnum
* @descriptionTodo
*/
@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();
};
}
}

View File

@ -1,27 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @namePipelineStorageType
* @Date2025/03/25 17:13
* @FilenamePipelineStorageType
* @descriptionTodo
*/
@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;
}
}

View File

@ -1,15 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @namePlatform
* @Date2025/03/25 17:16
* @FilenamePlatform
* @descriptionTodo
*/
public enum Platform {
ANDROID,
IPHONE;
}

View File

@ -1,15 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameProjectPipelineCallbackStatus
* @Date2025/03/25 17:17
* @FilenameProjectPipelineCallbackStatus
* @descriptionTodo
*/
public enum ProjectPipelineCallbackStatus {
SUCCESS,
FAILED
}

View File

@ -1,23 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author by mianbin
* @Classname RepoYamlSyncStatusEnum
* @Description TODO
* @Date 2025/4/1 20:13
*/
@AllArgsConstructor
@Getter
public enum RepoYamlSyncStatusEnum {
// 同步中
SYNC("SYNC"),
// 同步成功
SUCCEED("SUCCEED"),
// 同步失败
FAILED("FAILED");
private final String value;
}

View File

@ -1,68 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import cd.casic.framework.commons.exception.ServerException;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.extern.slf4j.Slf4j;
import java.net.URLEncoder;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameRepositoryConfig
* @Date2025/03/26 10:27
* @FilenameRepositoryConfig
* @descriptionTodo
*/
@Data
@Slf4j
@NoArgsConstructor
@AllArgsConstructor
public class RepositoryConfig {
private String repositoryHashId;
@Schema(title = "新版的git代码库名")
private String repositoryName;
@Schema(title = "新版的git插件的类型")
private RepositoryType repositoryType;
public RepositoryConfig(String repositoryHashId, String repositoryName, TriggerRepositoryType triggerRepositoryType, String selfRepoHashId) {
this.repositoryHashId = triggerRepositoryType == TriggerRepositoryType.SELF ? selfRepoHashId : repositoryHashId;
this.repositoryName = repositoryName;
this.repositoryType = TriggerRepositoryType.toRepositoryType(triggerRepositoryType) != null ? TriggerRepositoryType.toRepositoryType(triggerRepositoryType) : RepositoryType.ID;
}
@JsonIgnore
public String getRepositoryId() {
switch (repositoryType) {
case ID:
if (repositoryHashId == null || repositoryHashId.isBlank()) {
throw new ServerException(-1000, "代码库HashId为空");
}
return repositoryHashId;
case NAME:
if (repositoryName == null || repositoryName.isBlank()) {
throw new ServerException(-1000, "代码库名为空");
}
return repositoryName;
default:
throw new ServerException(-1000, "未知的代码库类型");
}
}
@JsonIgnore
public String getURLEncodeRepositoryId() {
try {
return URLEncoder.encode(getRepositoryId(), "UTF-8");
} catch (Exception e) {
throw new ServerException(-1000, "编码失败: " + e.getMessage());
}
}
@Override
public String toString() {
return "[repositoryHashId=" + repositoryHashId + ", repositoryName=" + repositoryName + ", repositoryType=" + repositoryType + "]";
}
}

View File

@ -1,25 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameRepositoryType
* @Date2025/03/26 10:29
* @FilenameRepositoryType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum RepositoryType {
ID,
NAME;
public static RepositoryType parseType(String type) {
if (type == null || type.isBlank()) return ID;
return RepositoryType.valueOf(type);
}
}

View File

@ -1,24 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameRequestChannelTypeEnum
* @Date2025/03/26 10:30
* @FilenameRequestChannelTypeEnum
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum RequestChannelTypeEnum {
USER,
SERVICE,
BUILD,
OP,
OPEN,
API;
}

View File

@ -1,23 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameSVNVersion
* @Date2025/03/25 17:24
* @FilenameSVNVersion
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum SVNVersion {
V_1_6(10),
V_1_7(29),
V_1_8(31);
private final int version;
}

View File

@ -1,37 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameScmCode
* @Date2025/03/26 10:30
* @FilenameScmCode
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum ScmCode {
GITEA("GITEA", "GITEA"), // 内部Gitea
GITHUB("GITHUB", "GITHUB"), // github
GITLAB("GITLAB", "GITLAB"); // github
private final String scmName;
private final String value;
public ScmType convertScmType() {
switch (this) {
case GITEA:
return ScmType.CODE_GIT;
case GITHUB:
return ScmType.GITHUB;
case GITLAB:
return ScmType.CODE_TGIT;
default:
throw new IllegalArgumentException("Unknown ScmCode: " + this);
}
}
}

View File

@ -1,44 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum ScmType {
CODE_SVN("svn"),
CODE_GIT("git"),
CODE_GITLAB("gitlab"),
GITHUB("github"),
CODE_TGIT("tgit"),
CODE_P4("p4");
private final String alias;
public static Short parse(ScmType type) {
switch (type) {
case CODE_SVN:
return 1;
case CODE_GIT:
return 2;
case CODE_GITLAB:
return 3;
case GITHUB:
return 4;
case CODE_TGIT:
return 5;
case CODE_P4:
return 6;
default:
return 0;
}
}
public static ScmType parse(String alias) {
if (alias == null || alias.isBlank()) return null;
for (ScmType scmType : values()) {
if (scmType.alias.equals(alias)) {
return scmType;
}
}
return null;
}
}

View File

@ -1,15 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameSourceType
* @Date2025/03/25 17:26
* @FilenameSourceType
* @descriptionTodo
*/
public enum SourceType {
PIPELINE,
CUSTOMIZE
}

View File

@ -1,18 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameStageRunCondition
* @Date2025/03/25 17:17
* @FilenameStageRunCondition
* @description运行选项
*/
public enum StageRunCondition {
AFTER_LAST_FINISHED, // 上个阶段执行结束
CUSTOM_VARIABLE_MATCH, // 自定义变量全部满足时运行
CUSTOM_VARIABLE_MATCH_NOT_RUN, // 自定义变量全部满足时不运行
CUSTOM_CONDITION_MATCH // 满足以下自定义条件时运行
;
}

View File

@ -1,102 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import cd.casic.ci.common.pipeline.pojo.element.trigger.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import org.slf4j.LoggerFactory;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameStartType
* @Date2025/03/25 17:23
* @FilenameStartType
* @descriptionTodo
*/
@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 : MessageFormat.format("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<IdValue> getStartTypeMap(String language) {
List<IdValue> 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;
};
}
@Data
@AllArgsConstructor
static class IdValue {
private String id;
private String value;
}
}

View File

@ -1,27 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
/**
* @Classname SubjectScopeType
* @Description 最大授权范围类型这里先这样后面要扩展
* @Date 2025/3/18 11:26
* @author mianbin
*/
public enum SubjectScopeType {
//中心
ORGANIZATION("organization"),
// 部门事业部产线
DEPARTMENT("depart"),
// 用户
USER("user");
private final String value;
SubjectScopeType(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameSvnDepth
* @Date2025/03/25 17:24
* @FilenameSvnDepth
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum SvnDepth {
empty,
files,
immediates,
infinity;
}

View File

@ -1,62 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
/**
* @author mianbin
* @Classname SystemModuleEnum
* @Description 最大授权范围类型这里先这样后面要扩展
* @Date 2025/3/18 11:26
*/
public enum SystemModuleEnum {
COMMON("00"), // 公共模块
PROCESS("01"), // 流水线
ARTIFACTORY("02"), // 版本仓库
DISPATCH("03"), // 公共模块
DOCKERHOST("04"), // DOCKER机器
ENVIRONMENT("05"), // 环境
EXPERIENCE("06"), // 版本体验
IMAGE("07"), // 镜像
LOG("08"), // 日志
MEASURE("09"), // 度量
MONITORING("10"), // 监控
NOTIFY("11"), // 通知
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"), // 预构建
DISPATCH_KUBERNETES("26"), // k8s分发服务
BUILDLESS("27"), // buildless服务
LAMBDA("28"), // lambda服务
STREAM("29"), // stream服务
WORKER("30"), // 度量服务
DISPATCH_DOCKER("31"), // docker分发服务
REMOTEDEV("32"); // 远程开发服务
private final String code;
SystemModuleEnum(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public static String getSystemModule(String code) {
for (SystemModuleEnum value : values()) {
if (value.getCode().equals(code)) {
return value.name();
}
}
return COMMON.name();
}
}

View File

@ -1,26 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameTaskStatusEnum
* @Date2025/03/26 10:50
* @FilenameTaskStatusEnum
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum TaskStatusEnum {
INIT,
HANDING,
FAIL,
SUCCESS,
PENDING_ROLLBACK,
ROLLBACKING,
ROLLBACK_SUCCESS,
ROLLBACK_FAIL;
}

View File

@ -1,22 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.pipeline.enums
* @Projectops-pro
* @nameTclsType
* @Date2025/03/25 17:24
* @FilenameTclsType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum TclsType {
TCLS,
MTCLS,
MTCLS2;
}

View File

@ -1,34 +0,0 @@
package cd.casic.ci.common.pipeline.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Authormianbin
* @Packagecd.casic.ci.common.api.enums
* @Projectops-pro
* @nameTriggerRepositoryType
* @Date2025/03/26 10:51
* @FilenameTriggerRepositoryType
* @descriptionTodo
*/
@Getter
@AllArgsConstructor
public enum TriggerRepositoryType {
ID,
NAME,
SELF,
NONE;
public static RepositoryType toRepositoryType(TriggerRepositoryType type) {
switch (type) {
case ID:
case SELF:
return RepositoryType.ID;
case NAME:
return RepositoryType.NAME;
default:
return null;
}
}
}

Some files were not shown because too many files have changed in this diff Show More