【发布时间】:2020-05-11 16:54:40
【问题描述】:
我正在使用 Jenkins 来运行 CI。我正在使用 docker 映像 mingc/android-build-box 在容器中运行快车道 (dokka)。
如果我遵循here 建议的指导方针并运行:
docker run --rm -v `pwd`:/project mingc/android-build-box bash -c 'cd /project; bundle exec fastlane dokka'
操作成功,但所有生成的文件都归根用户所有。这会破坏 CI,因为当不再需要它们时,我无法删除它们。
我试图通过 CI 用户:
docker run --rm --user $(id -u):$(id -g) -v `pwd`:/project mingc/android-build-box bash -c "cd /project; bundle install --deployment; bundle exec fastlane dokka"
我得到错误:
/不可写。 Bundler 将临时使用 `/tmp/bundler20200511-6-m21qkb6' 作为您的主目录。 捆绑器:加载命令失败:fastlane (/usr/local/bin/fastlane) Bundler::GemNotFound:在任何源中都找不到 aws-eventstream-1.1.0
所以我尝试在bundle exec 之前调用bundle install --deployment,现在我得到了错误:
fileutils.rb:232:in `mkdir': [!] Permission denied @ dir_s_mkdir - /.fastlane (Errno::EACCES)
我用谷歌搜索了这个错误,发现了很多报告,但没有一个包含有用的答案,无论如何,这并不理想,因为 docker 映像已经安装了 fastlane gem,如果能够无需重新安装即可使用。
另一种解决方案是让容器以 root 用户身份运行,然后在使用文件后删除它们。此解决方案也不理想,因为我必须记住删除创建的每个文件,但容器除外。
【问题讨论】:
标签: ruby docker jenkins fastlane