Travis CI - Swift 包管理 - 结账已经存在?

2024-01-08

尝试在配置为使用 Swift Package Manager 的项目中设置示例项目并收到奇怪的错误。

项目结构:

MyProject/
    - Package.swift
    MyProject/
        - etc...
    Samples/
        - MySampleProject/

Swift 包存储库设置:

MySampleProject设置为使用 travis 作业中应存在的本地 Swift 包:

file:///Users/travis/build/MyProject/MyProjectHEAD

特拉维斯构建命令:

travis 脚本 cd 到 Sample/MySampleProject 并运行:

xcodebuild clean build -target MySampleProject -sdk iphonesimulator

Error:

在运行过程中,travis 声称包的签出已经存在。

从日志中:

Resolve Package Graph

Fetching /Users/travis/build/<namespace>/MyProject

Cloning /Users/travis/build/<namespace>/MyProject

xcodebuild: error: Could not resolve package dependencies:

  An unknown error occurred. '/Users/travis/Library/Developer/Xcode/DerivedData/MySampleProject-agdvdspgtwakvignsmkkrkoxijnm/SourcePackages/checkouts/MyProject' exists and is not an empty directory (-4)

这在本地有效。为什么签出已经存在于 travis 构建的派生数据中?我没有运行任何特殊命令来修改有关 SPM 的任何内容。


需要意识到两件事:

  1. 该错误消息非常具有误导性。如果实际上没有要拉取的提交,您将收到此错误消息。

  2. 一位同事指出特拉维斯实际上正在使用refs/pull/$TRAVIS_PULL_REQUEST/merge的价值$TRAVIS_COMMIT

完整解决方案:

在plist中找到对应的对象XCRemoteSwiftPackageReference你可以通过打开找到这个YourProject.xcodeproj/project.pbxproj在文本编辑器中并搜索XCRemoteSwiftPackageReference。获取 ID,因为您需要在构建步骤中对其进行硬编码。

Note:如果删除并重新添加该软件包,则需要更新此内容。

接下来使用 PlistBuddy 将分支更新为拉取请求的合并引用。

    echo "Updating project file to point to merge commit at: refs/pull/$TRAVIS_PULL_REQUEST/merge"
    /usr/libexec/PlistBuddy \
        -c "set :objects:F4CEA53E23C29C9E0086EB16:requirement:branch refs/pull/$TRAVIS_PULL_REQUEST/merge" \
        YourProject.xcodeproj/project.pbxproj

    # Redirecting to /dev/null because we only care about errors here and the full output drowns Travis
    xcodebuild build -scheme YourScheme \
      -sdk iphonesimulator > /dev/null
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Travis CI - Swift 包管理 - 结账已经存在? 的相关文章

  • 在不使用PrepareForSegue的情况下在segue之间传递数据

    我正在使用情节提要创建一个用户设置帐户 分 5 个步骤 每个步骤都有一个 ViewController 1 输入姓名 联系人等 2 导入照片 3 输入等 4 更多输入 5 确认页面 如果用户单击 确认 gt 获取所有输入并上传到解析 当我在
  • Firebase数据库在批准后保存数据

    我在 iOS 应用程序上使用 firebase 数据库 我正在快速写作 我正在使用 发送 按钮在我的 firebaseDatabase 上写入数据 例如文本字段和标签值 有什么方法可以接受或拒绝我的数据库中的数据吗 我的意思是 如果用户向文
  • Swift 闭包异步执行顺序

    在我的模型中 有函数来获取需要完成处理程序作为参数的数据 func fetchMostRecent completion sortedSections TableItem gt self addressBook loadContacts c
  • 如何从Vuforia GL矩阵计算相机位置?

    我计算了 a 的相机位置SCNScene这是在 Vuforia 中渲染的 然而 物体并没有固定在标记上 而是在移动时跳跃 场景中的立方体仅以正交方式出现 无论设备如何围绕侧面移动都无法看到 相机位置是根据每一帧计算的 Get model v
  • 遵守协议并保持财产私有

    我需要将符合类中的协议属性用作私有属性 但编译器拒绝这样做 我怎样才能实现呢 protocol ProtocolX class var x Int get set func performAnyActionOnX extension Pro
  • Swift - 向每个页面添加相同的导航栏项目

    我正在尝试将相同的导航栏项目添加到应用程序中的每个选项卡 我目前已在我的 homeController 中正确设置了它们 但我想将代码移动到一个单独的文件中 并在我想要的任何地方远程实现它 例如 在导航栏左侧添加一个 搜索 图标 而不必在每
  • 带过滤器的 AudioKit 导出文件

    我想用音频套件的许多过滤器覆盖现有的 m4a 文件 我的代码 file try AKAudioFile forReading recordVoiceURL player AKPlayer audioFile file delay AKVar
  • 通过 NSDate 过滤 Realm 中的查询会抛出 NSInvalidArgumentException

    我到处寻找 甚至访问了一些带有永远不会消失的病毒警告消息的可疑网站 但我无法弄清楚这一点 我只是想过滤Results
  • 检测 AVPlayerViewController 是否正在播放视频或正在缓冲并向播放器添加覆盖

    我必须检测视频是否处于播放模式或缓冲模式 我正在从 URL 加载视频 我已经尝试了下面的代码 我可以在视频开始播放后进行跟踪 但不能在视频处于缓冲状态时进行跟踪 另外 我想在我的播放器中添加覆盖视图 我尝试在 AVPlayer 中添加叠加层
  • Swift 3 - 如何从另一个视图插入 TableView 单元格?

    我正在使用 Swift 3 Xcode 8 2 我试图弄清楚如何从选项卡式视图控制器的另一个选项卡将单元格插入到表视图中 我的表视图 class MyTableView UITableViewController var items Ite
  • 为 iPhone 创建 .ipa

    我为 iPhone 开发了一款应用程序 构建后 我在构建文件夹中得到了 app 文件 我的应用程序名称是Myapp 然后我在build文件夹中得到了Myapp app文件 我的问题是我想创建 ipa 文件 这是怎么回事 它是为了安装 越狱的
  • Swift 枚举内部是如何实现的?

    我最近问了一个问题C 中的通用枚举 结构 https stackoverflow com questions 68383728 if a uintptr t can be used to store both pointers and nu
  • 处理核心数据中的重复条目

    我有一个允许用户保存收藏夹的应用程序 我正在使用 Core Data 将收藏夹存储为托管对象 我已经编写了一些代码来防止存储重复项的可能性 但我想知道是否有更好的方法来做到这一点 每个收藏夹对象都有一个唯一的 ID 字段 在下面的代码中 我
  • 包含字符串和数字的数组

    在 Objective C 中 很容易创建一个异构数组 如下所示 NSArray myArray String1 String2 123 456 有什么方法可以快速创建这样的数组吗 如果是的话怎么办 Note 我在 swift 中尝试了类似
  • 连接到 Apple Music

    所以我尝试使用 React Native 应用程序从 iOS 设备连接到 Apple Music 有一个 API 可以执行相同的操作 但我需要从 storekit 框架调用一个函数 提出个性化请求 苹果音乐API https develop
  • 获取 Swift 子目录中资源的所有 URL

    我正在尝试为 iOS 应用程序的子目录中的所有资源创建 URL 数组 我似乎无法到达正确的路径 即使我不知道名称 我也希望能够检索 URL 即我不想将文件名硬编码到代码中 Below is a screen shot of the hier
  • 带约束的 Swift 动画

    是否可以通过改变约束来制作 UIView 动画 基本上 我想要动画myv UIView 具有 x y 高度和宽度约束 使用 UIView animateWithDuration 1 5 通过改变旧的限制 是的 这是可能的 你可以这样做 fu
  • 即时将图像添加到 AR 资源以进行图像识别

    ARKit1 5介绍图像识别 在代码中 您必须创建一组参考图像 如下所示 let referenceImages ARReferenceImage referenceImages inGroupNamed AR Resources bund
  • AVAudioMixerNode pan 或 AVAudioUnitSamplerstereoPan 属性无法更改 AVAudioEngine 声音输出的左/右平衡

    我有以下代码 它播放单个 MIDI 音符 但我希望能够调整平衡 平移 以便它仅从左扬声器或右扬声器或某些组合中播放 我认为更改 sampler stereoPan 或 engine mainMixerNode pan 也许可以解决问题 但它
  • 您可以严格泛型类型或为一个参数指定多个类型吗?

    例如我想指定一个类型可能是Integer or String并将其用作特殊类型func我试过typealias但它不会解决这个问题 因为类型别名不能有or参数作为其唯一用途 因此请考虑下面的情况 typealias alis StringP

随机推荐