Jenkins+UIAutomation自動化スクリプト実行app
2659 ワード
ここでjenkinsでサブノードを構成し、スクリプトにはmasterでスクリプトを実行するかslaveでスクリプトを実行するかの判断スクリプトが含まれています.
マスターノードかどうかを判断し、そうであればローカルのipaをjenkinsのworkspaceディレクトリにコピーします.そうでなければマスターマシンのipaパッケージディレクトリからslaveマシンのworkspaceディレクトリにipaパッケージをコピーします
スクリプトの実行
上のスクリプトの機能:テストレポート出力ディレクトリを作成してslaveノードかどうかを判断し、そうであればmasterノードからスクリプトファイルをslaveノードにコピーしtuneupスクリプトエンジンを使用してスクリプトを実行し、スクリプト実行結果を出力します.
SERVER_HOME=$JENKINS_HOME/jobs/$JOB_NAME
ATTACHED_PROJECT=iOS_Mobile_Project
echo "node_name = $NODE_NAME, node_labels = $NODE_LABELS"
echo "master_ip = $MASTER_IP, mster_user = $MASTER_USER"
echo "excutor_number = $EXECUTOR_NUMBER"
if [ "$NODE_NAME" != master ]; then
WORKSPACE_COMMON=$WORKSPACE/workspace
echo "run in slave($NODE_LABELS)"
rm -f $WORKSPACE_COMMON/*.ipa
scp $MASTER_USER@$MASTER_IP:$SERVER_HOME/../$ATTACHED_PROJECT/workspace/build/Debug-iphoneos/*.ipa $WORKSPACE_COMMON/
else
WORKSPACE_COMMON=$WORKSPACE
cp $JENKINS_HOME/jobs/$ATTACHED_PROJECT/workspace/build/Debug-iphoneos/*.ipa $WORKSPACE_COMMON/
fi
上のスクリプトの機能:マスターノードかどうかを判断し、そうであればローカルのipaをjenkinsのworkspaceディレクトリにコピーします.そうでなければマスターマシンのipaパッケージディレクトリからslaveマシンのworkspaceディレクトリにipaパッケージをコピーします
スクリプトの実行
SERVER_HOME=$JENKINS_HOME/jobs/$JOB_NAME
# not master node, need to download scripts from master
if [ "$NODE_NAME" != master ]; then
WORKSPACE_COMMON=$WORKSPACE/workspace
else
WORKSPACE_COMMON=$WORKSPACE
fi
#slave paths
TUNEUP_HOME=$WORKSPACE_COMMON/../../tuneup_engine
APP_PATH=$WORKSPACE_COMMON/build/Debug-iphoneos/xxx.app
AUTO_TEST_SCRIPT_DIR=$WORKSPACE_COMMON/scripts
AUTO_TEST_REPORT_DIR=$WORKSPACE/reports
REPORT_FILE_DIR=$AUTO_TEST_REPORT_DIR/$BUILD_NUMBER
if [ ! -d "$AUTO_TEST_SCRIPT_DIR" ]; then
mkdir -p $AUTO_TEST_SCRIPT_DIR
fi
if [ ! -d "$AUTO_TEST_REPORT_DIR" ]; then
mkdir -p $AUTO_TEST_REPORT_DIR
fi
if [ ! -d "$REPORT_FILE_DIR" ]; then
mkdir -p $REPORT_FILE_DIR
fi
# not master node, need to download scripts from master
if [ "$NODE_NAME" != master ]; then
#copy tuneup_engine to slave
echo "run in slave($NODE_LABELS)"
rm -f $AUTO_TEST_SCRIPT_DIR/*
scp -r $MASTER_USER@$MASTER_IP:$SERVER_HOME/workspace/scripts $AUTO_TEST_SCRIPT_DIR/../
fi
set +e
INSTRUMENTS_TRACE_FILE="Instruments.trace"
SCREENSHOTS_DIR="Run 1"
cd $AUTO_TEST_SCRIPT_DIR
for script_file in `ls test*.js`
do
echo "$script_file"
$TUNEUP_HOME/test_runner/run $APP_PATH $script_file $REPORT_FILE_DIR -x -v -c -d dynamic
if [ -d "$INSTRUMENTS_TRACE_FILE" ]; then
mv $INSTRUMENTS_TRACE_FILE Instruments_$script_file.trace
fi
if [ -d "$SCREENSHOTS_DIR" ]; then
mv $SCREENSHOTS_DIR Screenshots_$script_file
fi
done
set -e
上のスクリプトの機能:テストレポート出力ディレクトリを作成してslaveノードかどうかを判断し、そうであればmasterノードからスクリプトファイルをslaveノードにコピーしtuneupスクリプトエンジンを使用してスクリプトを実行し、スクリプト実行結果を出力します.