Xcode Cloud – Auto-Generated Test Notes for TestFlight Build (PR Title, Commits, and JIRA Ticket Links)

Xcode Cloud auto-generated test notes for TestFlight with PR titles and JIRA links

No more put ‘No test notes’ at Test Flight

No test notes.

It’s not clear what to test using this build

Setup Xcode Cloud Workflow

To get a Github PR infos from Xcode Cloud, You should enable settings like below

Environment

  • Set your Github Token

  • Set Xcode Version – Latest Release

Start Conditions -> See Apple Document

  • CI_PULL_REQUEST_NUMBER

  • CI_PULL_REQUEST_SOURCE_COMMIT

  • CI_PULL_REQUEST_TARGET_COMMIT

To get CI_PULL_REQUEST variables You should set Pull Request Changes as Start Condition

Post Actions

  • Set Test Flight Internal Testing

 

ci_scripts/ci_post_clone.sh

#!/bin/sh
brew install jq

 

ci_scripts/ci_post_xcodebuild.sh

#!/bin/zsh
#  ci_post_xcodebuild.sh

# PR Description
GITHUB_REST_API_PR_INFO=$(curl -L\
  -H "Accept: 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")

# Fixed: parse error: Invalid string: control characters from U+0000 through U+001F must be escaped, https://stackoverflow.com/questions/52399819/invalid-string-control-characters-from-u0000-through-u001f-must-be-escaped-us
PR_TITLE=$(printf '%s\n' "$GITHUB_REST_API_PR_INFO" | jq -r '.title')

PR_DESCRIPTION=$(printf '%s\n' "GITHUB_REST_API_PR_INFO" | jq -r '.body')
PR_DESCRIPTION_URLS=$(echo "$PR_DESCRIPTION" | grep -Eo 'https?://[^[:space:]]+')
PR_DESCRIPTION_JIRA_TICKETS=$(echo "$PR_DESCRIPTION_URLS" | grep 'atlassian')

# GIT COMMITS
COMMIT_MESSAGES=$(git log $CI_PULL_REQUEST_TARGET_COMMIT^..$CI_PULL_REQUEST_SOURCE_COMMIT --pretty=format:"%s\n%b")
FORMATTED_COMMIT_MESSAGES=$(echo -e "$COMMIT_MESSAGES" | awk 'NF {print}' ORS='\n')

# TEST FLIGHT - What To Test
WHAT_TO_TEST="$PR_TITLE\nCommits:\n$FORMATTED_COMMIT_MESSAGES\nJIRA Tickets:\n$PR_DESCRIPTION_JIRA_TICKETS"

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

 

Auto-Generated Test Notes

Discover more from Shawn

Subscribe now to keep reading and get access to the full archive.

Continue reading