Builds mobiles
Construisez, archivez et téléversez une application pour simulateur iOS ou un APK Android afin qu'Autonomy puisse exécuter des parcours mobiles dessus.
Les exécutions mobiles d'Autonomy nécessitent un build de votre application. Téléversez ce build une fois et réutilisez-le pour les exécutions manuelles, les exécutions de pull request et les exécutions planifiées jusqu'à la prochaine version.
Quoi téléverser
| Variable | Required | Description |
|---|---|---|
| iOS .app (.zip, .tgz, .tar.gz) | No | Bundle .app ciblant le simulateur, archivé avec l'app à la racine de l'archive. Accepté par le tableau de bord et l'API d'artefacts. |
| Android .apk | No | Package Android standard. Accepté par le tableau de bord et l'API d'artefacts. |
| Android .aab | No | Android App Bundle. Accepté par le tableau de bord et l'API d'artefacts. |
Pour iOS, Autonomy a besoin d'un build pour simulateur, car les exécutions s'effectuent sur des simulateurs cloud. Un .ipa signé construit pour iphoneos sera rejeté par le runner. Pour Android, .apk et .aab sont tous deux acceptés ; les exécutions installent l'artefact sur un émulateur cloud et le lancent par son nom de package.
Construire pour le simulateur iOS
Pour un projet Xcode standard, construisez avec xcodebuild :
xcodebuild -workspace ios/MyApp.xcworkspace \
-scheme MyApp \
-configuration Release \
-sdk iphonesimulator \
-destination 'generic/platform=iOS Simulator' \
-derivedDataPath ios/build \
buildLe bundle se trouve dans ios/build/Build/Products/Release-iphonesimulator/MyApp.app. Pour les projets Expo ou React Native, exécutez d'abord npx expo prebuild --platform ios, puis la même commande xcodebuild sur le workspace généré.
Pour les téléversements depuis le tableau de bord et directement via l'API, archivez le bundle avant de l'envoyer. Gardez le bundle .app à la racine de l'archive afin qu'Autonomy puisse le décompresser sans avoir à en deviner l'emplacement.
cd ios/build/Build/Products/Release-iphonesimulator
zip -r MyApp.app.zip MyApp.appConstruire pour Android
Pour un projet Android standard, construisez un APK de debug depuis la racine du projet. Les APK de debug s'installent sur les émulateurs sans signature.
./gradlew assembleDebugL'APK se trouve dans android/app/build/outputs/apk/debug/app-debug.apk. Pour les projets Expo ou React Native, exécutez d'abord npx expo prebuild --platform android, puis la même commande Gradle sur le projet généré.
Pour les builds App Bundle, utilisez ./gradlew bundleDebug et récupérez le .aab dans android/app/build/outputs/bundle/debug/. Les deux formats fonctionnent.
Téléverser depuis le tableau de bord
- Ouvrez le projet et passez à l'onglet Mobile.
- Cliquez sur Parcourir les fichiers et sélectionnez le
.app.zip/.app.tar.gz(iOS) ou le.apk/.aab(Android). - Attendez la fin du traitement du build.
- Ouvrez le test et choisissez le build téléversé sous Téléversement d'application.
- Pour les tests Android, confirmez que le nom de package correspond à l'APK. Autonomy le lit depuis le manifeste, mais vous pouvez le remplacer dans le test.
- Exécutez le test manuellement une fois pour confirmer que le build démarre et que le parcours atteint le premier point de contrôle.
Téléverser avec l'API d'artefacts
Utilisez l'API d'artefacts depuis la CI ou l'environnement d'exécution d'un agent lorsque le build n'est pas déjà stocké dans un environnement Autonomy enregistré. Le flux de téléversement renvoie un identifiant de stockage, analyse l'artefact, puis transmet cet identifiant de stockage à une exécution.
Pour le schéma de l'endpoint et les formats de réponse, consultez Artefacts dans la référence API.
UPLOAD_TARGET=$(curl -fsS -X POST "$AUTONOMY_API_URL/api/artifacts/upload-url" \
-H "Authorization: Bearer $AUTONOMY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"platform":"ios","fileName":"MyApp.app.zip"}')
UPLOAD_URL=$(printf '%s' "$UPLOAD_TARGET" | jq -r '.uploadUrl')
STORAGE_ID=$(printf '%s' "$UPLOAD_TARGET" | jq -r '.storageId')
curl -fsS -X PUT "$UPLOAD_URL" \
-H "Content-Type: application/zip" \
--data-binary "@ios/build/Build/Products/Release-iphonesimulator/MyApp.app.zip"
SCAN_BODY=$(jq -n \
--arg storageId "$STORAGE_ID" \
--arg fileName "MyApp.app.zip" \
'{ storageId: $storageId, platform: "ios", fileName: $fileName, contentType: "application/zip" }')
curl -fsS -X POST "$AUTONOMY_API_URL/api/artifacts/scan" \
-H "Authorization: Bearer $AUTONOMY_API_KEY" \
-H "Content-Type: application/json" \
-d "$SCAN_BODY"TRIGGER_BODY=$(jq -n \
--arg testPlanId "$AUTONOMY_TEST_PLAN_ID" \
--arg storageId "$STORAGE_ID" \
--arg bundleId "com.example.MyApp" \
--arg commitSha "$GITHUB_SHA" \
--arg idempotencyKey "github:${GITHUB_RUN_ID}:${GITHUB_RUN_ATTEMPT}:ios" \
'{
testPlanId: $testPlanId,
platforms: ["ios"],
branch: env.GITHUB_REF_NAME,
targets: {
ios: {
storageId: $storageId,
sourceMode: "upload",
bundleId: $bundleId,
fileName: "MyApp.app.zip"
}
},
deployment: {
provider: "github-actions",
commitSha: $commitSha
},
idempotencyKey: $idempotencyKey
}')
curl -fsS -X POST "$AUTONOMY_API_URL/api/v1/run.trigger" \
-H "Authorization: Bearer $AUTONOMY_API_KEY" \
-H "Content-Type: application/json" \
-d "$TRIGGER_BODY"Pour Android, téléversez le .apk ou le .aab de la même manière et déclenchez l'exécution avec platforms: ["android"], targets.android.storageId et targets.android.packageName.
Si votre fournisseur de CI vous donne déjà une URL HTTPS d'artefact à courte durée de vie, vous pouvez ignorer l'étape de téléversement et déclencher l'exécution avec artifactUrl ainsi que sourceMode: "url". Utilisez des environnements enregistrés pour les builds de staging stables et des targets explicites pour les artefacts de prévisualisation ponctuels.
Limitations
- iOS s'exécute uniquement sur des simulateurs cloud. La caméra, les invites biométriques (Face ID, Touch ID) et tout flux nécessitant un build signé pour appareil ne fonctionneront pas.
- Android s'exécute sur des émulateurs cloud. Les fonctionnalités purement matérielles (NFC, empreinte digitale, vraie caméra) ne sont pas simulées.
Dépannage
Le téléversement iOS est rejeté comme build pour appareil
Confirmez que le build a été produit avec -sdk iphonesimulator et une destination simulateur. Un bundle produit pour iphoneos est un build pour appareil et Autonomy le rejettera lors du téléversement.
Le téléversement Android est rejeté comme format incorrect
Autonomy n'accepte que .apk et .aab. Tout autre format est rejeté au moment du téléversement.
Le test ne trouve pas le build téléversé
Le build a été téléversé, mais n'a jamais été rattaché au test. Ouvrez le test et choisissez le build téléversé sous Téléversement d'application avant de l'exécuter.
La CI sature les téléversements
Utilisez des environnements enregistrés pour les builds à réutiliser et des targets d'exécution explicites pour les artefacts CI ponctuels. Réservez les téléversements depuis le tableau de bord aux builds qu'un responsable de version choisit pour les exécutions de production.