Skip to content

Fix TestFlight intent rejection and speed version lookup #7

Fix TestFlight intent rejection and speed version lookup

Fix TestFlight intent rejection and speed version lookup #7

name: Foundation Lab TestFlight
on:
push:
branches:
- main
paths:
- 'Foundation Lab/**'
- 'Foundation Lab.icon/**'
- 'FoundationLabCore/**'
- 'FoundationLab.xcodeproj/**'
- 'SampleCode.xcconfig'
- '.asc/**'
- '.github/workflows/foundation-lab-testflight.yml'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: foundation-lab-testflight
cancel-in-progress: false
jobs:
upload:
runs-on: macos-latest
timeout-minutes: 90
env:
ASC_BYPASS_KEYCHAIN: "1"
APP_ID: ${{ vars.FOUNDATION_LAB_APP_ID }}
TESTFLIGHT_GROUP: ${{ vars.FOUNDATION_LAB_EXTERNAL_GROUP_ID }}
TARGET_BUNDLE_ID: ${{ vars.FOUNDATION_LAB_BUNDLE_ID }}
TEAM_ID: ${{ vars.FOUNDATION_LAB_TEAM_ID }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Select Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Install asc
env:
GH_TOKEN: ${{ github.token }}
run: |
ASC_VERSION="$(gh release view \
--repo rudrankriyam/App-Store-Connect-CLI \
--json tagName \
--jq .tagName)"
ASC_ASSET="asc_${ASC_VERSION}_macOS_arm64"
gh release download "$ASC_VERSION" \
--repo rudrankriyam/App-Store-Connect-CLI \
--pattern "$ASC_ASSET" \
--dir "$RUNNER_TEMP"
install -m 0755 "$RUNNER_TEMP/$ASC_ASSET" "$RUNNER_TEMP/asc"
export PATH="$RUNNER_TEMP:$PATH"
echo "$RUNNER_TEMP" >> "$GITHUB_PATH"
asc --version
asc builds next-build-number --help >/dev/null
- name: Validate repository configuration
env:
ASC_KEY_ID_SECRET: ${{ secrets.ASC_KEY_ID }}
ASC_ISSUER_ID_SECRET: ${{ secrets.ASC_ISSUER_ID }}
ASC_PRIVATE_KEY_B64_SECRET: ${{ secrets.ASC_PRIVATE_KEY_B64 }}
run: |
for key in APP_ID TESTFLIGHT_GROUP TARGET_BUNDLE_ID TEAM_ID; do
if [ -z "${!key}" ]; then
echo "Missing required repository variable: $key" >&2
exit 1
fi
done
for key in ASC_KEY_ID_SECRET ASC_ISSUER_ID_SECRET ASC_PRIVATE_KEY_B64_SECRET; do
if [ -z "${!key}" ]; then
echo "Missing required repository secret: ${key%_SECRET}" >&2
exit 1
fi
done
- name: Materialize ASC key
env:
ASC_KEY_ID_SECRET: ${{ secrets.ASC_KEY_ID }}
ASC_ISSUER_ID_SECRET: ${{ secrets.ASC_ISSUER_ID }}
ASC_PRIVATE_KEY_B64_SECRET: ${{ secrets.ASC_PRIVATE_KEY_B64 }}
run: |
KEY_PATH="$RUNNER_TEMP/AuthKey_${ASC_KEY_ID_SECRET}.p8"
printf '%s' "$ASC_PRIVATE_KEY_B64_SECRET" | base64 --decode > "$KEY_PATH"
chmod 600 "$KEY_PATH"
{
echo "ASC_KEY_ID=$ASC_KEY_ID_SECRET"
echo "ASC_ISSUER_ID=$ASC_ISSUER_ID_SECRET"
echo "ASC_PRIVATE_KEY_PATH=$KEY_PATH"
} >> "$GITHUB_ENV"
- name: Resolve marketing version
id: version
run: |
VERSION="$(awk -F' = ' '/MARKETING_VERSION = / { gsub(/;/, "", $2); print $2; exit }' \
FoundationLab.xcodeproj/project.pbxproj)"
if [ -z "$VERSION" ]; then
VERSION="$(xcodebuild -showBuildSettings \
-project FoundationLab.xcodeproj \
-scheme 'Foundation Lab' \
-configuration Release \
-destination 'generic/platform=iOS' | awk '/MARKETING_VERSION = / { print $3; exit }')"
fi
if [ -z "$VERSION" ]; then
echo "Failed to resolve MARKETING_VERSION" >&2
exit 1
fi
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
- name: Validate ASC workflow
run: asc workflow validate
- name: Dry run ASC workflow
run: asc workflow run --dry-run foundation_lab_testflight VERSION:${{ steps.version.outputs.version }}
- name: Upload to TestFlight external group
run: asc workflow run foundation_lab_testflight VERSION:${{ steps.version.outputs.version }}