Formal releases with iOS runtime changes now bump MARKETING_VERSION, archive the tag via Xcode Cloud, wait until App Store Connect marks the build Valid, and submit App Review. GitHub publication stays independent of iOS outcome.
94 lines
3.2 KiB
YAML
94 lines
3.2 KiB
YAML
name: Control iOS Xcode Cloud
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
mode:
|
|
description: Inspect workflows or start the selected Archive workflow
|
|
required: true
|
|
type: choice
|
|
options:
|
|
- inspect
|
|
- start
|
|
- monitor
|
|
- store-status
|
|
default: inspect
|
|
workflow_id:
|
|
description: Optional Xcode Cloud workflow ID; auto-selects a single enabled Archive workflow when empty
|
|
required: false
|
|
type: string
|
|
build_run_id:
|
|
description: Xcode Cloud build run ID to monitor
|
|
required: false
|
|
type: string
|
|
app_store_version:
|
|
description: App Store marketing version to inspect
|
|
required: false
|
|
type: string
|
|
app_store_build_id:
|
|
description: App Store Connect build resource ID to inspect
|
|
required: false
|
|
type: string
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
xcode-cloud:
|
|
if: github.repository == 'tianma-if/edgeever'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 90
|
|
steps:
|
|
- name: Check out Xcode Cloud tooling
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Install App Store Connect client dependencies
|
|
run: python3 -m pip install --quiet PyJWT cryptography
|
|
|
|
- name: Inspect, start, or monitor Xcode Cloud
|
|
env:
|
|
ASC_APP_ID: "6792625631"
|
|
ASC_API_ISSUER: ${{ secrets.EDGEEVER_APPLE_API_ISSUER }}
|
|
ASC_API_KEY_ID: ${{ secrets.EDGEEVER_APPLE_API_KEY_ID }}
|
|
ASC_API_KEY_BASE64: ${{ secrets.EDGEEVER_APPLE_API_KEY_BASE64 }}
|
|
XCODE_CLOUD_MODE: ${{ inputs.mode }}
|
|
XCODE_CLOUD_WORKFLOW_ID: ${{ inputs.workflow_id }}
|
|
XCODE_CLOUD_BUILD_RUN_ID: ${{ inputs.build_run_id }}
|
|
APP_STORE_VERSION: ${{ inputs.app_store_version }}
|
|
APP_STORE_BUILD_ID: ${{ inputs.app_store_build_id }}
|
|
run: |
|
|
case "$XCODE_CLOUD_MODE" in
|
|
inspect)
|
|
python3 scripts/xcode-cloud-control.py inspect
|
|
;;
|
|
start)
|
|
args=(start --wait)
|
|
if [[ -n "$XCODE_CLOUD_WORKFLOW_ID" ]]; then
|
|
args+=(--workflow-id "$XCODE_CLOUD_WORKFLOW_ID")
|
|
fi
|
|
python3 scripts/xcode-cloud-control.py "${args[@]}"
|
|
;;
|
|
monitor)
|
|
if [[ -z "$XCODE_CLOUD_BUILD_RUN_ID" ]]; then
|
|
echo "::error::build_run_id is required in monitor mode"
|
|
exit 1
|
|
fi
|
|
python3 scripts/xcode-cloud-control.py wait \
|
|
--build-run-id "$XCODE_CLOUD_BUILD_RUN_ID" \
|
|
--wait-valid
|
|
;;
|
|
store-status)
|
|
if [[ -z "$APP_STORE_VERSION" || -z "$APP_STORE_BUILD_ID" ]]; then
|
|
echo "::error::app_store_version and app_store_build_id are required in store-status mode"
|
|
exit 1
|
|
fi
|
|
python3 scripts/xcode-cloud-control.py store-status \
|
|
--version "$APP_STORE_VERSION" \
|
|
--build-id "$APP_STORE_BUILD_ID"
|
|
;;
|
|
*)
|
|
echo "::error::Unsupported Xcode Cloud mode: $XCODE_CLOUD_MODE"
|
|
exit 1
|
|
;;
|
|
esac
|