22

我正在使用 Jenkins 设置 CI 系统,但发现构建失败,因为 xcodebuild 在我执行该行时报告没有方案

-xcodebuild -workspace XXX -scheme NNN。

我不知道为什么会发生这种情况,所以为了消除我的工作区的一些麻烦,我使用 XCode 创建了一个新的项目模板,发现我在任何 xcodebuild 命令和任何工作区/项目的行为上都有所不同.

模板项目被称为废品,如果从终端命令行我运行这个命令,例如:

  xcodebuild -list

它输出

Information about project "scrap":
    Targets:
        scrap

    Build Configurations:
        Debug
        Release

    If no build configuration is specified and -scheme is not passed then "Release" is used.

    Schemes:
        scrap

但是,如果我从 Jenkins 中运行 xcodebuild -list,那么输出将是:

Building in workspace /Users/Shared/Jenkins/Home/workspace/scrap
[scrap] $ /bin/sh -xe /var/folders/ph/s6dvlfq9769741g_yzmjlmz000007c/T/hudson3765407964219991487.sh
+ xcodebuild -list
Information about project "scrap":
    Targets:
        scrap

    Build Configurations:
        Debug
        Release

    If no build configuration is specified and -scheme is not passed then "Release" is used.

    This project contains no schemes.

这是最简单的 jenkins 作业 - 我所做的就是创建一个新作业,将其设置为自由风格的软件项目,然后添加 Execut shell 的构建步骤并添加 xcodebuild -list 命令,就是这样。

为什么 xcodebuild 说有方案时没有方案?为什么它在 Jenkins 内部运行时表现不同?

4

2 回答 2

32

发现您需要做的就是设置要共享的方案。方案 > 管理方案 确保选中“共享”。

这将生成一个新的文件夹/文件 .../xcshareddata/xcschemes/???.xcscheme

将此文件检查到您的源代码管理中,并且方案现在应该出现在您的 jenkins 框中。

于 2012-11-21T23:06:14.733 回答
0

您必须忽略.gitignore 文件中的.xcodeproj/xcuserdata/ .xcuserdatad 。xcodebuild -list 从.xcodeproj/xcuserdata/ .xcuserdatad/xcschemes 获取方案。jenkins服务器没有这个文件所以没有获取方案,你可以在你的jenkins服务器中打开*.xcodeproj,它会创建文件然后执行xcodebuild -list可以得到当前的方案。我有同样的问题,通过上面的方法解决了.

于 2016-06-20T02:39:23.683 回答