Tere, tervitused!
Soovin jagada oma kogemust GitLabi ja AppCentri integreerimise seadistamisel läbi BitBucket'i.
Sellise integreerimise vajadus tekkis automaatsete UI testide käivitamise seadistamise käigus krossplatvormi projektis Xamarin'is. Üksikasjalik õpetus on allpool!
* UI testimise automatiseerimisest krossplatvormi tingimustes teen ma eraldi artikli, kui publik on huvitatud.
Sarnast materjali leidsin vaid ühe. Seega võib minu artikkel kellelegi abiks olla.
Ülesanne: Seada automaatne UI testide käivitamine AppCenter'is, samas kui meie meeskond kasutab GitLab'i kui versioonihaldussüsteemi.
Probleem Selgus, et AppCenter ei integreeru GitLab'iga otse. Üks lahendusena valiti ringkäik läbi BitBucket'i.
Sammud
1. Loome tühja BitBucket'i hoidla.
Ei näe vajadust selgitada seda põhjalikumalt 🙂
2. Seadistame GitLabi.
Peame tagama, et push/merge'i korral laekuvad muudatused ka BitBucket'i. Selleks lisame runner'i (või redigeerime olemasolevat .gitlab-ci.yml faili).
Esmalt lisame käsud before_scripts sektsiooni:
- git config --global user.email "user@email"
- git config --global user.name "username"Seejärel lisame järgmise käsu vajalikku etappi:
- git push --mirror https://username:password@bitbucket.org/username/projectname.gitMinu puhul tuli välja selline fail
before_script:
- git config --global user.email "user@email"
- git config --global user.name "username"
stages:
- mirror
mirror:
stage: mirror
script:
- git push --mirror https://****:*****@bitbucket.org/****/testapp.gitKäivitame buildu ja kontrollime, et meie muudatused/failid on BitBucketis olemas.
* praktika on näidanud, et SSH võtmete seadistamine ei ole kohustuslik. Kuid igaks juhuks toon allpool SSH kaudu ühenduse seadistamise algoritmi.
Ühendamine SSH kaudu
Esmalt tuleb genereerida SSH võti. Sellega on kirjutatud palju artikleid. Näiteks võite vaadata .
Genereritud võtmed näevad umbes välja nii:

Seejärel salajane võti tuleb lisada muutujana GitLabi. Selleks läheme Settings > CI/CD > Environment Variables. Lisame KOGU faili sisu, kuhu olete salvestanud salajase võtme. Nimetame muutuja SSH_PRIVATE_KEY.
* see fail, erinevalt avaliku võtme failist, ei saa laienemist

Suurepärane, nüüd tuleb lisada avalik võti BitBucketisse. Selleks avame reposi, läheme Settings > Access Keys.

Siin vajutame Add Key ja sisestame avaliku võtme faili sisu (fail koos laiendiga .pub).
Järgmiseks sammuks on võtmete kasutamine gitlab-runneris. Kasutage neid käske, kuid asendage tärnid oma andmetega.
image: timbru31/node-alpine-git:latest
stages:
- mirror
before_script:
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- git config --global user.email "*****@***"
- git config --global user.name "****"
- ssh -T git@bitbucket.org
mirror:
stage: mirror
script:
- git push --mirror https://****:****@bitbucket.org/*****/*.git3. AppCenteri seadistamine
Loome uue rakenduse AppCenteris.

Määrame keele/platformi.

Järgmisena siseneme Build sektsiooni just loodud rakenduses. Valime seal BitBucket'i ja rea, mis loodi 1. etapis.
Suurepärane, nüüd tuleb seadistada build. Selleks leiame hammasratta ikooni.

Põhimõtteliselt on seal kõik intuitiivselt arusaadav. Valime projekti ja konfiguratsiooni. Vajadusel lülitame sisse testide käivitamise pärast buildi. Need käivituvad automaatselt.
Põhimõtteliselt on see kõik. See kõlab kergelt, kuid loomulikult ei lähe kõik sujuvalt. Seetõttu kirjeldan mõningaid vigu, millega ma töö käigus kokku puutusin:
‘ssh-keygen’ ei ole tuntud sisemise või välise käsuna.
See tekib, kuna ssh-keygen.exe tee ei ole lisatud keskkonnamuutujatesse.
On kaks võimalust: lisada C:Program FilesGitusrbin Enviroment Variables (rakendub pärast arvuti taaskäivitamist) või käivita terminal sellest kataloogist.
Kas AppCenter on ühendatud vale BitBucket kontoga?
Probleemi lahendamiseks tuleb BitBucket konto AppCenter'ist lahti siduda. Logi sisse valele BitBucket kontole ja mine kasutaja profiili.

Siis mine Settings > Access Management > OAuth

Klõpsa Revoke, et konto lahti siduda.

Seejärel logi sisse õige BitBucket kontoga.
* Tingimustel tuleb ka brauseri vahemälu puhastada.
Nüüd mine AppCenterisse. Mine Build sektsiooni ja kliki Disconnect BitBucket account.

Kui vana konto on lahti seotud, siduge AppCenter uuesti. Nüüd juba õige kontoga.
‘eval’ ei ole tuntud sisemise ega välise käsuna.
Kasutame käsu asemel
- eval $(ssh-agent -s)Käsku:
- ssh-agentMõnikord tuleb kas märkida täistee C:Program FilesGitusrbinssh-agent.exe või lisada see tee süsteemi muutujatesse masinas, kus runner töötab.
AppCenter Build üritab käivitada buildi projekti jaoks mitteaktiivses BitBucket repos.
Minu puhul tekkis probleem seetõttu, et töötasin mitme kontoga. See lahendati vahemälu puhastamisega.
Allikas: habr.com
