Nomen meum est Dmitry, ego tamquam probator in comitatu laboro
Priusquam hoc probavi iam Firebase Test Lab pro Android et omnia realiter probaverunt, ergo placuit temptare infrastructuram propositi in eodem pede ponere. Google multum habui et non omnia primum elaborata sunt, itaque constitui te scribere articulum consequat pro iis qui adhuc laborantes sunt.
Quare, si UI probationes in iOS inceptas habes, iam experiri potes eos in realibus machinis hodie currere, benigne a Bono Corporation provisum. Earum curae, excepturi felis.
In historia, constitui me in aliqua initiali notitia aedificare - repositio privata in GitHub et systema CircleCI constructum. Nomen applicationis AmazingApp, bundleID est com.company.amazingapp. Hanc datam statim exhibeo ut confusionem subsequentem minuam.
Si solutiones quasdam in tuo consilio aliter implesti, experientiam tuam in commentis communica.
1. Quod probat se
Novam project ramus ad III probat:
$ git checkout develop
$ git pull
$ git checkout -b βfeature/add-ui-testsβ
Proiectum in XCode aperiamus et novum signum cum UI probatis condat [XCode -> Lima -> Novum -> Target -> iOS Testis Fasciculum], eique nomen proprium explanatorium AmazingAppUITests.
Vade ad sectionem aedificate Augmenta target creati et deprime praesentia Dependentiae Target - AmazingApp, in Fontes Compile - AmazingAppUITests.swift.
Usus bonus est optiones diversas aedificandi in schemata separatas separare. Facimus rationem pro UI probatis nostris [XCode -> Product -> Scheme -> Nova Scheme] et idem nomen dabimus: AmazingAppUITests.
Constructum creatum consilium debet includere target principalis application - AmazingApp et Target III probat - AmazingAppUITests - vide tortor
Deinde novam configurationem aedificandi pro UI probationibus creamus. In XCode, preme in fasciculo documenti et vade ad sectionem Info. Deprime "+" et novam configurationem crea, exempli gratia XCtest. Hoc in futuro opus erit ut saltationem cum tympano vitando, cum ad signationem accedat.
Sunt saltem tres scuta in incepto tuo: principale applicationis, unitatis probatio (post omnia, quae sunt, ius?) et scopum UI probationes quas creavimus.
Ad scopum AmazingApp, Occasus tab aedifica, Code Identity signans sectionem. Pro configuratione XC test, elige iOS Developer. In Codice Subscriptione sectioni Style, select Manuale. Profile provisionem nondum generavimus, sed paulo post certum reddemus.
Pro Amazing AppUITests idem facimus, sed in Producto Fasciculus Identifier columna com.company.amazingappuitests ingredimur.
2. Profecti in project in Apple Developer Program
Ite ad paginam programmatum Apple Developer, vade ad Testimonia, Identifiers & Profile sectionem, deinde ad App IDs columnam Identifiorum item. Novam App ID vocavit AmazingAppUITests et bundleID com.company.amazingappuitests.
Nunc facultas est scribendi probationes nostras cum libello separato, sed ... Ratio congregandi aedificandi ad experiendum involvit applicationem ipsam convocandi et cursorem test convocandi. Proinde obvium sumus cum problemate duos fasciculos IDs signandi cum uno cibario profano. Fortunate simplex et elegans solutio est - Wildcard App ID. Iteramus modum procedendi ad novam App ID creandi, sed pro Explicit App ID, elige Wildcard App ID sicut in screenshot.
Hic laboramus cum elit.apple.com, sed fenestram navigatri minimi non dabimus. Eamus in
Attentus lector animadvertit nos hac utilitate utendum esse nobis reposito secretario et ratiocinatione indigere cum accessu ad utrumque Apple Developer Program et Github. Nos (si subito tale non est) rationem formae [Inscriptio protected]ascende tesseram validam, eam cum elit.apple.com subcriptio, et administratorem project. Deinceps rationem accessus ad tuum github repositorium damus et novum repositorium privatum cum nomine sicut AmazingAppMatch creamus.
3. constituendi Fastlane et par utilitate
Aperi terminalem, vade ad folder cum incepto et initialize fastlane ut indicatur
$ fastlane init
Promptus eris ad usum figurarum promptum eligere. Lego quartam optionem - consilium manuale positum.
Proiectum novum fastlanum directorium habet, quod duas tabulas continet - Appfile et Fastfile. In nuce data opera in Appfile condimus, et jobs in Fastfile, vicos in terminologia Fastlane vocato, conscribimus. Suadeo legere documenta publica;
Aperi Appfile in vestri ventus editorem textum et ad hanc formam adduce:
app_identifier "com.company.amazingapp" # Bundle ID
apple_dev_portal_id "[email protected]" # Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΠΏΡΠ°Π²ΠΎ Π½Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ iOS ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Apple Developer Program.
team_id "LSDY3IFJAY9" # Your Developer Portal Team ID
Redimus ad terminum et secundum manualem officialem incipimus par configurare.
$ fastlane match init
$ fastlane match development
Deinde intrant data petita - repositio, ratio, tesserae etc.
Est momenti ad: Cum utilitatem par primum deducis, tesseram minutum repositio inire rogaberis. Magni momenti est hanc tesseram salvare, ea cum servo CI statuens indigebimus!
Novus fasciculus in folder fastlane apparuit - Matchfile. Aperi eam in editore tuo dilectionis textui et hoc sic praesta:
git_url("https://github.com/YourCompany/AmazingAppMatch") #Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² ΠΈ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΎΠ².
type("development") # The default type, can be: appstore, adhoc, enterprise or development
app_identifier("com.company.amazingapp")
username("[email protected]") # Your Infrastructure account Apple Developer Portal username
Extremum hoc modo implemus si velimus uti par in futuro signo aedificat ad ostentationem in Crashlytics et/vel AppStore, id est, fasciculum ID signare applicationis tuae.
Sed, ut meminimus, singularem Wildcard ID creavimus ut test aedificaretur. Aperi ergo Fastfile et ingredere novam laneam;
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΠ°Π½Ρ Π΄Π»Ρ development ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
)
end
Salvum fac et intra in termino
fastlane testing_build_for_firebase
et videmus quomodo fastlane novum libellum condidit et in reposito posuit. Magna!
Apertum XCode. Nunc habemus necessariam provisionem figurae formae Compositus Development com.company.*, quae in sectione profile Provisionis ad AmazingApp et AmazingAppUITests scuta definiri debet.
Reliquum est ut tane ad probationes colligendas addere. Eamus in
Exemplar crustulum ex originali exemplo sit ut nostra aneta testing_for_firebase desinens hoc simile intueatur:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests"
)
scan(
scheme: 'AmazingAppUITests', # UI Test scheme
clean: true, # Recommended: This would ensure the build would not include unnecessary files
skip_detect_devices: true, # Required
build_for_testing: true, # Required
sdk: 'iphoneos', # Required
should_zip_build_products: true, # Must be true to set the correct format for Firebase Test Lab
)
firebase_test_lab_ios_xctest(
gcp_project: 'AmazingAppUITests', # Your Google Cloud project name (ΠΊ ΡΡΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΏΠΎΠ·ΠΆΠ΅)
devices: [ # Device(s) to run tests on
{
ios_model_id: 'iphonex', # Device model ID, see gcloud command above
ios_version_id: '12.0', # iOS version ID, see gcloud command above
locale: 'en_US', # Optional: default to en_US if not set
orientation: 'portrait' # Optional: default to portrait if not set
}
]
)
end
Ad integram informationem de fastlane erectionis in Circulo CI, suadeo legendi documenta publica
Ne obliviscaris config.yml novo addere negotium:
build-for-firebase-test-lab:
macos:
xcode: "10.1.0"
working_directory: ~/project
shell: /bin/bash --login -o pipefail
steps:
- checkout
- attach_workspace:
at: ~/project
- run: sudo bundle install # ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
- run:
name: install gcloud-sdk # Π½Π° mac ΠΌΠ°ΡΠΈΠ½Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ gcloud
command: |
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null
brew cask install google-cloud-sdk
- run:
name: build app for testing
command: fastlane testing_build_for_firebase # Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ lane ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π² firebase
4. Quid de tribunali tentamus? Erexit Firebase.
Descendamus ad id quod scriptum est.
Fortasse app Firebase in libero consilio utitur, vel fortasse minime. Nulla omnino differentia est fundamentalis, quia ad probationes necessitates singularem consilium cum anno liberi usu (recte frigus) creare possumus.
Causam nostram infrastructuram aperimus (vel alia, non refert), et ite
Est momenti ad: In praecedente gradu in fastigio in anathesi test_lab_ios_xctest the gcp_project parametri inserere debet nomini project.
Default occasus nobis satis bene convenit.
Noli claudere tab, subcriptio sub eadem ratione in
Google $ 300 pro anno dat, qui in contextu autotestorum faciendorum aequipollet liber usus servitii. Mercedem tuam ad informationes intramus, experimentum debiti $1 expecta et 300 $ in ratione tua accipias. Post annum, consilium automatice ad liberam tariff consilium transferetur, ut cures de pecuniae iactura non sit necesse est.
Redeamus ad tab cum incepti Firebase eamque ad omisso ardore consilium transferamus - nunc habemus aliquid solvendum si modus exceditur.
In gcloud interface, elige nostrum consilium Firebase, elige "Directorium" tabulam principalem et adde Cloud Testis API et Cloud Tools Result API.
Deinde ad menu item "IAM et administrationem" -> Service rationes -> rationem muneris crea. Iura concedimus ut documentum emendo.
Create an API key in JSON format
JSON receptae paulo post opus erit, sed nunc testem Lab paroecialem completum habebimus.
5. Profecti sunt CircleCI'
Rationabilis quaestio oritur - quid cum passwords? Ambitus variabilis machina fabricandi machinae nostrae adiuvabit nos secure tesseras nostras et alia sensitiva notitia. In ambitus ambitus, select Ambitus Variabiles
Et pone sequentes variabiles:
- clavis: GOOGLE_APPLICATION_CREDENTIALS
valorem: contenta json fasciculi gcloud muneris ratio clavis - clavis: MATCH_PASSWORD
valorem: password pro decrypting github repositio cum libellorum - clavis: FASTLANE_PASSWORD
valorem: Apple Developer Portal infrastructure propter password
Mutationes servamus, PR creamus et ad turmas nostras duc ad recognoscendum mitte.
results
Ex his simplicibus artificiis, bonam et stabilem operam sistere cum facultate video memorare in screen machinali in tempore temptationis recepimus. In exemplo probato, exemplar fabricae iPhone X definivi, sed fundus copiam locupletem praebet ex diversis exemplaribus et iOS versionibus compositum.
Secunda pars destinabitur ad gradum gradatim constitutivum Firebase Test Lab pro project MASCULINUS.
Source: www.habr.com