有没有办法从命令行自动创建Xcode项目的方案

时间:2017-12-15 14:13:03

标签: xcode xcodebuild xcode-project xcodeproj

我试图配置CI管道并自动运行单元测试,但我没有处理当前工作空间的方案。我知道我可以通过使用Xcode / Manage Schemes等来创建它们......但是由于测试例程中自动化的本质,我想知道是否有自动化方案创建步骤的方法

1 个答案:

答案 0 :(得分:0)

首先要测试Xcode项目是否必须使用至少一个配置为运行测试的方案。之后,应该使用xcodebuild从命令行运行测试。因此,有两个步骤要实现,首先自动生成所需的方案,然后运行测试配置方案的测试。

1-通过在脚本中使用ruby gem CocoaPods/Xcodeproj,我能够执行方案的创建。以下代码为所有目标创建方案:

#!/usr/bin/env ruby
# fix_schemes.rb

require 'xcodeproj'
project_path = '/your_path/your_project.xcodeproj'
project = Xcodeproj::Project.open(project_path)

第1步(确定)

2-创建一个shell脚本以从命令行运行测试。可以编辑此脚本接收,以包括必须运行测试的方案,逐个循环方案,直到所有测试通过或者一个失败。

#!/bin/bash
#!/bin/bash -e
# build-test.sh

# Set bash script to exit immediately if any commands fail.
set -e

## declare the schemes to test
declare -a arr=("Scheme01UnitTests" "Scheme02UnitTests")

## Parameters
## -s The SDK to use (iphoneos, iphonesimulator) default "iphonesimulator"
## -o The simulator Operating System, default 11.2
## -c Configuration (Debug, Release), default Debug


SDK="iphonesimulator"
OS=11.2
CONFIG="Debug"

#Parsing arguments
while getopts "s:o:c:" option; do
  case $option in
    s ) SDK=$OPTARG
    ;;
    o ) OS=${OPTARG}
    ;;
    c ) CONFIG=${OPTARG}
    ;;
  esac
done

echo "Using OS: $OS"
echo "Using SDK: $SDK"
echo "Using Configuration: $CONFIG"

## now loop through the above array
for s in "${arr[@]}"
    do
        echo "***************************************"
        echo "**   Test $s"
        echo "***************************************"
        cmd="set -o pipefail && env \"NSUnbufferedIO=YES\" xcodebuild -workspace MyWorkspace.xcworkspace -scheme $s -sdk $SDK -destination 'platform=iOS Simulator,name=iPhone 6s,OS=$OS' -configuration $CONFIG test | xcpretty -r junit --no-color -o 'build/reports/TEST-${s}.xml'"

        eval $cmd
    done
exit 0;

第2步(确定)

希望这有帮助!