使用android构建环境图片和ruby运行管道

时间:2019-10-16 08:57:51

标签: android ruby bitbucket-pipelines

我正在使用以下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程序

我应该怎么做才能在Android构建环境映像中运行ruby gems?

2 个答案:

答案 0 :(得分:0)

uber/android-build-environment:latest使用非root用户,该用户无权运行某些命令,例如apt-get。您应该使用root用户重建映像,或临时将用户更改为root。在您的Dockerfile中添加:

USER root

install/updates

USER solr

How to install new packages into non-root Docker Container?

上查看有关此问题的更多详细信息

P.S。您无需以root用户身份运行管道。如果您在docker容器内的根目录下运行,则可以安装依赖项。

答案 1 :(得分:0)

我结束了使用另一个android build 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