Pozdrav, zdravo!
Želim da podelim svoje iskustvo u postavljanju integracije GitLab-a i AppCenter-a preko BitBucket-a.
Potrebna je takva integracija u sklopu automatizovanog pokretanja UI testova za multidomenzionalni projekat na Xamarin-u. Detaljan tutorijal je ispod!
* O automatizaciji UI testiranja u uslovima multidomenzionalnosti ću napisati poseban članak ako se objavi interesovanje.
Sličan materijal sam pronašao samo jedan. . Stoga može pomoći nekome.
Naloga: Postaviti automatsko pokretanje UI testova na AppCenter-u uz to što naš tim koristi GitLab kao sistem za kontrolu verzija.
Težava ispostavilo se da se AppCenter ne integriše direktno s GitLab-om. Kao jedno od rešenja, izabran je obilazak preko BitBucket-a.
Koraci
1. Kreiramo prazan repozitorijum na BitBucket-u.
Ne vidim potrebu da ovo detaljnije objašnjavam 🙂
2. Konfigurišemo GitLab.
Potrebno je da prilikom push/merge u repozitorijum, izmene budu i na BitBucket-u. Za to dodajemo runner (ili uređujemo postojeći .gitlab-ci.yml fajl).
Prvo dodajemo komande u sekciju before_scripts.
- git config --global user.email "user@email"
- git config --global user.name "username"Zatim dodajemo sledeću komandu u potrebni stage:
- git push --mirror https://username:password@bitbucket.org/username/projectname.gitU mom slučaju dobija se ovakav fajl:
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.gitPokrećemo build, proveravamo da li su se izmene/fajlovi prebacili na BitBucket.
* kao što praksa pokazuje, podešavanje SSH ključeva nije obavezno. Ali, iz predostrožnosti, iznosiću algoritam za postavljanje veze upravo preko SSH ispod.
Povezivanje putem SSH.
Prvo je potrebno generisati SSH ključ. O tome je napisano mnogo članaka. Kao primer možete pogledati .
Generisani ključevi izgledaju otprilike ovako:

Naprej tajni ključ treba dodati kao promenljivu na GitLab-u. Za to idemo u Settings > CI/CD > Environment Variables. Dodajemo SVE sadržaj fajla u koji ste sačuvali tajni ključ. Nazovimo promenljivu SSH_PRIVATE_KEY.
* ovaj fajl, za razliku od fajla s otvorenim ključem, neće imati ekstenziju.

Odlično, zatim treba dodati otvoreni ključ na BitBucket. Za to otvaramo repozitorij, prelazimo u Settings > Access Keys.

Ovde kliknemo Add Key i ubacujemo sadržaj fajla s javnim ključem (fajl s ekstenzijom .pub).
Naslednji korak bo uporaba ključev v gitlab-runner. Uporabite te ukaze, vendar namesto zvezdic vstavite svoje podatke.
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. Nastavitev AppCenter
Ustvarimo novo aplikacijo na AppCenter.

Določite jezik/platformo

Nato gremo v razdelek Build novoustanovljene aplikacije. Izberemo BitBucket in repozitorij, ki je bil ustvarjen v koraku 1.
Odlično, zdaj moramo nastaviti build. Za to najdemo ikono zobnika.

Na splošno je vse intuitivno razumljivo. Izberemo projekt in konfiguracijo. Po potrebi omogočimo zagon testov po gradnji. Ti se bodo zagnali samodejno.
Na splošno je to vse. Zveni enostavno, vendar se, seveda, ne bo vse gladko izšlo. Zato bom opisala nekatere napake, s katerimi sem se srečala med delom:
‘ssh-keygen’ ni prepoznana kot notranji ali zunanji ukaz.
Do tega pride, ker pot do ssh-keygen.exe ni dodana v okoljske spremenljivke.
Dva sta možnosti: dodajte C:Program FilesGitusrbin v okoljske spremenljivke (to bo veljalo po ponovnem zagonu računalnika) ali pa zaženite konzolo iz te mape.
AppCenter se ni povezal s pravim BitBucket računom?
Za rešitev problema morate odvezati BitBucket račun od AppCenter. Prijavite se v napačen BitBucket račun in pojdite na profil uporabnika.

Nato preidite v Nastavitve > Upravljanje dostopa > OAuth

Kliknite na Odveži, da odvržete račun.

Po tem se morate prijaviti v pravem BitBucket računu.
* V skrajnem primeru še očistite predpomnilnik brskalnika.
Zdaj preidite na AppCenter, pojdite v razdelek Build, kliknite Odveži BitBucket račun.

Ko bo stari račun odvezan, ponovno povežite AppCenter. Tokrat s pravim računom.
‘eval’ ni prepoznan kot notranji ali zunanji ukaz.
Namesto ukaza uporabite
- eval $(ssh-agent -s)Ukaz:
- ssh-agentV nekaterih primerih boste morali ali pa navesti celotno pot do C:Program FilesGitusrbinssh-agent.exe, ali dodati to pot v sistemske spremenljivke na računalniku, kjer se izvaja runner.
AppCenter Build poskuša zagnati build za projekt iz neaktualnega bitBucket repozitorija.
V mojem primeru je težava nastala, ker sem delala z več računi. Rešila se je s čiščenjem predpomnilnika.
Izvor: habr.com
