Как разрешить $TERM, не установленный на gradlew ./assembleRelease на 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
В соответствии с этим постом я попытался установить переменную $TERM - команду запуска до вызова gradle. Но сборка все еще не может найти эту переменную.
Вопрос:
Как вы можете решить, что $TERM не установлен на gradlew ./assembleRelease на CIrcleCI?
Я проверил, что я использую правильный образ докера согласно этому сообщению SO:
/questions/1545211/circle-ci-integratsiya/1545219#1545219
Вот суть 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
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
содержит путь к файлу Bash, полученному в начале каждого CircleCI step
, Вот откуда это взялось: https://circleci.com/docs/2.0/env-vars/
Я неправильно экспортировал ENV VAR, используя следующее исправило отсутствующие $TERM not set
erorr в сборке андроида:
- run: export TERM=xterm && ./gradlew androidDepedencies