Skip to content

Commit 47304c3

Browse files
authored
🚀 [release] 0.0.8
🚀 [release] 0.0.8
2 parents 75563c3 + 86392be commit 47304c3

3 files changed

Lines changed: 149 additions & 41 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 136 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,96 @@ name: CI
22

33
on:
44
push:
5-
branches: [ main ]
5+
branches: [ main, dev ]
66
pull_request:
7-
branches: [ main ]
7+
branches: [ main, dev ]
88

99
env:
10-
GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.parallel=true -Dorg.gradle.workers.max=4 -Dkotlin.incremental=false"
10+
GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.parallel=true -Dorg.gradle.workers.max=4 -Dkotlin.incremental=false -Dorg.gradle.caching=false"
1111

1212
jobs:
13-
test:
13+
# 🐳 Setup Docker & Testcontainers
14+
setup-docker:
15+
name: "🐳 Setup Docker & Testcontainers"
1416
runs-on: ubuntu-latest
15-
timeout-minutes: 45
16-
17+
timeout-minutes: 10
18+
1719
steps:
1820
- name: Checkout code
1921
uses: actions/checkout@v4
2022
with:
2123
fetch-depth: 0
2224

25+
- name: Set up Docker Buildx
26+
uses: docker/setup-buildx-action@v3
27+
28+
- name: Cache Docker layers
29+
uses: actions/cache@v4
30+
with:
31+
path: /tmp/.buildx-cache
32+
key: ${{ runner.os }}-docker-${{ hashFiles('**/Dockerfile*', '**/docker-compose*') }}
33+
restore-keys: |
34+
${{ runner.os }}-docker-
35+
36+
- name: Verify Docker installation
37+
run: |
38+
docker --version
39+
docker info
40+
docker ps
41+
42+
- name: Pre-pull Testcontainers images
43+
run: |
44+
# 预拉取常用的测试镜像,提高 Testcontainers 启动速度
45+
docker pull postgres:15-alpine || true
46+
docker pull redis:7-alpine || true
47+
docker pull mysql:8.0 || true
48+
docker pull mongo:7 || true
49+
docker pull minio/minio:latest || true
50+
docker pull nginx:alpine || true
51+
52+
# ☕ Setup JDK
53+
setup-jdk:
54+
name: "☕ Setup JDK"
55+
runs-on: ubuntu-latest
56+
needs: setup-docker
57+
timeout-minutes: 5
58+
59+
steps:
60+
- name: Checkout code
61+
uses: actions/checkout@v4
62+
with:
63+
fetch-depth: 0
64+
65+
- name: Set up JDK 17
66+
uses: actions/setup-java@v4
67+
with:
68+
java-version: '17'
69+
distribution: 'temurin'
70+
71+
- name: Verify Java installation
72+
run: |
73+
java -version
74+
javac -version
75+
76+
# 🔧 Setup Gradle
77+
setup-gradle:
78+
name: "🔧 Setup Gradle"
79+
runs-on: ubuntu-latest
80+
needs: setup-jdk
81+
timeout-minutes: 10
82+
83+
steps:
84+
- name: Checkout code
85+
uses: actions/checkout@v4
86+
with:
87+
fetch-depth: 0
88+
89+
- name: Set up JDK 17
90+
uses: actions/setup-java@v4
91+
with:
92+
java-version: '17'
93+
distribution: 'temurin'
94+
2395
- name: Cache Gradle dependencies
2496
uses: actions/cache@v4
2597
with:
@@ -31,17 +103,54 @@ jobs:
31103
restore-keys: |
32104
${{ runner.os }}-gradle-
33105
106+
- name: Setup Gradle
107+
uses: gradle/actions/setup-gradle@v4
108+
with:
109+
gradle-version: '9.0.0-rc-3'
110+
cache-read-only: false
111+
cache-cleanup: on-success
112+
113+
- name: Grant execute permission for gradlew
114+
run: chmod +x gradlew
115+
116+
- name: Warm up Gradle daemon
117+
run: ./gradlew --version
118+
119+
# 🧪 Run All Tests
120+
run-tests:
121+
name: "🧪 Run All Tests"
122+
runs-on: ubuntu-latest
123+
needs: setup-gradle
124+
timeout-minutes: 45
125+
126+
steps:
127+
- name: Checkout code
128+
uses: actions/checkout@v4
129+
with:
130+
fetch-depth: 0
131+
34132
- name: Set up JDK 17
35133
uses: actions/setup-java@v4
36134
with:
37135
java-version: '17'
38136
distribution: 'temurin'
39137

138+
- name: Cache Gradle dependencies
139+
uses: actions/cache@v4
140+
with:
141+
path: |
142+
~/.gradle/caches
143+
~/.gradle/wrapper
144+
~/.konan
145+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'gradle/libs.versions.toml') }}
146+
restore-keys: |
147+
${{ runner.os }}-gradle-
148+
40149
- name: Setup Gradle
41150
uses: gradle/actions/setup-gradle@v4
42151
with:
43152
gradle-version: '9.0.0-rc-3'
44-
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
153+
cache-read-only: false
45154
cache-cleanup: on-success
46155

47156
- name: Set up Docker Buildx
@@ -55,61 +164,50 @@ jobs:
55164
restore-keys: |
56165
${{ runner.os }}-docker-
57166
58-
- name: Verify Docker installation
167+
- name: Pre-pull Testcontainers images
59168
run: |
60-
docker --version
61-
docker info
62-
docker ps
169+
docker pull postgres:15-alpine || true
170+
docker pull redis:7-alpine || true
171+
docker pull mysql:8.0 || true
172+
docker pull mongo:7 || true
173+
docker pull minio/minio:latest || true
174+
docker pull nginx:alpine || true
63175
64176
- name: Grant execute permission for gradlew
65177
run: chmod +x gradlew
66178

67-
- name: Warm up Gradle daemon
68-
run: ./gradlew --version
69-
70-
- name: Run build and tests
71-
run: ./gradlew clean build test --no-daemon --stacktrace --parallel --build-cache --configuration-cache
179+
- name: Run all tests
180+
run: ./gradlew clean test --no-daemon --stacktrace --parallel --no-build-cache --no-configuration-cache --rerun-tasks
72181
env:
73182
# Testcontainers 优化配置
74183
TESTCONTAINERS_RYUK_DISABLED: false
75184
TESTCONTAINERS_CHECKS_DISABLE: false
76185
TESTCONTAINERS_REUSE_ENABLE: true
77186
TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX: ""
187+
# 启用容器重用标签,提高缓存效率
188+
TESTCONTAINERS_REUSE_HASH_LABELS: true
78189
# Docker 性能优化
79190
DOCKER_HOST: unix:///var/run/docker.sock
80191
TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE: /var/run/docker.sock
81192
TESTCONTAINERS_HOST_OVERRIDE: localhost
193+
# Docker 镜像缓存优化
194+
DOCKER_BUILDKIT: 1
195+
BUILDKIT_PROGRESS: plain
82196
# JVM 性能调优
83197
MAVEN_OPTS: "-Xmx2g -XX:+UseG1GC"
84198
# CI 环境配置
85199
CI: true
86200
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
87201

88-
- name: Upload test results
89-
uses: actions/upload-artifact@v4
90-
if: always()
91-
with:
92-
name: test-results
93-
path: |
94-
**/build/test-results/test/
95-
**/build/reports/tests/test/
96-
**/build/reports/jacoco/
97-
98-
- name: Upload coverage reports
99-
uses: actions/upload-artifact@v4
100-
if: always()
101-
with:
102-
name: coverage-reports
103-
path: |
104-
**/build/reports/jacoco/test/html/
105-
**/build/reports/jacoco/test/jacocoTestReport.xml
106-
107202
- name: Cleanup Docker containers
108203
if: always()
109204
run: |
110-
docker container prune -f --filter "until=1h"
111-
docker image prune -f --filter "until=24h"
112-
docker volume prune -f --filter "label!=keep"
205+
# 清理停止的容器,但保留可重用的容器
206+
docker container prune -f --filter "until=1h" --filter "label!=org.testcontainers.reuse.enable=true"
207+
# 保留常用镜像,只清理较老的镜像
208+
docker image prune -f --filter "until=48h" --filter "dangling=true"
209+
# 清理未使用的卷,但保留标记为保留的卷
210+
docker volume prune -f --filter "label!=keep" --filter "label!=org.testcontainers"
113211
114212
- name: Cache cleanup
115213
if: always()

build-logic/src/main/kotlin/buildlogic.java-conventions.gradle.kts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,18 @@ afterEvaluate {
8181
).forEach { config ->
8282
config.dependencies.forEach { dep ->
8383
if (commonProjectDeps.contains(dep.name)) {
84-
dependsOn(":${dep.name}:sourcesJar")
85-
dependsOn(":${dep.name}:javadocJar")
84+
val depProject = project.findProject(":${dep.name}")
85+
if (depProject != null) {
86+
val sourcesJarTask = depProject.tasks.findByName("sourcesJar")
87+
val javadocJarTask = depProject.tasks.findByName("javadocJar")
88+
89+
if (sourcesJarTask != null) {
90+
dependsOn(":${dep.name}:sourcesJar")
91+
}
92+
if (javadocJarTask != null) {
93+
dependsOn(":${dep.name}:javadocJar")
94+
}
95+
}
8696
}
8797
}
8898
}

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ org-springframework-modulith = "1.4.1"
5050
org-springframework-security = "6.5.1"
5151
org-testcontainers = "1.21.3"
5252
org-testng = "7.11.0"
53-
project = "0.0.7"
53+
project = "0.0.8"
5454

5555
[libraries]
5656
cn-dev33-sa-token-redis-jackson = { module = "cn.dev33:sa-token-redis-jackson", version.ref = "cn-dev33-sa-token" }

0 commit comments

Comments
 (0)