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 . 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.gitV 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.gitSpustí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 .
Vygenerované klíče vypadají zhruba takto:

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

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.

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/*****/*.git3. Nastavení AppCenter
Vytváříme novou aplikaci v AppCenter.

Zadáváme jazyk/platformu

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

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.

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

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

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

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