Github Actions上Gradle构建Jetpack Compose MacOS应用卡顿超时
Github Actions构建Jetpack Compose macOS应用时
createReleaseDistributable任务卡住问题 问题概述
使用Github Actions构建Jetpack Compose macOS应用时,多数场景下执行./gradlew createReleaseDistributable一段时间后,构建会卡住并无限重复输出Gradle调试日志,最终导致构建超时。仅少数构建能成功完成,耗时约6分钟。
重复输出的日志内容:
2022-11-25T13:29:31.666+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Build operation 'Execute container callback action' started 2022-11-25T13:29:31.666+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Completing Build operation 'Execute container callback action' 2022-11-25T13:29:31.667+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Build operation 'Execute container callback action' started 2022-11-25T13:29:31.667+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Completing Build operation 'Execute container callback action' 2022-11-25T13:29:31.667+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Build operation 'Execute container callback action' started 2022-11-25T13:29:31.667+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Completing Build operation 'Execute container callback action' 2022-11-25T13:29:31.668+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Build operation 'Execute container callback action' started 2022-11-25T13:29:31.668+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Completing Build operation 'Execute container callback action' 2022-11-25T13:29:31.668+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Build operation 'Execute container callback action' started 2022-11-25T13:29:31.668+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Completing Build operation 'Execute container callback action' 2022-11-25T13:29:31.672+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Build operation 'Execute container callback action' started 2022-11-25T13:29:31.673+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Completing Build operation 'Execute container callback action' 2022-11-25T13:29:31.673+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Build operation 'Execute container callback action' started 2022-11-25T13:29:31.673+0000 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Completing Build operation 'Execute container callback action'
已尝试的无效方案:
- 升级Gradle至最新版7.5.1
- 配置Gradle内存为
-Xmx10240m - 在项目
gradle.properties中禁用Gradle守护进程
可行排查与解决方法
1. 优化Github Actions Runner资源配置
- 使用更高版本的macOS runner(如
macos-12),其默认资源比旧版本更充足,能减少因资源不足导致的死锁 - 在Workflow中添加环境变量,强制工具进入CI模式,并禁用Gradle并行构建:
jobs: build-macos: runs-on: macos-12 env: CI: true GRADLE_OPTS: "-Xmx10240m -Dorg.gradle.parallel=false" steps: - uses: actions/checkout@v4 - name: Build release distributable run: ./gradlew createReleaseDistributable --no-parallel
2. 禁用Gradle并行与构建缓存
并行构建在CI环境下容易触发资源竞争或死锁,直接在命令行或配置中禁用:
- 在项目
gradle.properties中添加:org.gradle.parallel=false org.gradle.caching=false - 或者执行命令时显式禁用:
./gradlew createReleaseDistributable --no-parallel --no-build-cache
3. 检查并完善macOS打包签名配置
若打包过程中存在未配置的交互式签名步骤,会导致CI环境下构建卡住。确保在build.gradle.kts中正确配置自动签名,使用Github Secrets存储敏感信息:
plugins { id("org.jetbrains.compose") version "1.4.0" kotlin("multiplatform") } kotlin { macosX64 { binaries { executable { entryPoint = "main" signing { identity = System.getenv("MACOS_SIGN_IDENTITY") storeFile = file(System.getenv("MACOS_CERTIFICATE_PATH")) storePassword = System.getenv("MACOS_CERTIFICATE_PASSWORD") } } } } }
4. 拆分任务定位卡点
通过拆分构建任务,确定具体卡住的环节:
- 先执行编译任务:
./gradlew assembleRelease - 再执行打包任务:
./gradlew createReleaseDistributable --no-build-cache
若编译环节正常,问题则聚焦在打包阶段,可进一步添加--info日志级别查看细节:
./gradlew createReleaseDistributable --info
5. 清理Gradle缓存
缓存的旧产物可能导致冲突,在Workflow中添加缓存清理步骤:
- name: Clean Gradle build cache run: ./gradlew cleanBuildCache
内容的提问来源于stack exchange,提问作者Alex Styl
相关产品推荐
相关产品推荐

