Integracija AppCenter i GitLab

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

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

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

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

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

Integracija AppCenter i GitLab

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

3. Nastavitev AppCenter

Ustvarimo novo aplikacijo na AppCenter.

Integracija AppCenter i GitLab

Določite jezik/platformo

Integracija AppCenter i GitLab

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.

Integracija AppCenter i GitLab

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.

Integracija AppCenter i GitLab

Nato preidite v Nastavitve > Upravljanje dostopa > OAuth

Integracija AppCenter i GitLab

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

Integracija AppCenter i GitLab

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.

Integracija AppCenter i GitLab

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

V 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

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster