# download gcloud commandline tool before deploy to avoid concurrency downloading# build all services at first to fully utilize the multi-core cpu./gradlewdefault-service:downloadCloudSdkbootJar# build graalvm native image services one by one(small projects are merged) to reduce memory footage./gradlewa-service:nativeCompileb:nativeCompile./gradlewc:nativeCompiled:nativeCompile# deploy all service./gradlewappengineDeploy
在 CI 中并不直接执行 appengineDeploy 而是先把该执行的任务都执行好了(把 artifact 都构建出来)再执行 appengineDeploy 把服务一口气部署上去(appengineDeploy 在每个 sub project 里都有, 所以多个 appengineDeploy 任务实例会同时执行).
downloadCloudSdk 这个任务会下载 gcloud 命令行工具到系统上, 这一步是不能并行的, 所以必须让某一个 sub project 的 downloadCloudSdk 任务先执行好(此时只有一个任务在执行), 才能继续执行其他任务. 在下载的过程中, 只有网络资源在被消耗, 所以顺便把所有服务的 jar 包构建出来, 把 CPU 也利用起来.