在对私有 gitlab pod/project 容器执行“pod install”时,我收到“No podspec found”消息

Posted

技术标签:

【中文标题】在对私有 gitlab pod/project 容器执行“pod install”时,我收到“No podspec found”消息【英文标题】:I'm getting a "No podspec found" message when doing "pod install" against a private gitlab pod/project container 【发布时间】:2017-01-06 12:33:42 【问题描述】:

我正在进行一些 CocoaPods 项目,试图构建我自己的私有 Pod,可以通过我的主项目中的“pod install”访问。 这是一个 Swift 项目,一切似乎都在工作,阅读适当的教程等等......

我不得不说我已经使用 cocoapods 一段时间了,但我正在构建我自己的 pod 并将它们存储在我的私人 gitlab 空间中。

这似乎是我的问题:显然我不知道如何将我最近创建的 pod 正确存储在我的 gitlab 空间中。另外,运行“pod install”无法获取我的 podspec 文件。

我现在拥有的是一个主项目,带有一个 Podfile。在这个项目中,我对我的 pod 有下一个简单的定义(2 个公共(SpkinKit 和 MBProgressHUD)和 1 个私有,'commons'): 我的 Podfile 是这个:

# Uncomment this line to define a global platform for your project
platform :ios, '8.0'

target 'MyBaseApp' do
  # Comment this line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyBaseApp

  pod 'SpinKit'
  pod 'MBProgressHUD'
  pod 'commons', :path => 'ssh://git@internal_ip_numeric_address_of_my_gitlab_machine:2222/myusername/ios_commons_pod.git'

end

如果我输入“pod install --verbose”,我会得到以下输出:

Fetching external sources
-> Fetching podspec for `commons` from `ssh://git@internal_ip_numeric_address_of_my_gitlab_machine:2222/myusername/ios_commons_pod.git`
[!] No podspec found for `commons` in `ssh://git@internal_ip_numeric_address_of_my_gitlab_machine:2222/myusername/ios_commons_pod.git`

此崩溃不允许下载 pod,并且该过程在此处停止。

似乎有什么问题?据我了解,我在 gitlab 路径路径中有一个 podspec 文件。 看这个截图:

我使用的 URL 方案是 SSH 风格的方案,即出现在我的 gitlab 项目主页根目录上的方案(不是 HTTP/HTTPS 方案)。 这是项目的限制,所以我不能使用HTTP。

OTOH 我认为我的 SSH 凭据(和密钥设置)可以正常存储在我的机器上。为什么?因为我尝试从命令行对该 URL 使用 ssh shell,我可以在屏幕上看到“Welcome myusername”,而无需指定任何用户名和密码(然后出于安全原因,gitlab 机器注销该 shell,但这是另一个主题。那是预期的行为)。

无论如何,我仍然不确定应该在我的基础应用 Podfile 中使用什么确切的 URL 格式/路径。

在 gitlab 中,我的文件和 podspec 文件以最后一个屏幕截图中显示的结构存储,但我仍然不能 100% 确定我是否已设置一切正常。

我的 commons.podspec 文件的内容如下:

Pod::Spec.new do |s|

  # 1
  s.platform = :ios
  s.ios.deployment_target = '8.0'
  s.name = "commons"
  s.summary = "commons test fw via pod."
  s.requires_arc = true

  # 2
  s.version = "0.1.0"

  # 3
  s.license =  :type => "MIT", :file => "LICENSE" 

  # 4 - Replace with your name and e-mail address
  s.author =  "Me" => "my@email.address.com" 


  # 5 - Replace this URL with your own Github page's URL (from the address bar)
  s.homepage = "http://internal_ip_numeric_address_of_my_gitlab_machine:8888/myusername"

  # 6 - Replace this URL with your own Git URL from "Quick Setup"
  s.source =  :git => "http://internal_ip_numeric_address_of_my_gitlab_machine:8888/myusername/ios_commons_pod.git", :tag => "#s.version"

  # 7
  s.framework = "UIKit"
  s.dependency 'RNCryptor'

  # 8
  s.source_files = "commons/**/*.swift"

  # 9
  s.resources = "commons/**/*.png,jpeg,jpg,xib,storyboard"
end

有什么提示吗?

谢谢。

【问题讨论】:

【参考方案1】:

您需要一个单独的存储库来托管您的 pod 规范。

    创建存储库 将 PodSpec 存储库添加到您的计算机 pod repo add PodSpecs [Your PodSpecs Git URL] 将您的 pod 规范推送到 repo pod repo push PodSpecs your.podspec

信息来源:https://www.raywenderlich.com/99386/create-cocoapod-swift

【讨论】:

这就是我在所有麻烦之前运行的: pod repo add ios_commons_pod ssh://git@numeric_ip:2222/myusername/ios_commons_pod.git 然后 pod repo push ios_commons_pod commons.podspec --allow-warnings (允许警告是因为我的许可证文件仍然是假的并且不存在) 看着它,我认为您的问题是您需要创建一个实际的 PodSpec 存储库来存储您的版本化 pod 规范。我已经更新了我的答案以显示此基础知识,并且还包含了一个链接,指向我在前一周创建私人 pod 时使用的教程(尽管基于您的 PodSpec 文件,我认为您已经看过本教程:-P)跨度> 【参考方案2】:

您唯一需要做的就是将 :path => 更改为 :git =>,它应该会从您的存储库中下载 pod。

【讨论】:

以上是关于在对私有 gitlab pod/project 容器执行“pod install”时,我收到“No podspec found”消息的主要内容,如果未能解决你的问题,请参考以下文章

gitlab 搭建go modules私有仓库

使用来自 GitLab 的私有 gem 构建一个 Ruby 项目

如何通过 https 使用私有 GitLab 存储库作为带有私有令牌的 npm 依赖项

私有仓库Gitlab的安装与汉化

从私有 gitlab 注册表安装多个 npm 包

下载 GitLab 私有存储库