Запуск конвейеров с образом среды сборки Android и ruby - PullRequest
0 голосов
/ 16 октября 2019

Я использую следующий файл yml

image: uber/android-build-environment:latest

pipelines:
  default:
    - step:
        caches:
          - bundler
        script: # Modify the commands below to build your repository.
          - apt-get update && apt-get install -y awscli
          - apt-get install rubygems
          - gem install bundler
          - bundle install
          - bundle exec fastlane test
          - bundle exec fastlane build
definitions:
  caches:
    bundler: ./vendor

Обратите внимание, что я использую образ среды сборки Android.

Сборка не удалась

apt-get установите rubygems с ошибкой:

E: Не удалось открыть файл блокировки / var / lib / dpkg / lock - открыть (13: Отказано в доступе) E: Невозможно заблокировать каталог администратора (/var / lib / dpkg /), вы root?

, поэтому похоже, что скрипт сборки не запускается от имени root.

Если я попытаюсь использовать sudo, онзавершается с ошибкой

sudo: отсутствует tty и не указана программа askpass

Что мне нужно сделать, чтобы можно было запускать гемы ruby ​​с образом среды сборки Android?

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Я закончил использовать другой образ env для сборки:

image: mingc/android-build-box:v1.2.0

pipelines:
  default:
    - step:
        caches:
          - gradle
          - gradlewrapper
          - androidavd
          - bundler
        script:
          - apt-get update && apt-get install -y awscli
          - gem update --system
          - gem install bundler
          - gem install danger
          - bundle install
          - bundle exec fastlane test
          - bundle exec fastlane build
definitions:
  caches:
    gradlewrapper: ~/.gradle/wrapper
    androidavd: $ANDROID_HOME/.android/avd
    bundler: ./vendor
0 голосов
/ 16 октября 2019

uber/android-build-environment:latest использует пользователя без полномочий root, у которого нет прав для запуска некоторых команд, например apt-get. Вы должны пересобрать образ с пользователем root или временно изменить пользователя на root. В вашем Dockerfile добавьте:

USER root

install/updates

USER solr

Подробнее о проблеме читайте здесь Как установить новые пакеты в некорневой Docker-контейнер?

PS У вас нетне нужно запускать конвейер как root. Если вы запустите под root в контейнере Docker, вы сможете установить свои зависимости.

...