我无法让GitLab CI与Fastlane和Cocoapods一起使用。
这是我在Gitlab-CI期间收到的错误消息:
[!] You cannot run CocoaPods as root.
以下是GitLab CI日志的屏幕截图:
这是我写入MacOS终端的gitlab-runner注册代码:
sudo gitlab-runner register \
--non-interactive \
--url "https://gitlab.com/" \
--registration-token "ABCDEFG21sadfSAEGEAERE" \
--description "MyApp runner with shell" \
--tag-list ios \
--executor "shell"
之后,我在终端中输入
sudo gitlab-runner start
和...
sudo gitlab-runner run
在run
cmd之后,任何git push将导致GitLab CI启动新的管道。到目前为止,还算不错:)
但是几秒钟后,发生上述错误。这与可可足有关。
如何在CI期间使Gitlab(和/或Fastlane)识别Podfile?
这是我的Fastfile:
update_fastlane
default_platform(:ios)
platform :ios do
def install_pods
cocoapods(
clean: true,
podfile: "./Podfile",
try_repo_update_on_error: true
)
end
lane :tests do
install_pods()
gym(configuration: "Release",
workspace: "MyApp.xcworkspace",
scheme: "MyApp",
clean: true,
output_name: "MyApp.ipa")
# increment_build_number
scan(workspace: "MyApp.xcworkspace",
devices: ["iPhone SE", "iPhone XS"],
scheme: "MyAppTests")
end
我尝试了许多其他Podfile路径,甚至尝试在Docker容器上运行所有内容。但是同样,错误[!] You cannot run CocoaPods as root
仍然存在。怎么了?
这是我的.gitlab-ci.yml文件:
stages:
- unit_tests
variables:
LC_ALL: "en_US.UTF-8"
LANG: "en_US.UTF-8"
before_script:
- gem install bundler
- bundle install
unit_tests:
dependencies: []
stage: unit_tests
artifacts:
paths:
- fastlane/screenshots
- fastlane/logs
script:
- bundle exec fastlane tests
tags:
- ios
任何帮助表示赞赏。您如何使CI识别Podfile?
答案 0 :(得分:1)
我通过添加-user选项解决了我的问题。像
sudo gitlab-runner run -user <my_username>
答案 1 :(得分:0)
我终于找到了解决方法:
也不允许您的gitlab-runner register
拥有sudo
。
由于某些原因,有很多教程显示的内容不同(例如,this video或其他内容)。
无论如何,正如@Scriptable所指出的,在Mac上,您绝对需要将sudo留在外面!
Here is the best tutorial I have found,介绍如何Gitlab CI一个iOS项目。