Jenkins+UIAutomation自動化スクリプト実行app


ここでjenkinsでサブノードを構成し、スクリプトにはmasterでスクリプトを実行するかslaveでスクリプトを実行するかの判断スクリプトが含まれています.
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スクリプトエンジンを使用してスクリプトを実行し、スクリプト実行結果を出力します.