提问者:小点点

如何解决未在gradlew上设置的$TERM/在CIrcleCI上的assemblyRelease?


我正在 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调用之前的运行命令。但是构建仍然无法寻找这个变量。

问题:

如何解决未在gradlew上设置的$TERM/在CIrcleCI上的assemblyRelease?

我确实根据这篇SO帖子验证了我使用的docker图像是正确的:

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

以下是 android CI Job 的 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

共2个答案

匿名用户

免责声明:CircleCI的开发者宣传员

      - run: export TERM=xterm

这一行仅为特定的shell设置变量$TERM。每个运行步骤都会启动一个全新的shell。

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

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

另一种方法是正确导出< code>$TERM,以便所有后续步骤都可以看到该变量。应该这样做:

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

< code>$BASH_ENV包含BASH文件的路径,该文件来源于每个CircleCI 步骤的开头。这是它的来源:https://circleci.com/docs/2.0/env-vars/#setting-path

匿名用户

我导出ENV VAR不正确,使用以下修复了android构建中缺少的$TERM not set错误:

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