@@ -67,49 +67,48 @@ jobs:
6767 - name : Warm up Gradle daemon
6868 run : ./gradlew --version
6969
70- - name : Run build and tests
71- run : ./gradlew clean build test --no-daemon --stacktrace --parallel --build-cache --configuration-cache
70+ - name : Pre-pull common Docker images for Testcontainers
71+ run : |
72+ # 预拉取常用的测试镜像,提高 Testcontainers 启动速度
73+ docker pull postgres:15-alpine || true
74+ docker pull redis:7-alpine || true
75+ docker pull mysql:8.0 || true
76+ docker pull mongo:7 || true
77+ docker pull nginx:alpine || true
78+ # 可以根据你的项目需要调整镜像列表
79+
80+ - name : Run tests
81+ run : ./gradlew clean test --no-daemon --stacktrace --parallel --build-cache --configuration-cache
7282 env :
7383 # Testcontainers 优化配置
7484 TESTCONTAINERS_RYUK_DISABLED : false
7585 TESTCONTAINERS_CHECKS_DISABLE : false
7686 TESTCONTAINERS_REUSE_ENABLE : true
7787 TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX : " "
88+ # 启用容器重用标签,提高缓存效率
89+ TESTCONTAINERS_REUSE_HASH_LABELS : true
7890 # Docker 性能优化
7991 DOCKER_HOST : unix:///var/run/docker.sock
8092 TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE : /var/run/docker.sock
8193 TESTCONTAINERS_HOST_OVERRIDE : localhost
94+ # Docker 镜像缓存优化
95+ DOCKER_BUILDKIT : 1
96+ BUILDKIT_PROGRESS : plain
8297 # JVM 性能调优
8398 MAVEN_OPTS : " -Xmx2g -XX:+UseG1GC"
8499 # CI 环境配置
85100 CI : true
86101 GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED : true
87102
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-
107103 - name : Cleanup Docker containers
108104 if : always()
109105 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"
106+ # 清理停止的容器,但保留可重用的容器
107+ docker container prune -f --filter "until=1h" --filter "label!=org.testcontainers.reuse.enable=true"
108+ # 保留常用镜像,只清理较老的镜像
109+ docker image prune -f --filter "until=48h" --filter "dangling=true"
110+ # 清理未使用的卷,但保留标记为保留的卷
111+ docker volume prune -f --filter "label!=keep" --filter "label!=org.testcontainers"
113112
114113 - name : Cache cleanup
115114 if : always()
0 commit comments