⬆️ [testcontainers] 更新测试版本 #18
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [ dev ] | |
| pull_request: | |
| branches: [ dev ] | |
| env: | |
| GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.parallel=true -Dorg.gradle.workers.max=4 -Dkotlin.incremental=false" | |
| jobs: | |
| # 🧪 Run All Tests | |
| test: | |
| name: "🧪 Run All Tests" | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| cache: gradle | |
| - name: Cache Gradle dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| ~/.gradle/gradle.properties | |
| ~/.gradle/buildOutputCleanup | |
| ~/.konan | |
| ~/.m2/repository | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'gradle/libs.versions.toml', '**/gradle.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| with: | |
| gradle-version: '9.0.0-rc-3' | |
| cache-read-only: false | |
| cache-cleanup: on-success | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Cache Docker layers | |
| uses: actions/cache@v4 | |
| with: | |
| path: /tmp/.buildx-cache | |
| key: ${{ runner.os }}-docker-${{ hashFiles('**/Dockerfile*', '**/docker-compose*') }} | |
| restore-keys: | | |
| ${{ runner.os }}-docker- | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| - name: Run all tests | |
| run: ./gradlew clean test --no-daemon --stacktrace --parallel --no-build-cache --no-configuration-cache --rerun-tasks | |
| env: | |
| # Testcontainers 优化配置 | |
| TESTCONTAINERS_RYUK_DISABLED: false | |
| TESTCONTAINERS_CHECKS_DISABLE: false | |
| TESTCONTAINERS_REUSE_ENABLE: true | |
| TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX: "" | |
| # 启用容器重用标签,提高缓存效率 | |
| TESTCONTAINERS_REUSE_HASH_LABELS: true | |
| # Docker 性能优化 | |
| DOCKER_HOST: unix:///var/run/docker.sock | |
| TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE: /var/run/docker.sock | |
| TESTCONTAINERS_HOST_OVERRIDE: localhost | |
| # Docker 镜像缓存优化 | |
| DOCKER_BUILDKIT: 1 | |
| BUILDKIT_PROGRESS: plain | |
| # JVM 性能调优 | |
| MAVEN_OPTS: "-Xmx2g -XX:+UseG1GC" | |
| # CI 环境配置 | |
| CI: true | |
| GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true | |
| - name: Cleanup Docker containers | |
| if: always() | |
| run: | | |
| # 清理停止的容器,但保留可重用的容器 | |
| docker container prune -f --filter "until=1h" --filter "label!=org.testcontainers.reuse.enable=true" | |
| # 保留常用镜像,只清理较老的镜像 | |
| docker image prune -f --filter "until=48h" --filter "dangling=true" | |
| # 清理未使用的卷,但保留标记为保留的卷 | |
| docker volume prune -f --filter "label!=keep" --filter "label!=org.testcontainers" | |
| - name: Cache cleanup | |
| if: always() | |
| run: | | |
| # 清理旧的 Gradle 缓存文件 | |
| find ~/.gradle/caches -name "*.lock" -delete || true | |
| find ~/.gradle/caches -type d -name "tmp" -exec rm -rf {} + || true |