こちらは、「GENDA Advent Calendar 2023」 18日目の記事です。
はじめに
Xcode Cloud からTestFlight にアップロードすると
一律「テストに関するメモはありません。」と表示されていて
どのビルドが何に対応しているかがわからないという課題がありました。
これを「テストに関するメモ」を自動生成して解決します。
動作環境
- Xcode Cloud
- TestFlight
が使える環境
コミットログを表示してみる
「テストに関するメモ」を表示させるには、TestFlight/WhatToTest.<LOCALE>.txt
を作成する必要があります。
まずはAppleのサンプルを参考に動的にコミットログを出してみましょう。
-
ci_post_xcodebuild.sh
を作成します。ci_scripts/ci_post_xcodebuild.sh#!/bin/zsh # ci_post_xcodebuild.sh if [[ -d "$CI_APP_STORE_SIGNED_APP_PATH" ]]; then TESTFLIGHT_DIR_PATH=../TestFlight mkdir $TESTFLIGHT_DIR_PATH git fetch --deepen 3 && git log -3 --pretty=format:"%s" >! $TESTFLIGHT_DIR_PATH/WhatToTest.en-US.txt fi
-
作成したスクリプトファイルに実行権限を与えます。
chmod +x ci_post_clone.sh
これが
このように表示することができました。
PRのタイトルを表示する
次にPRからビルド実行された場合はPRのタイトルを出したいので修正していきます。
-
ci_post_clone.sh
を作成してjqコマンドをインストールします。ci_scripts/ci_post_clone.sh#!/bin/zsh # ci_post_clone.sh brew install jq
-
ci_post_xcodebuild.sh
にGithub API を使ってPRタイトルを取得する部分を追加していきます。ci_scripts/ci_post_xcodebuild.sh#!/bin/zsh # ci_post_xcodebuild.sh WHAT_TO_TEST="" if [ -n "$CI_PULL_REQUEST_NUMBER" ]; then PR_INFO=$(curl -s \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "X-GitHub-Api-Version: 2022-11-28" \ "https://api.github.com/repos/$CI_PULL_REQUEST_TARGET_REPO/pulls/$CI_PULL_REQUEST_NUMBER") # https://stackoverflow.com/questions/52399819/invalid-string-control-characters-from-u0000-through-u001f-must-be-escaped-us PR_TITLE=$(printf '%s\n' "$PR_INFO" | jq -r '.title') WHAT_TO_TEST="[PR#$CI_PULL_REQUEST_NUMBER]\n$PR_TITLE\n" fi COMMIT=$(git fetch --deepen 3 && git log -3 --pretty=format:"%s") WHAT_TO_TEST=${WHAT_TO_TEST}"[COMMIT]\n$COMMIT" if [[ -d "$CI_APP_STORE_SIGNED_APP_PATH" ]]; then TESTFLIGHT_DIR_PATH=../TestFlight mkdir $TESTFLIGHT_DIR_PATH echo "$WHAT_TO_TEST" >! $TESTFLIGHT_DIR_PATH/WhatToTest.en-US.txt fi
良いTestFlightライフを
参考