Как разрешить $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    
Другие вопросы по тегам