本文目录#

构建痛点#

Native Image 构建耗时常达数分钟,且依赖反射配置。为了在 CI/CD 中高效使用,需要缓存构建产物、分层优化镜像、使用构建服务器。

加速策略#

  • Docker 多阶段:将 GraalVM 与应用依赖缓存为基础镜像;
  • artifact 缓存:利用 Gradle/Maven cache、SCC(Shared Classes Cache)缩短编译;
  • Build Server:使用 GraalVM --shared-engine 或 Buildpacks(Paketo)利用 buildpacks 缓存;
  • 配置生成native-image-agent 收集反射配置并存入版本库。

CI 示例(GitHub Actions)#

1
2
3
4
5
6
7
8
9
10
11
12
- uses: actions/cache@v3
with:
path: |
~/.m2
~/.gradle
key: ${{ runner.os }}-native-${{ hashFiles('**/pom.xml') }}
- run: gu install native-image
- run: ./mvnw -Pnative native:compile
- uses: actions/upload-artifact@v3
with:
name: demo-native
path: target/demo

自检清单#

  • 是否缓存构建工具与 GraalVM 组件?
  • 是否在构建后运行集成测试验证 Native 产物?
  • 是否记录构建耗时并持续优化?

参考资料#


本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。