Pozdrav, dobar dan!
Želim podijeliti svoje iskustvo s postavljanjem integracije GitLab i AppCenter putem BitBucket-a.
Potreba za ovom integracijom nastala je prilikom postavljanja automatskog pokretanja UI testova za višekratnu platformu na Xamarin-u. Detaljni tutorijal ispod!
* Ako vas zanima, napisat ću poseban članak o automatizaciji UI testiranja u uvjetima višekratne platforme.
Naišla sam samo na jedan sličan materijal. . Zato moja članak može nekome pomoći.
Zadatak: Postaviti automatsko pokretanje UI testova na AppCenter dok naša ekipa koristi GitLab kao sustav za kontrolu verzija.
Problem ispalo je da AppCenter ne integrira direktno s GitLab-om. Kao jedno od rješenja odabran je zaobilaženje putem BitBucket-a.
Koraci
1. Stvaramo prazni repozitorij na BitBucket-u
Ne vidim potrebu da ovo detaljnije opisujem 🙂
2. Postavljanje GitLab-a
Potrebno je da prilikom push/merge-a u repozitorij promjene budu prenesene i na BitBucket. Zato dodajemo runner (ili uređujemo postojeći .gitlab-ci.yml datoteku).
Prvo dodajemo naredbe u sekciju before_scripts
- git config --global user.email "user@email"
- git config --global user.name "username"Zatim dodajemo sljedeću naredbu u odgovarajuću fazu:
- git push --mirror https://username:password@bitbucket.org/username/projectname.gitU mom slučaju rezultat je bio ovakav datoteka
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, provjeravamo da su promjene/datoteke došle na BitBucket.
* kao što je praksa pokazala, postavljanje SSH ključeva nije obavezno. Ali, za svaki slučaj, u nastavku ću objasniti kako postaviti vezu putem SSH.
Povezivanje putem SSH
Prvo treba generirati SSH ključ. O tome je napisano mnogo članaka. Kao primjer, možete pogledati .
Generirani ključevi izgledaju otprilike ovako:

Dalje privatni ključ treba dodati kao varijablu na GitLab-u. Za to odlazimo u Settings > CI/CD > Environment Variables. Dodajemo SVE sadržaj datoteke u koju ste spremili privatni ključ. Nazovimo varijablu SSH_PRIVATE_KEY.
* ova datoteka, za razliku od datoteke s javnim ključem, neće imati ekstenziju

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

Ovde kliknemo Add Key i umetnemo sadržaj datoteke s javnim ključem (datoteka s ekstenzijom .pub).
Sljedeći korak bit će korištenje ključeva u gitlab-runneru. Koristite ove naredbe, ali umjesto zvjezdica navedite 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. Postavljanje AppCentra
Stvaramo novu aplikaciju na AppCentru.

Odabiremo jezik/platformu

Zatim idemo u odjeljak Build novostvorene aplikacije. Tamo biramo BitBucket i repozitorij stvoren u koraku 1.
Odlično, sada trebamo postaviti build. Za to pronalazimo ikonu zupčanika

U principu, sve je intuitivno jasno. Biramo projekt i konfiguraciju. Ako je potrebno, uključujemo pokretanje testova nakon builda. Oni će se automatski pokrenuti.
U principu, to je sve. Zvuči jednostavno, ali, naravno, ne ide sve glatko. Stoga ću opisati neke greške s kojima sam se susrela tijekom rada:
‘ssh-keygen’ nije prepoznat kao unutarnja ili vanjska komanda.
Pojavljuje se jer put do ssh-keygen.exe nije dodan u varijable okruženja.
Postoje dvije opcije: dodajte C:Program FilesGitusrbin u Varijable okruženja (primijenit će se nakon ponovnog pokretanja računala), ili pokrenite konzolu iz ove direktorije.
AppCenter se povezao s pogrešnim BitBucket računom?
Za rješavanje problema potrebno je odvojiti BitBucket račun od AppCentra. Idemo na pogrešni BitBucket račun, odlazimo u korisnički profil.

Zatim idemo na Postavke > Upravljanje pristupom > OAuth

Kliknite Revoke da odvojite račun.

Nakon toga trebate se prijaviti s pravim BitBucket računom
* U krajnjem slučaju također trebate očistiti predmemoriju preglednika
Sada se vraćamo u AppCenter. Idemo u odjeljak Build, kliknemo Disconnect BitBucket account

Kada stari račun bude odspojen, ponovno povezujemo AppCenter. Sada s pravim računom.
‘eval’ nije prepoznat kao unutarnja ili vanjska komanda
Koristimo umjesto komande
- eval $(ssh-agent -s)Naredbu:
- ssh-agentU nekim slučajevima ćete možda morati navesti puni put do C:Program FilesGitusrbinssh-agent.exe, ili dodati ovaj put u sistemske varijable na računalu gdje je runner pokrenut
AppCenter Build pokušava pokrenuti build za projekt iz neaktualnog BitBucket repozitorija
U mom slučaju problem je nastao zbog rada s nekoliko računa. Rješenje je bilo brisanje predmemorije.
Izvor: habr.com
