Update gptdriverscript.yml #6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: iOS Release Build and GPTDriver Tests | |
on: | |
push: | |
branches: | |
- 'Release-*' # Trigger for branches starting with "Release-" | |
jobs: | |
BuildAndTestAppOnGPTDriver: # Updated job name | |
runs-on: macos-latest # macOS runner is required for iOS builds | |
steps: | |
# --- Step 1: Extract version from branch name --- | |
- name: Extract version from branch name | |
id: extract_version_step | |
run: | | |
BRANCH_NAME="${{ github.ref }}" | |
# Remove 'refs/heads/' prefix (e.g., refs/heads/Release-0.0.0 -> Release-0.0.0) | |
BRANCH_NAME_WITHOUT_PREFIX="${BRANCH_NAME#refs/heads/}" | |
# Extract version after "Release-" (e.g., Release-0.0.0 -> 0.0.0) | |
VERSION=$(echo "$BRANCH_NAME_WITHOUT_PREFIX" | sed -n 's/^Release-\([0-9]*\.[0-9]*\.[0-9]*\)$/\1/p') | |
if [ -z "$VERSION" ]; then | |
echo "Error: Could not extract version from branch name '$BRANCH_NAME_WITHOUT_PREFIX'. Expected format: Release-X.Y.Z" | |
exit 1 | |
fi | |
echo "Extracted versionName: $VERSION" | |
echo "VERSION_STRING=$VERSION" >> $GITHUB_ENV | |
# Convert semantic version to an integer for CFBundleVersion (versionCode equivalent) | |
# Example: 1.2.3 -> 102003 (assuming max 2 digits for minor/patch) | |
# This should be adjusted based on the maximum expected values for major/minor/patch | |
MAJOR=$(echo "$VERSION" | cut -d. -f1) | |
MINOR=$(echo "$VERSION" | cut -d. -f2) | |
PATCH=$(echo "$VERSION" | cut -d. -f3) | |
# Calculate versionCode (CFBundleVersion) - ensure this fits in a 32-bit integer | |
# Standard Android-like conversion: Major * 10000 + Minor * 100 + Patch | |
# This provides sufficient uniqueness for most common versioning schemes. | |
VERSION_CODE_INT=$(( MAJOR * 10000 + MINOR * 100 + PATCH )) | |
echo "Calculated versionCode: $VERSION_CODE_INT" | |
echo "VERSION_CODE_INT=$VERSION_CODE_INT" >> $GITHUB_ENV | |
# --- Step 2: Checkout the iOS Branch SDK repository --- | |
- name: Checkout BranchMetrics/ios-branch-deep-linking-attribution (SDK) | |
uses: actions/checkout@v4 | |
with: | |
repository: BranchMetrics/ios-branch-deep-linking-attribution | |
ref: ${{ github.ref }} # Use the same branch that triggered the workflow | |
path: ./branch-ios-sdk-repo # Checkout into a subdirectory | |
# --- Step 3: Build the iOS Branch SDK Framework --- | |
- name: Build Branch SDK Framework | |
run: | | |
xcodebuild build -project BranchSDK.xcodeproj \ | |
-scheme BranchSDK \ | |
-configuration Debug \ | |
-sdk iphonesimulator \ | |
BUILD_DIR="${{ github.workspace }}/branch-ios-sdk-repo/build" \ | |
SKIP_INSTALL=NO | |
working-directory: ./branch-ios-sdk-repo # Run xcodebuild from the SDK's checkout directory | |
# --- Step 4: Checkout the iOS Branch Link Simulator App repository --- | |
- name: Checkout BranchMetrics/BranchLinkSimulator (App) | |
uses: actions/checkout@v4 | |
with: | |
repository: BranchMetrics/BranchLinkSimulator | |
ref: gptdriver/linkingTests # Checkout the specific app branch | |
path: ./ios-app-repo # Checkout into another subdirectory | |
# --- Step 5: Copy the generated SDK Framework to the App's project --- | |
- name: Copy generated SDK Framework to App's project | |
run: | | |
# Create a 'Frameworks' directory within the app repo for the local SDK | |
mkdir -p ./ios-app-repo/Frameworks | |
# Copy the built framework | |
cp -R ./branch-ios-sdk-repo/build/Debug-iphonesimulator/BranchSDK.framework ./ios-app-repo/Frameworks/ | |
working-directory: ${{ github.workspace }} # Run from the root of the GITHUB_WORKSPACE | |
# --- Step 6: Build the iOS Branch Link Simulator App using the local SDK Framework --- | |
- name: Build iOS App with local SDK | |
run: | | |
# The -project flag defines the project root from which SRCROOT is relative. | |
# The `BUILD_DIR` is where products are placed. We'll rely on xcodebuild's default DerivedData location, | |
# and then capture the specific path to the .app bundle using `xcodebuild -showBuildSettings`. | |
# This command ensures the build output variables are available. | |
set -o pipefail # Fail if any part of the pipe fails | |
XCODEBUILD_OUTPUT=$(xcodebuild build -project BranchLinkSimulator.xcodeproj \ | |
-scheme BranchLinkSimulator \ | |
-configuration Debug \ | |
-sdk iphonesimulator \ | |
-destination 'platform=iOS Simulator,name=iPhone 15' \ | |
MARKETING_VERSION=${{ env.VERSION_STRING }} \ | |
CURRENT_PROJECT_VERSION=${{ env.VERSION_CODE_INT }} \ | |
FRAMEWORK_SEARCH_PATHS="$(SRCROOT)/Frameworks" \ | |
ONLY_ACTIVE_ARCH=YES \ | |
| xcpretty # xcpretty makes xcodebuild output readable, install it if not present | |
# Extract BUILT_PRODUCTS_DIR from xcodebuild output | |
# This command must be run AFTER the build, and often requires parsing | |
# a successful build log for the definitive path. | |
# A more robust way is to query build settings directly: | |
BUILT_PRODUCTS_DIR=$(xcodebuild -project BranchLinkSimulator.xcodeproj \ | |
-scheme BranchLinkSimulator \ | |
-configuration Debug \ | |
-sdk iphonesimulator \ | |
-showBuildSettings \ | |
| grep -m 1 "BUILT_PRODUCTS_DIR =" \ | |
| sed 's/.*BUILT_PRODUCTS_DIR = //') | |
if [ -z "$BUILT_PRODUCTS_DIR" ]; then | |
echo "Error: Could not determine BUILT_PRODUCTS_DIR." | |
exit 1 | |
fi | |
echo "Detected BUILT_PRODUCTS_DIR: $BUILT_PRODUCTS_DIR" | |
echo "BUILT_PRODUCTS_DIR=$BUILT_PRODUCTS_DIR" >> $GITHUB_ENV # Set as environment variable | |
working-directory: ./ios-app-repo # Run xcodebuild from the App's checkout directory | |
# --- Step 7: Echo the location of the generated .app bundle --- | |
- name: Echo .app bundle location | |
run: | | |
# Use the dynamically determined BUILT_PRODUCTS_DIR | |
APP_PATH="${{ env.BUILT_PRODUCTS_DIR }}/BranchLinkSimulator.app" | |
echo "Generated .app bundle location: $APP_PATH" | |
# --- Step 8: Upload Build Artifacts --- | |
- name: Upload Build Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: BranchLinkSimulator-iOS-Debug-Build | |
# Use the dynamically determined BUILT_PRODUCTS_DIR | |
path: "${{ env.BUILT_PRODUCTS_DIR }}/BranchLinkSimulator.app" | |
# --- Step 9: Upload and run tests on GPTDriver service. --- | |
- name: Run GPTDriver tests | |
run: | | |
# Ensure the script is executable | |
chmod +x ./branch-ios-sdk-repo/.github/gptdriverrunscript.sh | |
# Use the dynamically determined BUILT_PRODUCTS_DIR | |
bash ./branch-ios-sdk-repo/.github/gptdriverrunscript.sh "${{ env.BUILT_PRODUCTS_DIR }}/BranchLinkSimulator.app" ios | |
env: | |
API_ORG_KEY: ${{ secrets.MOBILEBOOST_API_ORG_KEY }} | |
API_KEY: ${{ secrets.MOBILEBOOST_API_ORG_KEY }} | |
TEST_TAGS: Release |