Integracija AppCenter i GitLab

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. članak. 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.git

U 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.git

Pokreć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 ovdje.
Generirani ključevi izgledaju otprilike ovako:
Integracija AppCenter i GitLab

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
Integracija AppCenter i GitLab

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

Integracija AppCenter i GitLab

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/*****/*.git

3. Postavljanje AppCentra

Stvaramo novu aplikaciju na AppCentru.

Integracija AppCenter i GitLab

Odabiremo jezik/platformu

Integracija AppCenter i GitLab

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

Integracija AppCenter i GitLab

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.

Integracija AppCenter i GitLab

Zatim idemo na Postavke > Upravljanje pristupom > OAuth

Integracija AppCenter i GitLab

Kliknite Revoke da odvojite račun.

Integracija AppCenter i GitLab

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

Integracija AppCenter i GitLab

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-agent

U 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

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster