带有Fastlane和Cocoapods的GitLab CI无法正常工作

时间:2019-03-27 15:46:15

标签: continuous-integration realm gitlab cocoapods fastlane

我无法让GitLab CI与Fastlane和Cocoapods一起使用。

这是我在Gitlab-CI期间收到的错误消息:

enter image description here

[!] You cannot run CocoaPods as root.

以下是GitLab CI日志的屏幕截图:

enter image description here

enter image description here

这是我写入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?

2 个答案:

答案 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项目。