Mobiilibuild'id
Ehita Androidi APK ning laadi see üles keskkonda või saada CI-st API kaudu.
Mobiilikäivitused vajavad sinu rakenduse buildi. Pane see keskkonna sihtmärgile, et kasutada seda kõigil käivitustel kuni järgmise versioonini, või laadi see CI-st üles ja alusta sellega otse käivitused.
Mida üles laadida
| Variable | Required | Description |
|---|---|---|
| iOS .app (.zip, .tgz, .tar.gz) | No | .app paketi simulaatoribuild, arhiveeritud nii, et .app on arhiivi juurkaustas. |
| Android .apk | No | Tavaline Androidi pakett. |
| Android .aab | No | Android App Bundle. |
iOS-i jaoks (tulekul) vajab Autonomy simulaatori buildi, sest käivitused kasutavad iOS-i simulaatoreid. Seadmete jaoks ehitatud allkirjastatud .ipa ei käivitu. Androidi puhul sobivad nii .apk kui ka .aab; käivitused paigaldavad buildi emulaatorisse ja avavad selle paketi nime järgi. Mobiilibuild'id võivad olla kuni 512 MB. Iga üleslaaditud fail läbib turvakontrolli, enne kui käivitus saab seda kasutada.
Ehita iOS-i simulaatori jaoks
iOS-i testimine tuleb peagi. Hoia see alles ajaks, mil see on saadaval. Seni ei alusta Autonomy iOS-is käivitusi.
Xcode'i projekti puhul ehita käsuga xcodebuild:
xcodebuild -workspace ios/MyApp.xcworkspace \
-scheme MyApp \
-configuration Release \
-sdk iphonesimulator \
-destination 'generic/platform=iOS Simulator' \
-derivedDataPath ios/build \
CODE_SIGNING_ALLOWED=NO \
buildPakett tekib asukohta ios/build/Build/Products/Release-iphonesimulator/MyApp.app. Expo või React Native'i projektide puhul käivita esmalt npx expo prebuild --platform ios ja seejärel sama xcodebuild käsk loodud tööruumi vastu.
Paki pakett enne üleslaadimist zip-faili nii, et .app on arhiivi juurkaustas. -y säilitab sümbolingid.
cd ios/build/Build/Products/Release-iphonesimulator
zip -qry MyApp.app.zip MyApp.appEhita Androidi jaoks
Androidi projekti puhul ehita silumis-APK. Silumis-APK-d paigalduvad emulaatoritesse ilma lisaallkirjastamiseta.
cd android
./gradlew assembleDebugAPK tekib asukohta android/app/build/outputs/apk/debug/app-debug.apk. Expo või React Native'i projektide puhul käivita esmalt npx expo prebuild --platform android ja seejärel sama Gradle'i käsk loodud projekti vastu.
App Bundle'i jaoks käivita ./gradlew bundleDebug ja võta .aab kaustast android/app/build/outputs/bundle/debug/.
Laadi üles töölaualt
- Ava projekt ja klõpsa Environments, seejärel ava keskkond. Keskkondi saavad muuta omanikud ja administraatorid.
- Vali iOS-i või Androidi sihtmärgi all Upload ja lohista sinna
.appzip,.apkvõi.aabvõi klõpsa, et faili sirvida. - Oota teadet „Uploaded and scanned“ ja salvesta seejärel keskkond.
- Käivita selles keskkonnas üks kord mõni testjuhtum, et kinnitada, et build avaneb ja esimene samm on saavutatav.
Kui soovid kasutada buildi, mille sinu CI juba avaldab, vali selle asemel URL ja kleebi otsene allalaadimislink. Käivitused kasutavad buildi, millele link salvestamise ajal viitas. Kui sinu CI avaldab samal lingil uue buildi, salvesta link uuesti või laadi build CI-st üles, nagu allpool kirjeldatud. Vaata Keskkonnad.
Laadi üles API kaudu
Kasuta CI-st API-t, kui build on selle pipeline'i jaoks uus ega peaks keskkonna buildi asendama. Selleks kulub kolm kutset, seejärel läheb buildi salvestus-ID päringusse run.trigger. Autendi organisatsiooni API-võtmega, mis algab eesliitega aut_ ja on loodud lehel Organization → API keys (omanikud ja administraatorid).
POST /api/artifacts/upload-urlväljadegaplatform(iosvõiandroid),fileName,contentTypejadeclaredBytes(faili suurus baitides). Vastuses onuploadUrl,storageId,method("PUT"),intentIdjaexpiresAt.- Saada fail päringuga
PUTaadressileuploadUrlsamaContent-Typepäisega. POST /api/artifacts/scanväljadegastorageIdjaintentId. Alusta käivitusi ainult siis, kuistatuson"clean"; muul juhul ütlebfindings, mis oli valesti.
set -euo pipefail
API=https://api.autonomyqa.com
FILE=ios/build/Build/Products/Release-iphonesimulator/MyApp.app.zip
UPLOAD=$(curl -fsS -X POST "$API/api/artifacts/upload-url" \
-H "Authorization: Bearer $AUTONOMY_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --argjson bytes "$(wc -c < "$FILE" | tr -d ' ')" \
'{platform: "ios", fileName: "MyApp.app.zip", contentType: "application/zip", declaredBytes: $bytes}')")
STORAGE_ID=$(jq -r '.storageId' <<< "$UPLOAD")
INTENT_ID=$(jq -r '.intentId' <<< "$UPLOAD")
curl -fsS -X PUT "$(jq -r '.uploadUrl' <<< "$UPLOAD")" \
-H "Content-Type: application/zip" \
--data-binary "@$FILE"
SCAN=$(curl -fsS -X POST "$API/api/artifacts/scan" \
-H "Authorization: Bearer $AUTONOMY_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg s "$STORAGE_ID" --arg i "$INTENT_ID" '{storageId: $s, intentId: $i}')")
jq -e '.status == "clean"' <<< "$SCAN" > /dev/nullSeejärel alusta käivitused päringuga POST /api/v1/run.trigger. Anna kehas täpselt üks väljadest testPlanId (testiplaan: üks käivitus testjuhtumi kohta) või testCaseId (üks testjuhtum), build selgesõnalise sihtmärgina ja idempotencyKey. Sama võtmega korduskatse tagastab uute käivituste alustamise asemel samad käivitused.
TRIGGER=$(curl -fsS -X POST "$API/api/v1/run.trigger" \
-H "Authorization: Bearer $AUTONOMY_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg plan "$AUTONOMY_TEST_PLAN_ID" --arg s "$STORAGE_ID" \
--arg key "my-ci:$BUILD_ID:ios" \
'{
testPlanId: $plan,
platforms: ["ios"],
targets: { ios: { bundleId: "com.example.MyApp", storageId: $s, sourceMode: "upload", fileName: "MyApp.app.zip" } },
branch: "main",
deployment: { provider: "my-ci", branch: "main", commitSha: "abc123" },
idempotencyKey: $key
}')")
jq -r '.runIds[]' <<< "$TRIGGER"Vastus on { runIds, planGroupRunId?, environment? }. Androidi puhul saada platform: "android", contentType: "application/vnd.android.package-archive" ja alusta käivitused väärtusega targets.android ning bundleId asemel packageName.
Kui soovid hoopis käivitada salvestatud keskkonnas, saada targets asemel environmentSlug: käivitus kasutab selle keskkonna buildi ja väärtusi. Selgesõnalisel sihtmärgil pole keskkonda, seega lõpevad sammud, mis kasutavad {{env.NAME}} väärtust, tulemusega Couldn't start. Kui sinu CI annab juba buildi HTTPS-lingi, jäta üleslaadimine vahele ja saada artifactUrl koos sourceMode: "url".
Jälgi käivitusi
Kutsu POST /api/v1/run.get väljadega runId, eelmise vastuse cursor ja waitMs kuni 25000. Iga kutse ootab, kuni käivitus muutub; timedOut: true tähendab ainult, et midagi pole veel muutunud. Lõpeta, kui status on passed, failed, couldnt_start või cancelled.
Pipeline'i sidumiseks tulemusega lase sel läbida ainult siis, kui iga käivitus on passed (ebastabiilne läbimine loeb). failed kukutab selle läbi; ava käivitus, et näha, milline samm ja miks. Ka couldnt_start kukutab selle läbi, kuid see tähendab, et keskkonda ei saanud testida, näiteks build ei paigaldunud, mitte et sinu rakendus oleks katki.
CI-retseptid koondavad kõik selle, üleslaadimise, alustamise ja jälgimise, ühte abiskripti .ci/autonomy.sh: vaata GitHub Actions, GitLab CI, Jenkins, Bitrise ja CircleCI. Väljad ja vead on kirjas API viites ja lehel Käivitused ja välised tõendid.
Piirangud
- iOS käivitub ainult simulaatorites. Kaamera, Face ID, Touch ID ja iga voog, mis vajab allkirjastatud seadmebuildi, ei tööta.
- Android käivitub emulaatorites. Ainult riistvaraga töötavad funktsioonid, näiteks NFC, sõrmejälg ja päris kaamera, pole saadaval.
Tõrkeotsing
iOS-i üleslaadimine lükatakse tagasi
Kontrolli, et build kasutas valikut -sdk iphonesimulator ja simulaatori sihtkohta ning et laadisid üles .zip, .tgz või .tar.gz faili, mille sees on .app. iphoneos jaoks tehtud build on seadmebuild.
Androidi üleslaadimine lükatakse tagasi
Aktsepteeritakse ainult .apk ja .aab faile.
Üleslaadimise URL-i päring tagastab 400
declaredBytes (number) ja contentType on kohustuslikud. Skannimispäring vajab üleslaadimise URL-i vastusest nii storageId kui ka intentId väärtust.
Käivitus kasutas vanemat buildi
environmentSlug väärtusega käivitus kasutab keskkonna buildi, mitte seda, mille just üles laadisid. Saada uus build selgesõnalise sihtmärgina või uuenda esmalt keskkonna sihtmärki.
Ei leidnud?