Cocoapods "pod update" устанавливает старые контейнеры

Я пытаюсь настроить CI на Xcode Server, создав бота для приложения iOS. Я использую CocoaPods, поэтому я использую script ниже, чтобы установить контейнеры:

export LANG=en_US.UTF-8
#!/bin/bash
cd "$XCS_SOURCE_DIR/{PROJECTNAME}"
if [ -e "Pods" ]
then
/usr/local/bin/pod update
else
/usr/local/bin/pod install
fi

Текущая версия CocoaPods 0.39.0 установлена ​​на сервере. Когда я запускаю обновление "pod update" на сервере, все в порядке, и установлены новейшие модули.

Using FBAudienceNetwork (4.7.0)
Using FBSDKCoreKit (4.8.0)
Using Fabric (1.6.1)
Using FyberSDK (8.1.2)
Using Google-Mobile-Ads-SDK (7.6.0)
Using GoogleAnalytics (3.14.0)

Когда я использую script выше, однако что-то странное происходит.

Installing FBAudienceNetwork (4.1.0)
Installing FBSDKCoreKit (4.4.0)
Installing Fabric (1.2.8)
Installing FyberSDK (7.2.4)
Installing Google-Mobile-Ads-SDK (7.3.1)
Installing GoogleAnalytics (3.13.0)

Кто-нибудь знает, почему старые версии установлены с помощью script? Я использую OS X Server 5.0.15 и Xcode 7.2.

Подкайл:

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, "8.0"
use_frameworks!

target "{PROJECTNAME}" do
    inhibit_all_warnings!

    pod 'AFNetworking'
    pod 'Branch'
    pod 'SwrveSDK'
    pod 'RealmSwift'
    pod 'MZTimerLabel'
    pod 'pop' 
    pod 'Adjust'
    pod 'JSQMessagesViewController'
    pod 'Fabric'
    pod 'Crashlytics'
    pod 'GoogleAnalytics'
    pod 'FBSDKCoreKit'
    pod 'FyberSDK'
    pod 'AdColony'
    pod 'Google-Mobile-Ads-SDK'
    pod 'ChartboostSDK'
    pod 'FBAudienceNetwork'
    pod 'VungleSDK-iOS'
end

target "{PROJECTNAME}Tests" do
    inhibit_all_warnings!

    pod 'AFNetworking'
    pod 'Branch'
    pod 'SwrveSDK'
    pod 'RealmSwift'
    pod 'MZTimerLabel'
    pod 'pop'
    pod 'Adjust'
    pod 'JSQMessagesViewController'
    pod 'Fabric'
    pod 'Crashlytics'
    pod 'GoogleAnalytics'
    pod 'FBSDKCoreKit'
    pod 'FyberSDK'
    pod 'AdColony'
    pod 'Google-Mobile-Ads-SDK'
    pod 'ChartboostSDK'
    pod 'FBAudienceNetwork'
end

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['ENABLE_BITCODE'] = 'NO'
        end
    end
end

Ответы

Ответ 1

Теперь у меня это работает! Я не знал о пользователе _xcsbuildd, который делает сборки. Я нашел здесь больше об этом: https://honzadvorsky.com/articles/2015-08-17-17-30-xcode_server_tutorials_3_prebuild__postbuild_scripts/

Итак, после входа в систему этим пользователем я увидел ту же проблему в терминале на сервере. Были загружены старые версии стручков. У главного репозитория CocoaPods есть некоторая ошибка, поэтому я сделал

rm -rf ~/.cocoapods/repos/master

Затем я запустил

pod setup --verbose

И мастер-репозиторий с параметрами Cocoapods был установлен снова. Теперь он работает!

Ответ 2

Для тех, кто сталкивается с этой проблемой с более новыми библиотеками, например:

  • Вход в Facebook
  • 'FBSDKLoginKit'
  • 'FBSDKShareKit'
  • 'FBSDKCoreKit'

вам нужно обновить свои коко файлы до последней версии (в настоящее время 1,2)

Я сделал следующее, что сработало: (Предупреждение Cocoapods, кажется, сидит на холостом ходу целую вечность, но я думаю, что он что-то делает.) Следуйте первым двум шагам от @youritrg выше в терминале:

rm -rf ~/.cocoapods/repos/master
pod setup --verbose 

Теперь у вас должна быть обновленная установка. Затем я обновил:

sudo gem install cocoapods

После установки Facebook Cocoapods установлены отлично.

Ответ 3

Для меня удаление всего, а затем удаление мастер-репо работало

gem list --local | grep cocoapods
sudo gem uninstall cocoapods
sudo gem uninstall cocoapods-core
sudo gem uninstall cocoapods-deintegrate
sudo gem uninstall cocoapods-downloader 
sudo gem uninstall cocoapods-plugins
sudo gem uninstall cocoapods-search
sudo gem uninstall cocoapods-stats
sudo gem uninstall cocoapods-trunk
sudo gem uninstall cocoapods-try

затем

rm -rf ~/.cocoapods/repos/master
sudo gem install cocoapods

затем

pod setup --verbose

Ответ 4

Извините за то, что выкалываете старый поток, но у меня была аналогичная проблема с Firebase/Admob, которая не обновляется. Я получил ту же ошибку, что и другие, упомянутые выше. Я пробовал все, что упоминалось выше, но для меня единственный способ, которым я мог правильно настроить стручки, - это прокомментировать строку

use_frameworks!

Я знаю, что это должно быть включено, поскольку я использую Swift, но теперь он работает нормально. Если у кого-нибудь есть мысли о том, почему, я хотел бы знать, что происходит!