一些背景。我有一个 Xcode 项目,目前我有三种构建配置(AdHoc、Debug 和 Release),但很可能会再添加一个。用于项目存档构建的构建配置在方案的存档部分中定义。
我使用 xcodebuild 作为 Jenkins 作业的一部分,并使用 -configuration 选项指定要使用的构建配置。
我发现“clean”命令(xcodebuild clean blah.blah.blah)尊重 -configuration 选项,但 archive 命令不这样做,它将使用方案的 Archive 部分中指定的任何内容。
因此,如果我想将构建从它设置的任何内容更改为,例如从 AdHoc 更改为 Release,我需要修改该方案。
我想出了一个 sed 命令,它将在方案文件中查找并将任何出现的 buildConfiguration = "Adhoc" 替换为 buildConfiguration = "Release",即:
my_build_configuration="Release"
sed -i '' -e 's/buildConfiguration = "[^"]*"/buildConfiguration = "'$my_build_configuration'"/' path/to/file
问题是这不仅适用于 ArchiveAction 项目,而且适用于所有项目(构建、运行、测试等...)如果可能的话,我希望专门针对 Archive 操作,但我不确定该怎么做这使用 sed。
这是我想要搜索的内容:
<ArchiveAction
buildConfiguration = "Adhoc"
然后我想只替换双引号中的值,例如;将 AdHoc 更改为 Release,所以它看起来像
<ArchiveAction
buildConfiguration = "Release"
我不太确定从哪里开始