GitLab CI с Docker, Fastlane и Cocoapods не работает - PullRequest
0 голосов
/ 28 марта 2019

Нужна отчаянная помощь:

Уже задан вопрос с gitlab-runner register в качестве "оболочки", я пытаюсь задать очень похожий вопрос здесь с gitlab-runner register в качестве "докера".

Уже 3 дня я пытаюсь запустить Gitlab CI (используя docker, fastlane - все для iOS-приложения с зависимостями Cocoapods).

Вот сообщение об ошибке, которое выдает GitLab CI:

enter image description here

Я сделал следующие шаги:

  1. установить fastlane ( ссылка на страницу fastlane )

  2. создайте проект GitLab и загрузите репозиторий вашего проекта ( ссылка на GitLab )

  3. установить gitlab-runner в MacOS, , выполнив следующие действия ...

  4. установить Docker (для рабочего стола), зарегистрироваться здесь и загрузить приложение

  5. зарегистрируйте gitlab-runner (то есть откройте терминал и введите следующее): (ваш токен можно найти в GitLab -> Настройки -> CI / CD)

sudo gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --registration-token "TOKENABCDEFG" \
  --description "MyApp runner with ruby-2.6" \
  --tag-list ios \
  --executor "docker" \
  --docker-image ruby:2.6
  1. запуск приложения Docker на вашем Mac

  2. запустить образ докера (набрав в своем терминале следующее:)

docker run -d --name gitlab-runner --restart always \
  -v /Users/Shared/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

После этого любой толчок git в репозитории проекта GitLab автоматически запустит конвейер.

Я также попытался использовать локальную оболочку (вместо докера) - но безуспешно, либо , как описано здесь .

Что бы я ни пытался, я всегда получаю одно и то же сообщение об ошибке:

enter image description here

[08:48:04]: Driving the lane 'ios tests' ?
[08:48:04]: -----------------------
[08:48:04]: --- Step: cocoapods ---
[08:48:04]: -----------------------
[08:48:04]: Using deprecated option: '--clean' (true)
[08:48:04]: $ cd '.' && bundle exec pod install
[08:48:04]: ▸ WARNING: CocoaPods requires your terminal to be using UTF-8 encoding.
[08:48:04]: ▸ Consider adding the following to ~/.profile:
[08:48:04]: ▸ export LANG=en_US.UTF-8
[08:48:04]: ▸ 
[08:48:04]: ▸ bundler: failed to load command: pod (/usr/local/bundle/bin/pod)
[08:48:04]: ▸ CLAide::Help: [!] 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

А вот фастфайл:

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

1 Ответ

0 голосов
/ 29 марта 2019

Я наконец-то нашел решение:

Вашему gitlab-runner register не разрешено иметь sudo.

По некоторым причинам существует множество учебных пособий, которые показывают по-другому (например, с sudo) - например, это видео или другие ...

В любом случае, на Mac вам абсолютно необходимо оставить sudo и абсолютно зарегистрироваться как "shell" исполнитель для GitLab (т.е. не "docker")")

Вот лучшее учебное пособие, которое я нашел о том, как Gitlab CI для iOS-проекта.

...