我正在使用以下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?
答案 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