2017-12-15 6 views
0

CIパイプラインを設定してユニットテストを自動的に実行しようとしていますが、現在のワークスペースのスキームは扱っていません。私はXcode/Manage Schemesなどを使ってそれらを作成することができますが、テストルーチンの自動化の性質から、スキームの作成手順を自動化する方法があるかどうかを考え出しています。Xcodeプロジェクトのスキームをコマンドラインから自動作成する方法はありますか

+0

ローカルマシンで作成し、すべてをコミットしてCIに送信する前に、それらが「共有」されていることを確認する必要があります。 –

+0

以下、私はこのニーズに対応するためのソリューションを用意しました。そのようなことをする必要はなく、完全に自動化されています。とにかくヘルプのためにTnx。 – YadirHB

答えて

0

まず、Xcodeプロジェクトをテストするには、テストを実行するように構成された少なくとも1つのスキームを使用する必要があります。その後、xcodebuildコマンドラインからテストを実行する必要があります。したがって、2つのステップを実行して、最初に必要なスキームを自動的に生成し、次にテスト構成スキームのテストを実行します。

1-スクリプトでルビーの宝石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(OK)

2-コマンドラインからテストを実行するシェルスクリプトを作成します。このスクリプト受信は、テストが実行されなければならないスキームを含むように編集することができ、すべてのテストが成功するか失敗するまでスキームごとにスキームをループする。

#!/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(OK)

この情報がお役に立てば幸い!

関連する問題