Integrácia AppCenter a GitLab

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 článok. 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.git

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

Spustite 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 tu.
Vygenerované kľúče vyzerajú približne takto:
Integrácia AppCenter a GitLab

Ď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
Integrácia AppCenter a GitLab

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

Integrácia AppCenter a GitLab

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

3. Nastavenie AppCenter

Vytvárame novú aplikáciu na AppCenter.

Integrácia AppCenter a GitLab

Umiestnite jazyk/platformu

Integrácia AppCenter a GitLab

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

Integrácia AppCenter a GitLab

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.

Integrácia AppCenter a GitLab

Potom prejdeme do Settings > Access Management > OAuth

Integrácia AppCenter a GitLab

Klikneme na Revoke, aby sme odpojili účet.

Integrácia AppCenter a GitLab

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

Integrácia AppCenter a GitLab

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

V 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

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster