You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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_app
    
  • Monorepo的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:50:08