2

我正在 circleci 2.0 上构建一个工作流,到目前为止,作业一直在运行,直到它进入 android 作业。

在构建步骤./gradlew assembleRelease中,它表明未设置 ENV VAR 失败:

Unzipping /home/circleci/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1-all.zip to /home/circleci/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv
Set executable permissions for: /home/circleci/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/bin/gradle

FAILURE: Build failed with an exception.

* What went wrong:
Could not open terminal for stdout: $TERM not set

根据这篇文章,我所做的尝试是将 $TERM 变量设置为 gradle 调用之前的运行命令。但是构建仍然无法寻找这个变量。

问题:

如何解决 $TERM 未设置在 gradlew ./assembleRelease 上 CIrcleCI 的问题?

根据此 SO 帖子,我确实验证了我使用的是正确的 docker 映像:

https://stackoverflow.com/a/45744987/1829251

这是androidCI 作业的 config.yml 要点:

 android:
    working_directory: ~/repo/android
    docker:
      - image: circleci/android:api-25-node8-alpha
    steps:
      - checkout:
          path: ~/repo
      - restore_cache:
          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "app/build.gradle" }}
      - attach_workspace:
          at: ~/repo
      - run: ./gradlew androidDepedencies    
      - run: export TERM=xterm   
      - run: sudo chmod +x ./gradlew
      - run: ./gradlew assembleRelease
      - save_cache:
          paths:
            - ~/.gradle
          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "app/build.gradle" }}
      - store_test_results:
path: ~/repo/android/reports
4

2 回答 2

2

免责声明:CircleCI 的开发人员布道者

      - run: export TERM=xterm

$TERM该行仅为该特定外壳设置变量。每run一步都会启动一个全新的外壳。

gradlew在同一步骤中运行的解决方案是一种可能的解决方案:

 - run: export TERM=xterm && ./gradlew androidDepedencies  

另一个是正确导出$TERM,以便所有后续步骤都可以看到该变量。这将是这样完成的:

      - run: echo 'export TERM=xterm' >> $BASH_ENV

$BASH_ENV包含每个 CircleCI 开头的 Bash 文件的路径step。这是来自:https ://circleci.com/docs/2.0/env-vars/#setting-path

于 2018-03-09T17:52:58.800 回答
0

我错误地导出了 ENV VAR,使用以下方法修复$TERM not set了 android 构建中丢失的错误:

 - run: export TERM=xterm && ./gradlew androidDepedencies    
于 2018-03-09T00:00:58.347 回答