Ahoj, zdravím vás!
Chcem sa podeliť o svoju skúsenosť s nastavením integrácie GitLab a AppCenter cez BitBucket.
Potreba takejto integrácie vznikla pri nastavovaní automatického spúšťania UI testov pre multiplatformný projekt na Xamarin. Podrobný návod nájdete nižšie!
* O automatizácii UI testovania v podmienkach multiplatformnosti napíšem samostatný článok, ak bude mať publikácia záujem.
Našla som len jeden takýto materiál . Preto môže moja článok niekomu pomôcť.
Úloha: Nastaviť automatické spúšťanie UI testov na AppCenter, pričom naša tím používa GitLab ako systém správy verzií.
Problém ukázalo sa, že AppCenter sa priamo neintegruje s GitLab. Ako jedno z riešení bola zvolená obchádzacia cesta cez BitBucket.
Kroky
1. Vytvorte prázdny repozitár na BitBucket
Nepovažujem za potrebné popisovať to podrobnejšie 🙂
2. Nastavujeme GitLab
Musíme zabezpečiť, aby sa pri push/merge do repozitára zmeny nahrávali aj na BitBucket. Na to pridáme runner (alebo upravíme existujúci súbor .gitlab-ci.yml).
Najprv pridáme príkazy do sekcie before_scripts
- git config --global user.email "user@email"
- git config --global user.name "username"Potom pridáme nasledujúci príkaz do požadovanej úrovne:
- git push --mirror https://username:password@bitbucket.org/username/projectname.gitV mojom prípade vznikol takýto súbor
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.gitSpustite build a overte, že sa na BitBucket preniesli naše zmeny/súbory.
* Ako ukázala prax, nastavenie SSH kľúčov nie je povinné. Ale pre každý prípad, uvediem níže algoritmus nastavenia pripojenia práve cez SSH.
Pripojenie cez SSH
Najprv je potrebné vygenerovať SSH kľúč. O tomto bolo napísaných množstvo článkov. Ako príklad sa môžete pozrieť na .
Vygenerované kľúče vyzerajú približne takto:

Ďalej tajný kľúč je potrebné pridať ako premennú na GitLab. Na to prejdite do nastavení > CI/CD > Environment Variables. Pridajte VŠETKY obsah súboru, do ktorého ste uložili tajný kľúč. Nazveme premennú SSH_PRIVATE_KEY.
* tento súbor, na rozdiel od súboru s otvoreným kľúčom, nebude mať príponu

Skvele, teraz je potrebné pridať otvorený kľúč na BitBucket. Na to otvoríme repozitár, prejdeme do nastavení > Access Keys.

Tu klikneme na Pridať kľúč a vložíme obsah súboru s verejným kľúčom (súbor s príponou .pub).
Ďalším krokom bude použitie kľúčov v gitlab-runner. Použite tieto príkazy, ale zadajte namiesto hviezdičiek svoje údaje
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. Nastavenie AppCenter
Vytvárame novú aplikáciu na AppCenter.

Umiestnite jazyk/platformu

Potom prejdeme do sekcie Build čerstvo vytvorenej aplikácie. Vyberieme tam BitBucket a repo, vytvorené v kroku 1.
Skvelé, teraz je potrebné nastaviť build. Na to nájdeme ikonu ozubeného kolesa

V podstate je to všetko intuitívne. Vyberieme projekt a konfiguráciu. Ak je potrebné, zapneme spúšťanie testov po buildu. Tie budú spúšťané automaticky.
V podstate, to je všetko. Znie to jednoducho, ale samozrejme, všetko nebude hladké. Preto popíšem niektoré chyby, s ktorými som sa stretla počas práce:
‘ssh-keygen’ nie je uznaný ako interný alebo externý príkaz.
Objavuje sa kvôli tomu, že cesta k ssh-keygen.exe nie je pridaná do premenných prostredia.
Sú dve možnosti: pridajte C:Program FilesGitusrbin do premenných prostredia (bude platiť po reštartovaní stroja), alebo spúšťajte konzolu z tejto adresáre.
AppCenter sa nepripojil k tomu BitBucket účtu?
Na vyriešenie problému je potrebné odpojiť účet BitBucket od AppCenter. Prejdite do nesprávneho BitBucket účtu a choďte do profilu používateľa.

Potom prejdeme do Settings > Access Management > OAuth

Klikneme na Revoke, aby sme odpojili účet.

Potom je potrebné prihlásiť sa pod správnym BitBucket účtom
* V krajnom prípade tiež vyčistite cache prehliadača
Teraz prejdeme do AppCenter. Prejdeme do sekcie Build a klikneme na Disconnect BitBucket account

Keď bude starý účet odpojený, pripojíme AppCenter znovu. Teraz už k správnemu účtu.
‘eval’ nie je uznaný ako interný alebo externý príkaz
Použijeme namiesto príkazu
- eval $(ssh-agent -s)Príkaz:
- ssh-agentV niektorých prípadoch bude potrebné buď uviesť celú cestu k C:Program FilesGitusrbinssh-agent.exe, alebo pridať túto cestu do systémových premenných na stroji, kde beží runner
AppCenter Build sa pokúša spustiť build projektu z neaktuálneho bitBucket repo
V mojom prípade problém vznikol kvôli tomu, že som pracovala s viacerými účtami. Riešilo sa to vymazaním cache.
Zdroj: habr.com
