-
Notifications
You must be signed in to change notification settings - Fork 1
171 lines (141 loc) · 5.58 KB
/
Copy pathci.yml
File metadata and controls
171 lines (141 loc) · 5.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
name: CI
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
env:
JAVA_VERSION: '21'
jobs:
build:
# WS-1.1 FIRE 后(commit 38c514a):master 为单构建 Boot 4.0/SDR 4.0/Java 21/Redisson 3.50。
# Boot 4.0 最低 Java 21,故去掉 Java 17 matrix;Boot 4 为唯一构建线(boot4 profile
# 已上移为 pom 默认,见 commit 9ad22bf),构建无需 -Pboot4 flag。
# 历史:`compatibility` job(versions:set-parent 探测 Boot 3.3/3.5 编译)已删除 —
# 双分支策略废弃,boot3 不再维护,继续跑废的兼容矩阵只是噪声 + MojoNotFoundException。
name: Build and Test (Java ${{ env.JAVA_VERSION }})
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: ./.github/actions/setup-jdk-21
- name: Build with Maven Wrapper
run: ./mvnw clean verify -B
env:
MAVEN_OPTS: -Xmx1024m
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v5
with:
name: test-results-java-${{ env.JAVA_VERSION }}
path: target/surefire-reports/
retention-days: 7
- name: Upload JaCoCo Report
if: always()
uses: actions/upload-artifact@v5
with:
name: jacoco-report-java-${{ env.JAVA_VERSION }}
path: target/site/jacoco/
retention-days: 7
docs-link-check:
# 文档一致性护栏:防止 a5ab55b 移除的过度工程特性被对外文档重新宣称,
# 并校验 README 宣称的关键类在 src 存在。(Q2 诚实化 + Q11 可推广护栏)
name: Docs ↔ Source Consistency
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Guard against removed-feature regressions in docs
run: |
set -e
# 1. 黑名单:被移除的过度工程符号不应再出现在对外 README 中
banned="CircuitBreakerCacheWrapper RateLimiterCacheWrapper \
SpelConditionEvaluator CacheEvictedEvent CacheMetricsRecorder \
BloomFilterProvider LockProvider RedissonLockProvider"
for sym in $banned; do
# 精准匹配:仅当代码标识符(反引号包裹 \`sym\`)出现时才视为"重新宣称已移除
# 特性"的回归。纯文本历史叙述(无反引号,如迁移说明里的 "previously provided
# by X")允许存在,避免误伤合法的"为何移除"文档。
hits=$(grep -rnF "\`$sym\`" README.md README.zh-CN.md 2>/dev/null || true)
if [ -n "$hits" ]; then
echo "::error::Removed symbol '$sym' is still referenced as a code identifier in README:"
echo "$hits"
exit 1
fi
done
echo "OK: No removed-symbol regressions (as code identifiers) in README."
# 2. 白名单:README 宣称的关键类必须在 src 存在
for cls in RedisCacheAutoConfiguration RedisProCacheProperties RedisProCache \
RedisProCacheManager CacheHandlerChainFactory RedisCacheInterceptor \
RedisCacheOperationSource RedissonConfiguration; do
if ! find src/main/java -name "${cls}.java" | grep -q .; then
echo "::error::Key class '$cls' referenced in docs not found in src/main/java"
exit 1
fi
done
echo "OK: All key classes referenced in docs exist in src."
checkstyle:
name: Checkstyle
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: ./.github/actions/setup-jdk-21
- name: Run Checkstyle
run: ./mvnw checkstyle:check -B
qodana:
name: Qodana Code Quality
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Qodana Scan
uses: JetBrains/qodana-action@v2025.3
with:
cache-dir: .qodana/cache
use-caches: true
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
continue-on-error: true
- name: Upload Qodana Report
if: always()
uses: actions/upload-artifact@v5
with:
name: qodana-report
path: ./qodana/report/
retention-days: 7
dependency-check:
name: Dependency Analysis
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: ./.github/actions/setup-jdk-21
- name: Dependency Analysis
run: ./mvnw dependency:analyze -B
continue-on-error: true
- name: Check Dependency Updates
run: ./mvnw versions:display-dependency-updates -B
continue-on-error: true
build-package:
name: Build Package
runs-on: ubuntu-latest
needs: [build, docs-link-check, checkstyle, qodana, dependency-check]
# 不用 if: always():恢复 needs 默认门控——仅当 gating job(build/checkstyle/docs-link-check)
# 成功时才打包上传。compatibility/qodana/dependency-check 自带 continue-on-error,失败不阻塞。
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: ./.github/actions/setup-jdk-21
- name: Build JAR
run: ./mvnw clean package -DskipTests -B
- name: Upload JAR Artifact
uses: actions/upload-artifact@v5
with:
name: resicache-artifact
path: target/*.jar
retention-days: 7