如何在Spring Boot Gradle插件的bootBuildImage中配置cache-image
在Spring Boot Gradle插件中配置Buildpacks缓存镜像(Cache Image)
你之前用的bind类型缓存在GitHub Actions里没法生效,因为Runner的临时文件系统会在每次Job结束后被清理,缓存没法持久化。改用**缓存镜像(Cache Image)**是正确的优化方向,下面是具体配置方法:
1. 修改Gradle的bootBuildImage配置
把buildCache和launchCache的bind配置替换为image,指定远程容器仓库的缓存镜像地址:
bootBuildImage { builder = "paketobuildpacks/builder-jammy-base:0.4.292" buildpacks.set( listOf( "gcr.io/paketo-buildpacks/amazon-corretto:8.4.2", "urn:cnb:builder:paketo-buildpacks/java" ) ) environment.set( mapOf( "BP_DATADOG_ENABLED" to "true" ) ) // 配置构建阶段缓存镜像 buildCache { image { name.set("ghcr.io/your-username/${rootProject.name}-build-cache:latest") // 可选:自定义缓存拉取/推送策略,默认是PULL_PUSH // pullPolicy.set("ALWAYS") // pushPolicy.set("ALWAYS") } } // 配置启动阶段缓存镜像 launchCache { image { name.set("ghcr.io/your-username/${rootProject.name}-launch-cache:latest") } } }
2. 在GitHub Actions中添加容器仓库登录步骤
要让Gradle能拉取和推送缓存镜像,需要在Job里先登录到对应的容器仓库(以GitHub Container Registry为例):
jobs: build-image: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK 8 uses: actions/setup-java@v4 with: java-version: '8' distribution: 'corretto' - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push image with cache run: ./gradlew bootBuildImage
关键说明
- 缓存镜像地址要替换成你自己的容器仓库地址(比如Docker Hub、GHCR、AWS ECR等)
GITHUB_TOKEN默认拥有GHCR的读写权限(需确认仓库设置中的权限配置)- 首次构建会推送缓存镜像,后续构建会优先拉取缓存,大幅缩短依赖下载、编译等阶段的耗时
内容的提问来源于stack exchange,提问作者Kwangyong Kim
相关产品推荐
相关产品推荐

