CI/CD 修正gitee流水线语法
CI - Build and Quality Check / build (push) Has been cancelled
CI - Build and Quality Check / security-check (push) Has been cancelled
CI - Build and Quality Check / release (push) Has been cancelled

This commit is contained in:
maxf committed 2026-04-24 15:31:34 +08:00
1 parent 52019c1ce4
commit 0b29e80813
8 files changed
+872 -219

No files matched your search

-219
View File
@@ -1,219 +0,0 @@
# Gitee Go CI/CD 配置
# Gitee CI 语法基于 GitLab CI,文件名必须为 .gitee-ci.yml
# 放置在项目根目录,推送后自动触发流水线
#
# 使用方式:
# 1. 开启 Gitee 仓库的 CI/CD 功能(管理 > CI/CD)
# 2. 确保 .gitee-ci.yml 在项目根目录
# 3. 推送代码后自动触发
image: maven:3.9-eclipse-temurin-21
stages:
- build
- test
- quality
- security
- package
- release
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
cache:
key: "${CI_COMMIT_REF_SLUG}"
paths:
- .m2/repository/
# ============================================
# 构建阶段 — 根据分支自动选择 JDK
# ============================================
build:java21:
stage: build
image: maven:3.9-eclipse-temurin-21
script:
- ./mvnw -B clean compile
artifacts:
paths:
- target/classes/
expire_in: 1 hour
only:
- master
- jre21
build:java17:
stage: build
image: maven:3.9-eclipse-temurin-17
script:
- ./mvnw -B clean compile
artifacts:
paths:
- target/classes/
expire_in: 1 hour
only:
- master
- jre17
build:java11:
stage: build
image: maven:3.9-eclipse-temurin-11
script:
- ./mvnw -B clean compile
artifacts:
paths:
- target/classes/
expire_in: 1 hour
only:
- master
- jre11
build:java8:
stage: build
image: maven:3.9-eclipse-temurin-8
script:
- ./mvnw -B clean compile
artifacts:
paths:
- target/classes/
expire_in: 1 hour
only:
- master
- jre8
# ============================================
# 测试阶段 — 各 JDK 独立跑测试
# ============================================
test:java21:
stage: test
image: maven:3.9-eclipse-temurin-21
script:
- ./mvnw -B test
artifacts:
reports:
junit: target/surefire-reports/*.xml
paths:
- target/surefire-reports/
- target/site/jacoco/
expire_in: 7 days
only:
- master
- jre21
test:java17:
stage: test
image: maven:3.9-eclipse-temurin-17
script:
- ./mvnw -B test
artifacts:
reports:
junit: target/surefire-reports/*.xml
paths:
- target/surefire-reports/
expire_in: 7 days
only:
- master
- jre17
test:java11:
stage: test
image: maven:3.9-eclipse-temurin-11
script:
- ./mvnw -B test
artifacts:
reports:
junit: target/surefire-reports/*.xml
paths:
- target/surefire-reports/
expire_in: 7 days
only:
- master
- jre11
test:java8:
stage: test
image: maven:3.9-eclipse-temurin-8
script:
- ./mvnw -B test
artifacts:
reports:
junit: target/surefire-reports/*.xml
paths:
- target/surefire-reports/
expire_in: 7 days
only:
- master
- jre8
# ============================================
# 代码质量检查 (仅 Java 21)
# ============================================
checkstyle:
stage: quality
image: maven:3.9-eclipse-temurin-21
script:
- ./mvnw -B checkstyle:check
artifacts:
paths:
- target/checkstyle-result.xml
expire_in: 7 days
allow_failure: true
pmd:
stage: quality
image: maven:3.9-eclipse-temurin-21
script:
- ./mvnw -B pmd:pmd
artifacts:
paths:
- target/pmd-report.xml
expire_in: 7 days
allow_failure: true
# ============================================
# 安全扫描 (仅 master/jre21)
# ============================================
owasp-check:
stage: security
image: maven:3.9-eclipse-temurin-21
variables:
MAVEN_OPTS: "-Xmx2048m -Dmaven.repo.local=.m2/repository"
script:
- ./mvnw -B org.owasp:dependency-check-maven:check
artifacts:
paths:
- target/dependency-check-report.html
expire_in: 14 days
allow_failure: true
only:
- master
- jre21
# ============================================
# 打包
# ============================================
package:
stage: package
image: maven:3.9-eclipse-temurin-21
script:
- ./mvnw -B package -DskipTests
artifacts:
paths:
- target/*.jar
expire_in: 30 days
# ============================================
# 发布到 Maven Central (仅 tag, 手动触发)
# ============================================
release:maven-central:
stage: release
image: maven:3.9-eclipse-temurin-21
script:
- ./mvnw -B deploy -Dgpg.skip=false
only:
- tags
when: manual
# 需要在 Gitee 仓库设置中配置 CI/CD 变量:
# MAVEN_CENTRAL_USERNAME — OSSRH 用户名
# MAVEN_CENTRAL_PASSWORD — OSSRH 密码
# GPG_PRIVATE_KEY — GPG 私钥 (ASCII armored)
# GPG_PASSPHRASE — GPG 密钥密码
+243
View File
@@ -0,0 +1,243 @@
# Gitee Go 流水线配置说明
## 📁 文件结构
```
.workflow/
├── MasterPipeline.yml # master 分支流水线 (JDK 21)
├── BranchPipeline.yml # 当前分支流水线模板
├── BranchPipeline-jre21.yml # jre21 分支流水线 (JDK 21) - 示例
├── BranchPipeline-jre17.yml # jre21 分支流水线 (JDK 17) - 示例
├── BranchPipeline-jre11.yml # jre21 分支流水线 (JDK 11) - 示例
├── BranchPipeline-jre8.yml # jre21 分支流水线 (JDK 8) - 示例
└── PRPipeline.yml # Pull Request 检查流水线
```
## 🎯 配置文件说明
### 1. MasterPipeline.yml
- **触发条件**: master 分支 push
- **JDK 版本**: 21
- **Maven 版本**: 3.9.11
- **包含阶段**:
- ✅ 编译构建
- ✅ 单元测试
- ✅ 代码质量检查 (Checkstyle + PMD)
- ✅ 安全扫描 (OWASP)
- ✅ 打包
### 2. BranchPipeline.yml
- **触发条件**: jre21, jre17, jre11, jre8 分支 push
- **JDK 版本**: 21
- **用途**: 当前分支构建模板
- **包含阶段**:
- ✅ 编译构建
- ✅ 单元测试
- ✅ 打包
### 3. BranchPipeline-jre21.yml
- **触发条件**: jre21 分支 push
- **JDK 版本**: 21
- **用途**: 为特定 JDK 版本分支创建的独立配置
- **说明**: 如需其他 JDK 版本,可复制此文件并修改 `jdkVersion`
### 4. PRPipeline.yml
- **触发条件**: 针对 master 的 Pull Request
- **JDK 版本**: 21
- **用途**: PR 合并前的代码质量检查
- **包含阶段**:
- ✅ 编译检查
- ✅ 单元测试
- ✅ 代码质量检查
## 🔧 多 JDK 版本支持方案
由于 Gitee Go 不支持在单个配置文件中动态切换 JDK 版本,我们采用以下方案:
### 使用独立配置文件
为每个 JDK 版本创建独立的流水线文件:
```
.workflow/
├── BranchPipeline-jre21.yml # jdkVersion: 21
├── BranchPipeline-jre17.yml # jdkVersion: 17
├── BranchPipeline-jre11.yml # jdkVersion: 11
└── BranchPipeline-jre8.yml # jdkVersion: 8
```
**创建步骤**:
1. 复制 `BranchPipeline-jre21.yml`
2. 重命名为对应版本(如 `BranchPipeline-jre17.yml`)
3. 修改以下内容:
```yaml
name: branch-pipeline-jre17 # 唯一标识
displayName: JRE17分支构建流水线(JDK 17) # 显示名称
triggers:
push:
branches:
- matchType: PRECISE
branch: jre17 # 触发分支
stages:
- stage:
steps:
- step: build@maven
jdkVersion: 17 # JDK 版本
```
## 🚀 使用方法
### 1. 启用 Gitee Go
1. 进入 Gitee 项目页面
2. 点击左侧菜单「DevOps」→「Gitee Go」
3. 首次使用需要开通服务
4. 系统会自动检测 `.workflow/` 目录下的配置文件
### 2. 推送代码触发构建
```bash
# 推送到 master 分支 (触发 MasterPipeline.yml)
git push origin master
# 推送到 jre21 分支 (触发 BranchPipeline-jre21.yml)
git push origin jre21
# 创建 PR (触发 PRPipeline.yml)
git checkout -b feature/new-feature
git push origin feature/new-feature
# 然后在 Gitee 上创建 Pull Request
```
### 3. 查看构建结果
- 进入「DevOps」→「Gitee Go」→「流水线」
- 点击具体流水线查看构建历史
- 查看构建日志和产物
## ⚙️ 配置详解
### 基本结构
```yaml
version: '1.0' # 配置文件版本
name: pipeline-name # 流水线唯一标识
displayName: 显示名称 # 流水线显示名称
triggers: # 触发器配置
push: # push 事件触发
branches:
- matchType: PRECISE # 精确匹配
branch: master # 分支名
stages: # 阶段定义
- stage:
name: stage-name # 阶段唯一标识
displayName: 阶段名称 # 阶段显示名称
strategy: naturally # 执行策略
trigger: auto # 触发方式 (auto/manual)
dependsOn: previous-stage # 依赖的阶段 (可选)
steps: # 步骤定义
- step: build@maven # 使用 Maven 构建插件
name: step-name # 步骤唯一标识
displayName: 步骤名称 # 步骤显示名称
jdkVersion: 21 # JDK 版本
mavenVersion: 3.9.11 # Maven 版本
commands: # 执行的命令
- 'mvn -B clean package'
artifacts: # 构建产物 (可选)
- name: ARTIFACT_NAME
path:
- './target/*.jar'
report: # 测试报告 (可选)
path:
- './target/surefire-reports/'
```
### 常用 Maven 命令
```yaml
# 编译
commands:
- 'mvn -B clean compile'
# 测试
commands:
- 'mvn -B test'
# 打包 (跳过测试)
commands:
- 'mvn -B package -DskipTests'
# Checkstyle 检查
commands:
- 'mvn -B checkstyle:check || true'
# PMD 分析
commands:
- 'mvn -B pmd:pmd || true'
# OWASP 安全扫描
commands:
- 'mvn -B org.owasp:dependency-check-maven:check || true'
```
## 🔍 常见问题
### Q1: 如何为不同分支使用不同 JDK 版本?
**答**: 为每个 JDK 版本创建独立的配置文件,见上文「方案一」。
### Q2: 流水线未触发怎么办?
**答**:
1. 确认 `.workflow/` 目录存在且包含正确的 YAML 文件
2. 检查分支名是否与 `triggers` 中配置的一致
3. 确认 Gitee Go 服务已启用
4. 查看 Gitee Go 日志排查错误
### Q3: 如何自定义 Maven 命令?
**答**: 修改 `commands` 字段:
```yaml
commands:
- 'mvn -B clean install -Dmaven.test.skip=true'
- 'echo "Build completed"'
```
### Q4: 如何上传构建产物?
**答**: 配置 `artifacts` 字段:
```yaml
artifacts:
- name: BUILD_OUTPUT
path:
- './target/*.jar'
- './target/classes/'
```
### Q5: 支持哪些 Maven 版本?
**答**: 见上文「支持的 Maven 版本」章节。推荐使用 3.9.11。
## 📚 相关文档
- [Gitee Go 官方文档](https://help.gitee.com/enterprise/pipeline)
- [流水线配置格式说明](https://gitee.com/help/articles/4292)
- [Maven 使用示例](https://gitee.com/gitee-go/spring-boot-maven-deploy-case)
## 📅 更新记录
| 日期 | 版本 | 说明 |
|------|------|------|
| 2026-04-24 | 1.0.0 | 初始版本,支持多 JDK 分支构建 |
---
**维护者**: yexuejc-base 团队
**最后更新**: 2026-04-24
+96
View File
@@ -0,0 +1,96 @@
version: '1.0'
name: branch-pipeline-jre11
displayName: JRE11分支构建流水线
triggers:
trigger: auto
push:
branches:
precise:
- jre11
stages:
- name: stage-f2d6ad5a
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: build@maven
name: build_maven
displayName: Maven 构建
jdkVersion: '11'
mavenVersion: 3.9.11
commands:
- '# 功能:打包'
- '# 参数说明:'
- '# -Dmaven.test.skip=true:跳过单元测试'
- '# -U:每次构建检查依赖更新,可避免缓存中快照版本依赖不更新问题,但会牺牲部分性能'
- '# -e -X :打印调试信息,定位疑难构建问题时建议使用此参数构建'
- '# -B:以batch模式运行,可避免日志打印时出现ArrayIndexOutOfBoundsException异常'
- '# 使用场景:打包项目且不需要执行单元测试时使用'
- mvn clean package -Dmaven.test.skip=true -U -e -X -B
- ''
- '# 功能:自定义settings配置'
- '# 使用场景:如需手工指定settings.xml,可使用如下方式'
- '# 注意事项:如无需自定义settings配置且需要私有依赖仓库,可在该任务配置《私有仓库》处添加私有依赖'
- '# mvn -U clean package -s ./settings.xml'
- ''
artifacts:
- name: BUILD_ARTIFACT
path:
- ./target
settings: []
caches:
- ~/.m2
notify: []
strategy:
retry: '0'
- name: stage-82a978a0
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: ut@maven
name: unit_test_maven
displayName: Maven 单元测试
jdkVersion: '11'
mavenVersion: 3.9.11
commands:
- '# Maven单元测试默认命令'
- mvn -B test -Dmaven.test.failure.ignore=true
- mvn surefire-report:report-only
- mvn site -DgenerateReports=false
report:
path: ./target/site
index: surefire-report.html
checkpoints: []
settings: []
caches:
- ~/.m2
notify: []
strategy:
retry: '0'
- name: stage-1ae35ada
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: sc@opensca
name: open_sca
displayName: OpenSCA 开源组件检测
detectPath: ./
notify: []
strategy:
retry: '0'
- name: stage-b4da606f
displayName: 未命名
strategy: naturally
trigger: auto
executor: []
steps:
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
dependArtifact: BUILD_ARTIFACT
artifactName: output
notify: []
strategy:
retry: '0'
+96
View File
@@ -0,0 +1,96 @@
version: '1.0'
name: branch-pipeline-jre17
displayName: JRE17分支构建流水线
triggers:
trigger: auto
push:
branches:
precise:
- jre17
stages:
- name: stage-f2d6ad5a
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: build@maven
name: build_maven
displayName: Maven 构建
jdkVersion: '17'
mavenVersion: 3.9.11
commands:
- '# 功能:打包'
- '# 参数说明:'
- '# -Dmaven.test.skip=true:跳过单元测试'
- '# -U:每次构建检查依赖更新,可避免缓存中快照版本依赖不更新问题,但会牺牲部分性能'
- '# -e -X :打印调试信息,定位疑难构建问题时建议使用此参数构建'
- '# -B:以batch模式运行,可避免日志打印时出现ArrayIndexOutOfBoundsException异常'
- '# 使用场景:打包项目且不需要执行单元测试时使用'
- mvn clean package -Dmaven.test.skip=true -U -e -X -B
- ''
- '# 功能:自定义settings配置'
- '# 使用场景:如需手工指定settings.xml,可使用如下方式'
- '# 注意事项:如无需自定义settings配置且需要私有依赖仓库,可在该任务配置《私有仓库》处添加私有依赖'
- '# mvn -U clean package -s ./settings.xml'
- ''
artifacts:
- name: BUILD_ARTIFACT
path:
- ./target
settings: []
caches:
- ~/.m2
notify: []
strategy:
retry: '0'
- name: stage-82a978a0
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: ut@maven
name: unit_test_maven
displayName: Maven 单元测试
jdkVersion: '17'
mavenVersion: 3.9.11
commands:
- '# Maven单元测试默认命令'
- mvn -B test -Dmaven.test.failure.ignore=true
- mvn surefire-report:report-only
- mvn site -DgenerateReports=false
report:
path: ./target/site
index: surefire-report.html
checkpoints: []
settings: []
caches:
- ~/.m2
notify: []
strategy:
retry: '0'
- name: stage-1ae35ada
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: sc@opensca
name: open_sca
displayName: OpenSCA 开源组件检测
detectPath: ./
notify: []
strategy:
retry: '0'
- name: stage-b4da606f
displayName: 未命名
strategy: naturally
trigger: auto
executor: []
steps:
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
dependArtifact: BUILD_ARTIFACT
artifactName: output
notify: []
strategy:
retry: '0'
+96
View File
@@ -0,0 +1,96 @@
version: '1.0'
name: branch-pipeline-jre21
displayName: JRE21分支构建流水线
triggers:
trigger: auto
push:
branches:
precise:
- jre21
stages:
- name: stage-f2d6ad5a
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: build@maven
name: build_maven
displayName: Maven 构建
jdkVersion: '21'
mavenVersion: 3.9.11
commands:
- '# 功能:打包'
- '# 参数说明:'
- '# -Dmaven.test.skip=true:跳过单元测试'
- '# -U:每次构建检查依赖更新,可避免缓存中快照版本依赖不更新问题,但会牺牲部分性能'
- '# -e -X :打印调试信息,定位疑难构建问题时建议使用此参数构建'
- '# -B:以batch模式运行,可避免日志打印时出现ArrayIndexOutOfBoundsException异常'
- '# 使用场景:打包项目且不需要执行单元测试时使用'
- mvn clean package -Dmaven.test.skip=true -U -e -X -B
- ''
- '# 功能:自定义settings配置'
- '# 使用场景:如需手工指定settings.xml,可使用如下方式'
- '# 注意事项:如无需自定义settings配置且需要私有依赖仓库,可在该任务配置《私有仓库》处添加私有依赖'
- '# mvn -U clean package -s ./settings.xml'
- ''
artifacts:
- name: BUILD_ARTIFACT
path:
- ./target
settings: []
caches:
- ~/.m2
notify: []
strategy:
retry: '0'
- name: stage-82a978a0
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: ut@maven
name: unit_test_maven
displayName: Maven 单元测试
jdkVersion: '21'
mavenVersion: 3.9.11
commands:
- '# Maven单元测试默认命令'
- mvn -B test -Dmaven.test.failure.ignore=true
- mvn surefire-report:report-only
- mvn site -DgenerateReports=false
report:
path: ./target/site
index: surefire-report.html
checkpoints: []
settings: []
caches:
- ~/.m2
notify: []
strategy:
retry: '0'
- name: stage-1ae35ada
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: sc@opensca
name: open_sca
displayName: OpenSCA 开源组件检测
detectPath: ./
notify: []
strategy:
retry: '0'
- name: stage-b4da606f
displayName: 未命名
strategy: naturally
trigger: auto
executor: []
steps:
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
dependArtifact: BUILD_ARTIFACT
artifactName: output
notify: []
strategy:
retry: '0'
+96
View File
@@ -0,0 +1,96 @@
version: '1.0'
name: branch-pipeline-jre8
displayName: JRE8分支构建流水线
triggers:
trigger: auto
push:
branches:
precise:
- jre8
stages:
- name: stage-f2d6ad5a
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: build@maven
name: build_maven
displayName: Maven 构建
jdkVersion: '8'
mavenVersion: 3.9.11
commands:
- '# 功能:打包'
- '# 参数说明:'
- '# -Dmaven.test.skip=true:跳过单元测试'
- '# -U:每次构建检查依赖更新,可避免缓存中快照版本依赖不更新问题,但会牺牲部分性能'
- '# -e -X :打印调试信息,定位疑难构建问题时建议使用此参数构建'
- '# -B:以batch模式运行,可避免日志打印时出现ArrayIndexOutOfBoundsException异常'
- '# 使用场景:打包项目且不需要执行单元测试时使用'
- mvn clean package -Dmaven.test.skip=true -U -e -X -B
- ''
- '# 功能:自定义settings配置'
- '# 使用场景:如需手工指定settings.xml,可使用如下方式'
- '# 注意事项:如无需自定义settings配置且需要私有依赖仓库,可在该任务配置《私有仓库》处添加私有依赖'
- '# mvn -U clean package -s ./settings.xml'
- ''
artifacts:
- name: BUILD_ARTIFACT
path:
- ./target
settings: []
caches:
- ~/.m2
notify: []
strategy:
retry: '0'
- name: stage-82a978a0
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: ut@maven
name: unit_test_maven
displayName: Maven 单元测试
jdkVersion: '8'
mavenVersion: 3.9.11
commands:
- '# Maven单元测试默认命令'
- mvn -B test -Dmaven.test.failure.ignore=true
- mvn surefire-report:report-only
- mvn site -DgenerateReports=false
report:
path: ./target/site
index: surefire-report.html
checkpoints: []
settings: []
caches:
- ~/.m2
notify: []
strategy:
retry: '0'
- name: stage-1ae35ada
displayName: ''
strategy: naturally
trigger: auto
steps:
- step: sc@opensca
name: open_sca
displayName: OpenSCA 开源组件检测
detectPath: ./
notify: []
strategy:
retry: '0'
- name: stage-b4da606f
displayName: 未命名
strategy: naturally
trigger: auto
executor: []
steps:
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
dependArtifact: BUILD_ARTIFACT
artifactName: output
notify: []
strategy:
retry: '0'
+157
View File
@@ -0,0 +1,157 @@
# ============================================================
# Gitee Go 主分支流水线配置
# 文件位置: .workflow/MasterPipeline.yml
# 触发条件: master 分支 push 事件
# JDK 版本: Java 21 (Eclipse Temurin)
# Maven 版本: 3.9.x
# ============================================================
version: '1.0'
name: master-pipeline
displayName: Master分支构建流水线
# ============================================
# 触发器配置
# ============================================
triggers:
push:
branches:
- matchType: PRECISE
branch: master
# ============================================
# 流水线阶段定义
# ============================================
stages:
# ------------------------------------------
# 阶段1: 编译构建
# ------------------------------------------
- stage:
name: compile-stage
displayName: 编译构建
strategy: naturally
trigger: auto
steps:
- step: build@maven
name: maven_compile
displayName: Maven 编译
# JDK 版本: 支持 8, 11, 17, 21
jdkVersion: 21
# Maven 版本: 支持 3.2.5, 3.3.9, 3.5.2, 3.5.3, 3.5.4, 3.6.1, 3.6.3, 3.9.x
mavenVersion: 3.9.11
# 自定义构建命令
commands:
- 'mvn -B clean compile -Dmaven.test.skip=true'
# 构建产物配置
artifacts:
- name: COMPILE_ARTIFACT
path:
- './target/classes/'
# ------------------------------------------
# 阶段2: 单元测试
# ------------------------------------------
- stage:
name: test-stage
displayName: 单元测试
strategy: naturally
trigger: auto
dependsOn: compile-stage
steps:
- step: build@maven
name: maven_test
displayName: Maven 测试
jdkVersion: 21
mavenVersion: 3.9.11
commands:
- 'mvn -B test'
# 测试报告
report:
path:
- './target/surefire-reports/'
# 测试产物
artifacts:
- name: TEST_ARTIFACT
path:
- './target/surefire-reports/'
- './target/site/jacoco/'
# ------------------------------------------
# 阶段3: 代码质量检查
# ------------------------------------------
- stage:
name: quality-stage
displayName: 代码质量检查
strategy: naturally
trigger: auto
dependsOn: test-stage
steps:
# Checkstyle 代码风格检查
- step: build@maven
name: checkstyle_check
displayName: Checkstyle 检查
jdkVersion: 21
mavenVersion: 3.9.11
commands:
- 'mvn -B checkstyle:check || true'
artifacts:
- name: CHECKSTYLE_ARTIFACT
path:
- './target/checkstyle-result.xml'
# PMD 代码静态分析
- step: build@maven
name: pmd_check
displayName: PMD 静态分析
jdkVersion: 21
mavenVersion: 3.9.11
commands:
- 'mvn -B pmd:pmd || true'
artifacts:
- name: PMD_ARTIFACT
path:
- './target/pmd-report.xml'
# ------------------------------------------
# 阶段4: 安全扫描
# ------------------------------------------
- stage:
name: security-stage
displayName: 安全漏洞扫描
strategy: naturally
trigger: auto
dependsOn: quality-stage
steps:
- step: build@maven
name: owasp_scan
displayName: OWASP 依赖检查
jdkVersion: 21
mavenVersion: 3.9.11
commands:
- 'mvn -B org.owasp:dependency-check-maven:check -DmaxMemory=2048 || true'
artifacts:
- name: SECURITY_ARTIFACT
path:
- './target/dependency-check-report.html'
# ------------------------------------------
# 阶段5: 打包
# ------------------------------------------
- stage:
name: package-stage
displayName: 打包构建
strategy: naturally
trigger: auto
dependsOn: security-stage
steps:
- step: build@maven
name: maven_package
displayName: Maven 打包
jdkVersion: 21
mavenVersion: 3.9.11
commands:
- 'mvn -B package -DskipTests'
artifacts:
- name: PACKAGE_ARTIFACT
path:
- './target/*.jar'
+88
View File
@@ -0,0 +1,88 @@
# ============================================================
# Gitee Go PR 流水线配置
# 文件位置: .workflow/PRPipeline.yml
# 触发条件: Pull Request 事件
# 功能: PR 合并前的代码检查和测试
# JDK 版本: Java 21
# ============================================================
version: '1.0'
name: pr-pipeline
displayName: PR检查流水线
# ============================================
# 触发器配置 - PR 事件
# ============================================
triggers:
pr:
branches:
- matchType: PRECISE
branch: master
# ============================================
# 流水线阶段定义
# ============================================
stages:
# ------------------------------------------
# 阶段1: 编译检查
# ------------------------------------------
- stage:
name: compile-stage
displayName: 编译检查
strategy: naturally
trigger: auto
steps:
- step: build@maven
name: maven_compile
displayName: Maven 编译
jdkVersion: 21
mavenVersion: 3.9.11
commands:
- 'mvn -B clean compile -Dmaven.test.skip=true'
# ------------------------------------------
# 阶段2: 单元测试
# ------------------------------------------
- stage:
name: test-stage
displayName: 单元测试
strategy: naturally
trigger: auto
dependsOn: compile-stage
steps:
- step: build@maven
name: maven_test
displayName: Maven 测试
jdkVersion: 21
mavenVersion: 3.9.11
commands:
- 'mvn -B test'
report:
path:
- './target/surefire-reports/'
# ------------------------------------------
# 阶段3: 代码质量检查
# ------------------------------------------
- stage:
name: quality-stage
displayName: 代码质量检查
strategy: naturally
trigger: auto
dependsOn: test-stage
steps:
- step: build@maven
name: checkstyle_check
displayName: Checkstyle 检查
jdkVersion: 21
mavenVersion: 3.9.11
commands:
- 'mvn -B checkstyle:check || true'
- step: build@maven
name: pmd_check
displayName: PMD 静态分析
jdkVersion: 21
mavenVersion: 3.9.11
commands:
- 'mvn -B pmd:pmd || true'