如何解决 $TERM not set on gradlew ./assembleRelease on CIrcleCI?
How to resolve $TERM not set on gradlew ./assembleRelease on CIrcleCI?
我正在 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
我根据 this post 所做的尝试是在 gradle 调用之前将 $TERM 变量设置为 运行 命令。但是构建仍然无法找到这个变量。
问题:
如何解决 gradlew ./assembleRelease on CIrcleCI 上未设置的 $TERM?
我确实根据这个 SO post:
验证了我使用的是正确的 docker 图片
这是 config.yml android
CI 工作的要点:
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
我错误地导出了 ENV VAR,使用以下修复了 android 构建中丢失的 $TERM not set
错误:
- run: export TERM=xterm && ./gradlew androidDepedencies
免责声明:CircleCI 的开发人员布道师
- run: export TERM=xterm
该行仅为特定 shell 设置变量 $TERM
。每 run
步开始一个全新的 shell.
您在同一步骤中 运行 gradlew
的解决方案是一种可能的解决方案:
- run: export TERM=xterm && ./gradlew androidDepedencies
另一种方法是正确导出 $TERM
,以便所有后续步骤都可以看到该变量。这将像这样完成:
- run: echo 'export TERM=xterm' >> $BASH_ENV
$BASH_ENV
包含指向每个 CircleCI step
开头的 Bash 文件的路径。这是它的来源:https://circleci.com/docs/2.0/env-vars/#setting-path
我正在 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
我根据 this post 所做的尝试是在 gradle 调用之前将 $TERM 变量设置为 运行 命令。但是构建仍然无法找到这个变量。
问题:
如何解决 gradlew ./assembleRelease on CIrcleCI 上未设置的 $TERM?
我确实根据这个 SO post:
验证了我使用的是正确的 docker 图片这是 config.yml android
CI 工作的要点:
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
我错误地导出了 ENV VAR,使用以下修复了 android 构建中丢失的 $TERM not set
错误:
- run: export TERM=xterm && ./gradlew androidDepedencies
免责声明:CircleCI 的开发人员布道师
- run: export TERM=xterm
该行仅为特定 shell 设置变量 $TERM
。每 run
步开始一个全新的 shell.
您在同一步骤中 运行 gradlew
的解决方案是一种可能的解决方案:
- run: export TERM=xterm && ./gradlew androidDepedencies
另一种方法是正确导出 $TERM
,以便所有后续步骤都可以看到该变量。这将像这样完成:
- run: echo 'export TERM=xterm' >> $BASH_ENV
$BASH_ENV
包含指向每个 CircleCI step
开头的 Bash 文件的路径。这是它的来源:https://circleci.com/docs/2.0/env-vars/#setting-path