![](/img/trans.png)
[英]How to read .xcconfig file constants with ruby to use them as Fastlane lane variables?
[英]How to run a fastlane lane in a docker image on Jenkins
我正在使用 Jenkins 來運行 CI。 我正在使用 docker 映像mingc/android-build-box
在容器中運行快車道 ( dokka
)。 如果我遵循此處建議的指南並運行:
docker run --rm -v `pwd`:/project mingc/android-build-box bash -c 'cd /project; bundle exec fastlane dokka'
操作成功,但所有生成的文件都歸 root 所有。 這會破壞 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' 作為您的主目錄。 bundler:加載失敗命令:fastlane (/usr/local/bin/fastlane) Bundler::GemNotFound:在任何源中都找不到 aws-eventstream-1.1.0
所以我嘗試在bundle install --deployment
之前調用 bundle bundle exec
,現在我得到了錯誤:
fileutils.rb:232:in `mkdir': [.] Permission denied @ dir_s_mkdir - /:fastlane (Errno::EACCES)
我用谷歌搜索了這個錯誤,我發現了很多報告,但沒有一個包含有用的答案,無論如何,這並不理想,因為 docker 圖像已經安裝了 fastlane gem,能夠在沒有的情況下使用它會很好不得不重新安裝它。
另一種解決方案是讓容器以 root 用戶身份運行,然后在使用文件后刪除文件。 該解決方案也不理想,因為我必須記住刪除創建的每個文件,但容器除外。
如果您在 Jenkins 中運行它,它的標准 Docker 支持會為您處理安裝、權限等。 在腳本化的管道代碼中,應該足夠了
docker.inside('mingc/android-build-box') {
sh 'bundle exec fastlane dokka'
}
Jenkins 會將WORKDIR
掛載到容器中(在相同的路徑上),以相同的用戶 ID 運行,保持相同的工作目錄,等等。 您可以在其日志中看到它使用的(相當長的) docker run
命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.