向Artifactory Cocoapods存储库添加胖二进制框架

时间:2019-01-14 20:55:23

标签: ios cocoapods artifactory

我正在尝试将胖二进制.framework部署到Artifactory Cocoapods存储库中,但是在部署.tar.gz文件期间,Artifactory日志中显示的podspec解析错误。

复制步骤:

  1. 将包含FRAMEWORK.framework和FRAMEWORK.podspec的文件夹压缩到FRAMEWORK.tar.gz文件中(如written documentation中所述和video tutorial中所示)。
  2. 使用“设置我的方法”中所述的curl脚本将FRAMEWORK.tar.gz容器部署到Artifactory实例:

    curl -u<USER>:<PASSWORD> -XPUT https://<COMPANY>.jfrog.io/<COMPANY>/cocoapods-local/<FRAMEWORK>/<VERSION>/ -T <FRAMEWORK>.tar.gz

cocoapods本地存储库未自动将FRAMEWORK.podspec放入.specs文件夹中,如     视频教程。在Artifactory的系统日志中,包含错误的行:

  

2019-01-14 20:16:29,717 [http-nio-8081-exec-79] [INFO]   (o.a.e.UploadServiceImpl:376)-部署到   'cocoapods-local:FRAMEWORK / FRAMEWORK.tar.gz'内容长度:   27614214

     

2019-01-14 20:16:30,278 [http-nio-8081-exec-79]错误-提取时出错   Pod中的元数据:无法解析规范。

但是,当我从终端上使用pod spec lint时,FRAMEWORK.podspec已通过验证。 FRAMEWORK.podspec是

Pod::Spec.new do |s|
  s.name = "<FRAMEWORK>"
  s.version = "<VERSION>"
  s.ios.deployment_target = '9.0'
  s.summary = "<Framework>"
  s.description  = <<-DESC
                   <FRAMEWORK>
                  DESC

  s.homepage = "http://www.<COMPANY>.com"
  s.license      = { :type => 'proprietary', :text => <<-LICENSE
                     This software is only permitted to be used
                     by employees of <COMPANY> or
                     of its partners.
                     LICENSE
                   }
  s.author = { "company" => "techadmin@company.com" }
  s.source = { :http => "https://<COMPANY>.jfrog.io/<COMPANY>/cocoapods-local/<FRAMEWORK>/<VERSION>/<FRAMEWORK>.tar.gz", :type => 'tgz'}
  s.preserve_paths = "<FRAMEWORK>.framework*"
  s.vendored_frameworks = "<FRAMEWORK>.framework"
end

2 个答案:

答案 0 :(得分:1)

经历了同一天的几天!

最后发现,我在MacOS机器上生成的.tar.gz使用的是bsd tar(默认情况下随附)。从Linux机器运行相同的命令行得通!

起作用的是gnu tar。使用“ brew install gnu-tar”安装它

使用gnu tar的链接:https://medium.com/@fullsour/installing-gnu-tar-on-mac-827a494b1c1

然后将吊舱推入Jfrog人工制品! :D

答案 1 :(得分:1)

我遇到了这个问题,但没有成功地尝试通过人工制品使豆荚成为可消费的。我可以看到,我上传的tar.gz中显示了一个额外的podspec,看起来像._mypodspec.podspec。有关gnu tar和this question的答案使我走上了正确的轨道。

如果OSX上的tar必须存储额外的文件系统属性,则它可能会将其他文件添加到tarball中。在我的案例中,tar创建了一个额外的隐藏podspec文件,当尝试从工件中提取pod信息时,该文件可能会丢失工件。

因此,我猜想使用gnu tar的替代方法是在tar命令前加上COPYFILE_DISABLE=1,如the above question所示,如下所示:

COPYFILE_DISABLE=1 tar -zcvf...