AppCenter és GitLab integráció

Helló, üdvözlöm!

Szeretném megosztani a tapasztalataimat a GitLab és AppCenter integrációjának beállításáról a BitBucket segítségével.

Az integráció szükségessége az UI tesztek automatikus indításának beállítása során merült fel egy Xamarin alapú, cross-platform projekt esetében. Részletes útmutató a cikk végén!

* Ha érdekel a cross-platform UI tesztelés automatizálása, írok egy külön cikket erről.

Csak egy hasonló anyagot találtam eddig. cikket. Ezért a cikkem segíthet valakinek.

Feladat: Az UI tesztek automatikus indításának beállítása AppCenterben, miközben a csapatunk GitLab-ot használ verziókezelő rendszerként.

Probléma arra jutottam, hogy az AppCenter nem integrálódik közvetlenül a GitLab-bal. Az egyik lehetséges megoldásként a BitBucket használatát választottuk.

Lépések

1. Hozzunk létre egy üres repót a BitBucket-en

Nem látom szükségét, hogy ezt részletesebben kifejtsem 🙂

2. Állítsuk be a GitLab-ot

Szükségünk van arra, hogy a push/merge során a változások a BitBucket-re is eljussanak. Ehhez hozzáadunk egy runner-t (vagy szerkesztjük a meglévő .gitlab-ci.yml fájlt).

Először a before_scripts szekcióba adjuk hozzá a parancsokat

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

Ezt követően hozzáadjuk a következő parancsot a megfelelő stage-hez:

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

Az én esetemben az alábbi fájl jött létre

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

Indítsuk el a buildet, ellenőrizzük, hogy a változásaink/fájljaink megjelentek a BitBucket-en.
* Az eddigi tapasztalat szerint az SSH kulcsok beállítása nem kötelező. De, minden esetre, bemutatom az SSH kapcsolat beállításának lépéseit.

SSH kapcsolódás

Először generálni kell egy SSH kulcsot. Erről számos cikk született. Példa gyanánt nézd meg itt.
A generált kulcsok körülbelül így néznek ki:
AppCenter és GitLab integráció

Ezután a titkos kulcsot mint változót kell hozzáadnunk a GitLab-hoz. Ehhez: Beállítások > CI/CD > Környezeti változók. Hozzáadjuk a titkos kulcs fájljának TELJES tartalmát. Nevezd el a változót SSH_PRIVATE_KEY.
* ez a fájl, ellentétben a nyilvános kulcs fájljával, nem fog kiterjesztést kapni.
AppCenter és GitLab integráció

Szuper, ezután a nyilvános kulcsot a BitBucket-en is hozzá kell adni. Ehhez megnyitjuk a repót, átmegyünk a Beállítások > Hozzáférési kulcsok menüpontra.

AppCenter és GitLab integráció

Itt rákattintunk a Kulcs hozzáadása gombra, és beillesztjük a nyilvános kulcs fájljának tartalmát (fájl .pub kiterjesztéssel).

A következő lépés a kulcsok használata a gitlab-runnerben. Használja ezeket a parancsokat, de a csillagok helyett adja meg a saját adatait.

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. AppCenter beállítása

Új alkalmazást hozunk létre az AppCenter-ben.

AppCenter és GitLab integráció

Megadjuk a nyelvet/platformot.

AppCenter és GitLab integráció

Ezután lépjünk be a frissen létrehozott alkalmazás Build szekciójába. Válasszuk ki a BitBucket-t és a 1. lépés során létrehozott tárolót.

Kiváló, most be kell állítani a buildet. Ehhez keressük meg a fogaskerék ikont.

AppCenter és GitLab integráció

Alapvetően minden intuitív. Válassza ki a projektet és a konfigurációt. Ha szükséges, engedélyezze a tesztek futtatását a build után. Ezek automatikusan elindulnak.

Alapvetően ennyi. Nem tűnik bonyolultnak, de természetesen nem megy minden simán. Ezért néhány hibát írok le, amellyel találkoztam a munka során:

‘ssh-keygen’ nem ismert belső vagy külső parancs.

Ez abból adódik, hogy az ssh-keygen.exe elérési útja nincs hozzáadva a környezeti változókhoz.
Két megoldás van: adja hozzá a C:Program FilesGitusrbin-t a környezeti változókhoz (ez a gép újraindítása után lép életbe), vagy indítsa el a konzolt ebből a könyvtárból.

Az AppCenter nem a megfelelő BitBucket fiókhoz csatlakozott?

A probléma megoldásához le kell választani a BitBucket fiókot az AppCenter-ről. Lépjen be a hibás BitBucket fiókba, majd lépjen a felhasználói profilba.

AppCenter és GitLab integráció

Ezután lépjünk a Beállítások > Hozzáféréskezelés > OAuth menübe.

AppCenter és GitLab integráció

Kattintson a Visszavonás gombra a fiók lekapcsolásához.

AppCenter és GitLab integráció

Ezután be kell jelentkeznie a megfelelő BitBucket fiókba.
* Végső esetben tisztítsa meg a böngésző gyorsítótárát is.

Most lépjen be az AppCenter-be. Lépjen a Build szekcióra, és kattintson a BitBucket fiók lekapcsolására.

AppCenter és GitLab integráció

Miután a régi fiók le lett választva, csatlakoztassa újra az AppCenter-t. Most már a megfelelő fiókhoz.

‘eval’ nem ismert belső vagy külső parancs.

Használja a parancs helyett:

  - eval $(ssh-agent -s)

A parancsot:

  - ssh-agent

Bizonyos esetekben teljes elérési utat kell megadnia a C:Program FilesGitusrbinssh-agent.exe-hez, vagy hozzá kell adnia ezt az utat a rendszer változóihoz azon a gépen, ahol a futtató működik.

Az AppCenter Build megpróbálja elindítani a buildet egy elavult bitBucket tárolóból.

Az én esetemben a probléma abból adódott, hogy több fiókkal dolgoztam. A gyorsítótár törlésével sikerült megoldanom.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster