Integrace AppCenter a GitLab

Ahoj, dobrý den!

Chci se podělit o svou zkušenost s nastavením integrace GitLab a AppCenter přes BitBucket.

Potřeba takové integrace vznikla během nastavování automatického spouštění UI testů pro multiplatformní projekt na Xamarin. Podrobný tutoriál níže!

* O automatizaci UI testování v podmínkách multiplatformnosti napíšu zvláštní článek, pokud bude mít publikace zájem.

Našel jsem pouze jeden podobný materiál článek. Proto může moje článek někomu pomoci.

Úkol: Nastavit automatické spouštění UI testů na AppCenter, když náš tým používá GitLab jako systém pro správu verzí.

Problém ukázalo se, že AppCenter se nezintegruje s GitLab přímo. Jako jedno z řešení byla zvolena obnova přes BitBucket.

Kroky

1. Vytvoříme prázdný repozitář na BitBucket

Nepovažuji za nutné to popisovat podrobněji 🙂

2. Nastavujeme GitLab

Je potřeba, aby při push/merge do repozitáře byly změny odeslány i na BitBucket. K tomu přidáme runner (nebo upravíme existující soubor .gitlab-ci.yml).

Nejprve přidáme příkazy do sekce before_scripts

 - git config --global user.email "user@email"
 - git config --global user.name "username"

Pak přidáme následující příkaz do potřebné fáze:

- git push --mirror https://username:password@bitbucket.org/username/projectname.git

V mém případě vypadal soubor takto

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

Spustíme build, zkontrolujeme, že na BitBucket byly naše změny/soubory.
* jak ukázala praxe, nastavení SSH klíčů není nutné. Ale pro každý případ uvedu algoritmus pro nastavení připojení přes SSH níže

Připojení přes SSH

Nejprve je potřeba vygenerovat SSH klíč. O tom bylo napsáno mnoho článků. Pro příklad se můžete podívat tady.
Vygenerované klíče vypadají zhruba takto:
Integrace AppCenter a GitLab

Dále tajný klíč musí být přidán jako proměnná na GitLab. K tomu jdeme do Nastavení > CI/CD > Proměnné prostředí. Přidáme CELÝ obsah souboru, do kterého jste uložili tajný klíč. Pojmenujeme proměnnou SSH_PRIVATE_KEY.
* tento soubor, na rozdíl od souboru s veřejným klíčem, nebude mít žádnou příponu
Integrace AppCenter a GitLab

Skvělé, dále je potřeba přidat veřejný klíč na BitBucket. K tomu otevřeme repozitář, přejdeme do Nastavení > Přístupové klíče.

Integrace AppCenter a GitLab

Zde klikneme na Přidat klíč a vložíme obsah souboru s veřejným klíčem (soubor s příponou .pub).

Dalším krokem bude použití klíčů v gitlab-runner. Použijte tyto příkazy, ale místo hvězdiček zadejte své ú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. Nastavení AppCenter

Vytváříme novou aplikaci v AppCenter.

Integrace AppCenter a GitLab

Zadáváme jazyk/platformu

Integrace AppCenter a GitLab

Dále přejdeme do sekce Build právě vytvořené aplikace. Vybereme tam BitBucket a repozitář, který byl vytvořen v kroku 1.

Výborně, nyní je potřeba nastavit build. K tomu najdeme ikonu ozubeného kola

Integrace AppCenter a GitLab

V podstatě je to tam všechno intuitivně pochopitelné. Vybereme projekt a konfiguraci. V případě potřeby zapneme spuštění testů po buildu. Ty budou spuštěny automaticky.

V podstatě je to tímto všechno. Zní to jednoduše, ale samozřejmě ne všechno půjde hladce. Proto popíšu některé chyby, se kterými jsem se během práce setkala:

‘ssh-keygen’ není rozpoznán jako interní nebo externí příkaz.

Vyskytuje se to proto, že cesta k ssh-keygen.exe není přidána do proměnných prostředí.
Existují dvě možnosti: přidejte C:Program FilesGitusrbin do proměnných prostředí (bude platit po restartování stroje), nebo spusťte konzoli z této složky.

AppCenter se nepřipojil k tomu účtu BitBucket?

Pro vyřešení problému je potřeba odpojit účet BitBucket od AppCenter. Přihlaste se do nesprávného účtu BitBucket a přejděte do uživatelského profilu.

Integrace AppCenter a GitLab

Dále přejděte do Settings > Access Management > OAuth

Integrace AppCenter a GitLab

Klikněte na Revoke, abyste účet odpojili.

Integrace AppCenter a GitLab

Poté se musíte přihlásit s požadovaným účtem BitBucket
* V krajním případě také vymazat cache prohlížeče

Nyní přejdeme do AppCenter. přejdeme do sekce Build, klikněte na Disconnect BitBucket account

Integrace AppCenter a GitLab

Jakmile bude starý účet odpojen, připojte AppCenter znovu. Nyní již k požadovanému účtu.

‘eval’ není rozpoznán jako interní nebo externí příkaz

Použijte místo příkazu

  - eval $(ssh-agent -s)

Příkaz:

  - ssh-agent

V některých případech bude potřeba nebo uvést úplnou cestu k C:Program FilesGitusrbinssh-agent.exe, nebo tento cestu přidat do systémových proměnných na stroji, kde běží runner

AppCenter Build se snaží spustit build pro projekt z neaktuálního bitBucket repozitáře

V mém případě problém vznikl, protože jsem pracovala s několika účty. Řešení bylo vymazání cache.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster