GitHub ActionsからMagicPodのテストを実行するには、magicpod-api-clientを使い、以下の手順でクラウド端末または外部クラウドサービス端末を使ってテストを実行するのが簡単です。
目次
1.Fastlaneの実行設定ファイルを作成(モバイルアプリのみ)
モバイルアプリテストのみこの手順が必要となります。ブラウザテストの場合は2.シェルスクリプトを作成に進んでください。
今回、アプリのビルドにはFastlaneを使います。Fastlaneを使うにはFastfileという名前の実行設定が書かれたテキストファイルを作成します。
まず、ソースコードのあるリポジトリの最上位フォルダ下で、以下のコマンドを実行します。
mkdir fastlane
touch fastlane/Fastfile
するとfastlaneというディレクトリにFastfileというファイルが作成されます。
その作成されたFastfileに以下を記述します(今回はiOSアプリをビルドします)。詳細はこのドキュメントを参照してください。
default_platform(:ios)
platform :ios do
desc "Create app file". # 任意のlane説明文
lane :magicpod_create_app do # 任意のlane名
app_dir_path = "magicpod_created_app" # 作成したアプリファイルを格納する任意のディレクトリ
build_ios_app(
scheme: "magic_pod_demo_app", # Xcodeで指定しているscheme名。XcodeのProduct>Schemeより確認できます
project: "magic_pod_demo_app.xcodeproj", # Xcodeで指定しているproject名(もしくはworkspace)
configuration: "Debug",
export_method: "ad-hoc",
derived_data_path: app_dir_path,
skip_package_ipa: true,
skip_archive: true,
destination: "generic/platform=iOS Simulator"
)
# add actions here: https://docs.fastlane.tools/actions
end
end
2.シェルスクリプトを作成
MagicPodでテストを実行するシェルスクリプトを作成します。ソースコードのあるリポジトリの最上位フォルダ下で、以下のコマンドを実行します。
touch <任意のファイル名(例: run_magicpod_test)>.sh
すると任意のファイル名でシェルスクリプトファイルが作成されます。その作成されたシェルスクリプトに以下を記述します。
モバイルアプリの場合
#!/bin/bash -e
# (-eで、コマンドがエラーになった行で処理を終了させる)
# magicpod-apiクライアントの最新版を現在のディレクトリにダウンロード・解凍
# セキュリティのため、MAGICPOD_API_TOKENはGitHubの環境変数で設定
OS=mac # Windowsマシン上でのビルドの場合はwindows、Linuxはlinuxを指定
FILENAME=magicpod-api-client # 任意のファイル名
curl -L "https://app.magicpod.com/api/v1.0/magicpod-clients/api/${OS}/latest/" -H "Authorization: Token ${MAGICPOD_API_TOKEN}" --output ${FILENAME}.zip
unzip -q ${FILENAME}.zip
# MagicPodで使う各種環境変数を設定
export MAGICPOD_ORGANIZATION=<MagicPod組織名>
export MAGICPOD_PROJECT=<MagicPodプロジェクト名>
# 先ほど作成したappファイルをMagicPodにアップロードして、FILE_NOを取得
APP_PATH=<作成したアプリファイルを格納する任意のディレクトリ (例:magicpod_created_app)>/Build/Products/Debug-iphonesimulator/magic_pod_demo_app.app
FILE_NO=$(./magicpod-api-client upload-app -a ${APP_PATH})
# 先ほどアップロードしたアプリと、一括実行設定番号を使ってテスト一括実行
TEST_SETTING_NUMBER=<MagicPod一括実行設定番号>
./magicpod-api-client batch-run -S ${TEST_SETTING_NUMBER} -s "{\"app_file_number\":\"${FILE_NO}\"}"
# テストが成功した場合はアップロードしたアプリは削除(任意)
if [ $? = 0 ]; then
./magicpod-api-client delete-app -a ${FILE_NO}
fi
ブラウザテストの場合
#!/bin/bash -e
# (-eで、コマンドがエラーになった行で処理を終了させる)
# magicpod-apiクライアントの最新版を現在のディレクトリにダウンロード・解凍
# セキュリティのため、MAGICPOD_API_TOKENはGitHubの環境変数で設定
OS=mac # Windowsマシン上でのビルドの場合はwindows、Linuxはlinuxを指定
FILENAME=magicpod-api-client # 任意のファイル名
curl -L "https://app.magicpod.com/api/v1.0/magicpod-clients/api/${OS}/latest/" -H "Authorization: Token ${MAGICPOD_API_TOKEN}" --output ${FILENAME}.zip
unzip -q ${FILENAME}.zip
# MagicPodで使う各種環境変数を設定
export MAGICPOD_ORGANIZATION=<MagicPod組織名>
export MAGICPOD_PROJECT=<MagicPodプロジェクト名>
# 一括実行設定番号を使ってテスト一括実行
TEST_SETTING_NUMBER=<MagicPod一括実行設定番号>
./magicpod-api-client batch-run -S ${TEST_SETTING_NUMBER}
- セキュリティのため、
MAGICPOD_API_TOKEN
はGitHubの環境変数で設定します。- まず、https://github.com/<リポジトリ>/settings/secrets/actions に移動します。そして、New repository secretをクリックし、NameにはMAGICPOD_API_TOKENを、SecretにはMagicPodのAPIトークンからコピーした値を入れて設定します。
- 注意
TEST_SETTING_NUMBER=<MagicPod一括実行設定番号>
とは、テストケース番号ではなく、一括実行の設定番号です。
3.GitHub Actionsの実行設定ファイルを作成
ソースコードのあるリポジトリの最上位フォルダ下で、.github/workflowsディレクトリがまだ存在しない場合、以下のコマンドを実行して作成します。
mkdir -p .github/workflows
その.github/workflowsディレクトリ下に <任意のファイル名>.ymlという名前のファイルを作成します。
touch .github/workflows/<任意のファイル名(例: magicpod_test)>.yml
その作成されたymlファイルに以下を記述します。
モバイルアプリの場合
# Pushした時にこのワークフローを実行する
on: [push]
jobs:
# job名(任意のjob名)
magic_pod_job:
# virtual machineの形式を指定
runs-on: macos-latest # 今回はmacを指定
# job内のステップ
steps:
# ステップ1(チェックアウト)
- name: Checkout
uses: actions/checkout@v3 # actionsのバージョンは最新を指定
# ステップ2(Rubyをインストール)
- name: Set up ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.1.2
# ステップ3(Fastlaneをインストール)
- name: Install Fastlane
run: gem install fastlane
# ステップ4(brewをインストール)
- name: Setup brew
run: echo "/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin" >> $GITHUB_PATH
# ステップ5(Xcode 13.2.1 を選択)
- name: Select Xcode version
run: sudo xcode-select -s '/Applications/Xcode_13.2.1.app/Contents/Developer'
# ステップ6(Xcodeのバージョンを出力)
- name: Show Xcode version
run: xcodebuild -version
# ステップ7(アプリを作成する)
- name: Create app
run: fastlane magicpod_create_app # Fastfileで指定したlane名
# ステップ8(作成したアプリをMagicPodにアップロードし一括実行する)
- name: Batch run test
env:
MAGICPOD_API_TOKEN: ${{ secrets.MAGICPOD_API_TOKEN }} # GitHubで設定した変数名
run: bash run_magicpod_test.sh # 先ほど作成したシェルスクリプト
- この場合、インストールするFastlaneのバージョンは固定されません。固定させたい場合はこのページを参考にBundlerを使用してください。
ブラウザの場合
# Pushした時にこのワークフローを実行する
on: [push]
jobs:
# job名(任意のjob名)
magic_pod_job:
# virtual machineの形式を指定
runs-on: macos-latest # 今回はmacを指定
# job内のステップ
steps:
# ステップ1(チェックアウト)
- name: Checkout
uses: actions/checkout@v3 # actionsのバージョンは最新を指定
# ステップ2(MagicPodで一括実行する)
- name: Batch run test
env:
MAGICPOD_API_TOKEN: ${{ secrets.MAGICPOD_API_TOKEN }} # GitHubで設定した変数名
run: bash run_magicpod_test.sh # 先ほど作成したシェルスクリプト
4.動作確認
モバイルアプリの場合
以下のファイル全てをソースコードのあるリポジトリにPushすると、GitHubのActionsタブにて、FastlaneでビルドしたアプリをMagicPodでテスト実行していることが確認できます。
- 1で作成したFastfileという名前のテキストファイル
- 2で作成したMagicPodでテストを実行するシェルスクリプト
- 3で作成したymlファイル
ブラウザの場合
以下のファイル全てをソースコードのあるリポジトリにPushすると、GitHubのActionsタブにて、MagicPodでテスト実行していることが確認できます。
- 2で作成したMagicPodでテストを実行するシェルスクリプト
- 3で作成したymlファイル