我正在为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尝试的是设置$ TERM变量是gradle调用之前的run命令。但构建仍然无法查找此变量。
问题:
如何解决未在CIrcleCI上的gradlew ./assembleRelease上设置的$ TERM?
我确实根据这个SO帖子确认我正在使用正确的泊坞窗图像:
https://stackoverflow.com/a/45744987/1829251
以下是android
CI职位的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
答案 0 :(得分:2)
免责声明: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
包含Bash文件的路径,该文件源自每个CircleCI step
的开头。以下是https://circleci.com/docs/2.0/env-vars/#setting-path
答案 1 :(得分:0)
我正在错误地导出ENV VAR,使用以下修复了android build中缺少的 for (int i = 0; i < count; ++i)
erorr:
$TERM not set