Ошибка установки модуля для частного модуля, который обслуживается как двоичный файл из частного репо

У меня есть частный модуль и репозиторий для частных спецификаций. Я обслуживаю модуль как двоичный, т.е. в спецификации модуля указано:

s.source = { 
  :http => 'https://github.com/COMPANY/PROJECT/releases/download/v1.0/PrivatePod.zip' 
}

Мой подфайл содержит следующую исходную информацию:

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

Когда я запускаю pod install, git запрашивает пароль для клонирования моего частного репозитория спецификаций, и это здорово.

Однако pod install пытается получить двоичный zip-пакет, используя curl без аутентификации, поэтому GitHub возвращает 404:

Installing PROJECT 1.0 (was 1.0)

[!] Error installing PROJECT [!] /usr/bin/curl -f -L -o /var/folders/_g/52mwshws60v8622n81hv7h7w0000gn/T/d20170608-80045-1l3flqz/file.zip https://github.com/COMPANY/PROJECT/releases/download/v1.1/PrivatePod.zip --create-dirs --netrc-optional
...
curl: (22) The requested URL returned error: 404 Not Found

Я не хочу обнародовать двоичный файл. Есть ли способ указать CocoaPods выполнить здесь некоторую авторизацию?

Я попытался ввести учетные данные в .netrc, которые CocoaPods, похоже, с радостью использует, но GitHub по-прежнему не выполняет запрос с 404, хотя я вижу, что curl теперь использует базовую аутентификацию. Если я делаю запросы API с помощью curl, используя netrc для аутентификации, я получаю ответы в порядке. Но я не могу скачать актив релиза.

Я могу получить ресурс выпуска из конечной точки api с помощью .netrc, но только если я укажу -H 'Accept: application/octet-stream', чего я не понимаю, как заставить CocoaPods делать это.


person i_am_jorf    schedule 08.06.2017    source источник
comment
Возможное решение: stackoverflow.com/questions/ 43885763 /?   -  person Larme    schedule 13.06.2017
comment
Я видел этот обходной путь. Проблема в том, что вам нужно зафиксировать бинарные файлы релиза вместо того, чтобы использовать Github для размещения битов, отличного от SCM.   -  person i_am_jorf    schedule 19.06.2017
comment
Служба поддержки GitHub заявляет, что просто не поддерживает аутентификацию для загрузки релизов. Они добавили его во внутренний список запросов функций, который, вероятно, будет игнорироваться навсегда. Ну что ж. Ответ: НЕВОЗМОЖНО. Разместите эту хрень где-нибудь еще.   -  person i_am_jorf    schedule 19.06.2017
comment
Вам это нужно только для себя / небольшой группы пользователей? Один из подходов, который кажется работающим, - это имитация завитка: напишите сценарий оболочки, который, учитывая аргументы завитка, будет делать правильные вещи, а затем замените реальный завиток, поместив символическую ссылку на ваш фальшивый завиток ранее в пути (например, / usr / местный / бен). Конечно, это плохо масштабируется, поскольку каждый пользователь библиотеки должен будет проделать один и тот же взлом. Также есть github.com/CocoaPods/cocoapods-downloader, но я не уверен, как это работает.   -  person David Airapetyan    schedule 10.08.2017
comment
Моя цель - бинарное распространение для третьих лиц. Решение состоит в том, чтобы просто не размещать бинарные пакеты на github, поскольку они не поддерживают аутентификацию для вызовов, отличных от api, что было подтверждено их службой поддержки.   -  person i_am_jorf    schedule 10.08.2017
comment
Здесь возникает та же проблема ... Может быть, мы сможем это исправить, отправив PR в CocoaPods, чтобы включить отсутствующий заголовок? Что вы думаете?   -  person electronix384128    schedule 17.10.2017
comment
Вы могли бы попробовать. Я больше не работаю в компании, которой требовалось это решение.   -  person i_am_jorf    schedule 21.10.2017


Ответы (1)


GitHub просто не поддерживает это. Решение: не размещайте двоичный файл на github, если репо, на котором он размещен, является частным.

Служба поддержки GitHub заявляет, что просто не поддерживает аутентификацию для загрузки релизов. Они добавили его в список запросов на внутреннюю функцию.

person i_am_jorf    schedule 10.08.2017