运行 个具有 android 构建环境映像和 ruby 的管道

Running pipelines with an android build environment image and ruby

我正在使用以下 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: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

所以看起来构建脚本没有 运行 作为 root。

如果我尝试使用 sudo,它会失败并显示错误

sudo: no tty present and no askpass program specified

我应该怎么做才能 运行 ruby 具有 Android 构建环境映像的 gem?

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

USER root

install/updates

USER solr

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

P.S。您不需要 运行 管道作为根。如果您 运行 在 docker 容器内的根目录下,您将能够安装依赖项。

我结束了使用不同的 android 构建环境图像:

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