Tengo un pod privado y un repository privado de especificaciones. Estoy sirviendo el pod como un binary, es decir, el podspec dice:
s.source = { :http => 'https://github.com/COMPANY/PROJECT/releases/download/v1.0/PrivatePod.zip' }
My Podfile tiene la siguiente información de origen:
source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/COMPANY/Specs.git'
Cuando ejecuto pod install
git solicita una contraseña para clonar mi repository privado de especificaciones, lo cual es genial.
Sin embargo, la pod install
trata de get el package zip binary utilizando curl
sin authentication, por lo que GitHub devuelve 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
No quiero hacer público el binary. ¿Hay alguna manera de decirle a CocoaPods que haga auth aquí?
Intenté poner cnetworkingenciales en .netrc
, que CocoaPods parece feliz de usar, pero GitHub aún falla la request con 404, aunque ahora veo que curl usa authentication básica. Si hago requestes de API con curl usando netrc para auth, obtengo respuestas muy bien. Pero no puedo download el activo de lanzamiento.
Puedo get el activo de liberación del punto final de la API usando .netrc, pero solo si especifico -H 'Accept: application/octet-stream'
, que no veo cómo puedo hacer que los CocoaPods lo hagan.
GitHub simplemente no es compatible con esto. Solución: no aloje el binary en github si el repository que lo hospeda es privado.