Monorepo中Codemagic构建失败:Step 3脚本退出码1求助排查
我有一个包含Flutter应用的monorepo,父项目已安装melos,配置了如下codemagic.yaml:
workflows: test-app-workflow-android: name: Test App workflow (Android) working_directory: $PWD/apps/test_app instance_type: mac_mini_m1 max_build_duration: 60 environment: flutter: master java: 1.8 triggering: events: - push branch_patterns: - pattern: "master" include: true source: true cancel_previous_builds: true scripts: - name: Check Dart Version script: | dart --version - name: Set up local.properties script: | echo "flutter.sdk=$HOME/programs/flutter" > "$CM_BUILD_DIR/android/local.properties" - name: Get Flutter packages script: | flutter packages pub get - name: Flutter analyze script: | flutter analyze artifacts: - build/**/outputs/**/*.apk publishing: email: recipients: - test@gmail.com notify: success: true failure: true cache: cache_paths: - $FLUTTER_ROOT/.pub-cache
但无论执行什么脚本,都会出现如下错误:
Build failed :| Step 3 script `Check Dart Version` exited with status code 1
导致codemagic.yaml完全无法工作,请问我可能遗漏了什么?
大概率是以下几个原因,对应解决方法如下:
Flutter环境未正确加入系统PATH
你指定了Flutter版本为master,但Codemagic初始化环境后,dart命令可能不在当前PATH中,直接调用会找不到命令。解决方法是改用Flutter内置的dart命令:flutter dart --version或者先手动将Flutter的bin目录加入PATH:
export PATH="$FLUTTER_ROOT/bin:$PATH" dart --version工作目录路径配置错误
你使用了$PWD/apps/test_app作为工作目录,但Codemagic中$PWD的指向可能不符合预期,建议改用Codemagic内置的仓库根目录变量$CM_BUILD_DIR,或者直接用相对路径:working_directory: apps/test_app # 或者 working_directory: $CM_BUILD_DIR/apps/test_appMonorepo的Melos环境未初始化
因为是monorepo结构,子项目的依赖和环境可能需要通过Melos初始化才能正常工作。可以在第一个脚本前添加Melos初始化步骤:scripts: - name: Initialize Melos script: | cd $CM_BUILD_DIR melos bootstrap # 后续脚本保持不变local.properties路径错误
你设置local.properties时用了$CM_BUILD_DIR/android/local.properties,但如果工作目录已经切换到子项目,正确路径应该是./android/local.properties,或者用$CM_BUILD_DIR/apps/test_app/android/local.properties,避免路径指向错误。
内容的提问来源于stack exchange,提问作者Compaq LE2202x

