AppCenter és GitLab integráció

Tryam, szia!

A GitLab és az AppCenter integráció BitBucketen keresztüli beállításával kapcsolatos tapasztalataimról szeretnék beszélni.

Az ilyen integráció szükségessége akkor merült fel, amikor beállítottuk az UI-tesztek automatikus indítását egy többplatformos projekthez a Xamarinon. Részletes bemutató a vágás alatt!

* Ha a közvéleményt érdekli, külön cikket készítek a felhasználói felület tesztelésének automatizálásáról platformfüggetlen körülmények között.

Csak egy ilyen anyagot ástam ki статью. Ezért cikkem segíthet valakinek.

Feladat: UI tesztek automatikus elindítása az AppCenterben, mivel csapatunk a GitLabot használja verzióvezérlő rendszerként.

probléma Kiderült, hogy az AppCenter nem integrálódik közvetlenül a GitLab-ba. A BitBucket-en keresztüli bypass-t választották az egyik megoldásnak.

Lépések

1. Hozzon létre egy üres tárolót a BitBucketen

Nem látom szükségét ennek részletesebb leírására :)

2. A GitLab beállítása

Szükségünk van arra, hogy az adattárba tolásakor/egyesítéskor a változások a BitBucketbe is felkerüljenek. Ehhez adjon hozzá egy futót (vagy szerkessze a meglévő .gitlab-ci.yml fájlt).

Először adjunk hozzá parancsokat a before_scripts részhez

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

Ezután adja hozzá a következő parancsot a kívánt szakaszhoz:

- git push --mirror https://username:[email protected]/username/projectname.git

Az én esetemben ez a fájl, amit kaptam:

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

Elindítjuk a buildet, ellenőrizzük, hogy a változtatásaink/fájljaink a BitBucketen vannak-e.
* Amint a gyakorlat azt mutatja, az SSH-kulcsok beállítása nem kötelező. De minden esetre alább megadok egy algoritmust az SSH-n keresztüli kapcsolat beállításához

Csatlakozás SSH-n keresztül

Először létre kell hoznia egy SSH-kulcsot. Sok cikk született erről. Például meg lehet nézni itt.
A generált kulcsok valahogy így néznek ki:
AppCenter és GitLab integráció

További A titkos kulcs változóként kell hozzáadni a GitLabhoz. Ehhez lépjen a Beállítások > CI/CD > Környezeti változók menüpontba. Adja hozzá annak a fájlnak az ÖSSZES tartalmát, amelybe a titkos kulcsot mentette. Hívjuk meg az SSH_PRIVATE_KEY változót.
* ennek a fájlnak a nyilvános kulcsú fájltól eltérően nem lesz kiterjesztése
AppCenter és GitLab integráció

Remek, ezután hozzá kell adnia a nyilvános kulcsot a BitBuckethez. Ehhez nyissa meg a tárolót, és lépjen a Beállítások > Hozzáférési kulcsok menüpontba.

AppCenter és GitLab integráció

Itt kattintunk a Kulcs hozzáadása gombra, és beillesztjük a fájl tartalmát a nyilvános kulccsal (.pub kiterjesztésű fájl).

A következő lépés a kulcsok használata a gitlab-runnerben. Használja ezeket a parancsokat, de cserélje ki a csillagokat saját adataival

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 [email protected]

mirror:
  stage: mirror
  script:
    - git push --mirror https://****:****@bitbucket.org/*****/*****.git

3. Az AppCenter beállítása

Létrehozunk egy új alkalmazást az AppCenteren.

AppCenter és GitLab integráció

Adja meg a nyelvet/platformot

AppCenter és GitLab integráció

Ezután lépjen az újonnan létrehozott alkalmazás Build részéhez. Itt kiválasztjuk a BitBucket-et és az 1. lépésben létrehozott tárolót.

Remek, most konfigurálnunk kell a buildet. Ehhez keresse meg a fogaskerék ikont

AppCenter és GitLab integráció

Elvileg ott minden intuitív. Válasszon ki egy projektet és konfigurációt. Ha szükséges, engedélyezze a tesztek elindítását a build után. Ezek automatikusan elindulnak.

Lényegében ennyi. Egyszerűen hangzik, de természetesen nem megy minden simán. Ezért leírok néhány hibát, amivel munka közben találkoztam:

Az 'ssh-keygen' parancsot nem ismeri fel belső vagy külső parancsként.

Ez azért is előfordul, mert az ssh-keygen.exe elérési útja nincs hozzáadva a környezeti változókhoz.
Két lehetőség van: a C:Program FilesGitusrbin hozzáadása a környezeti változókhoz (a gép újraindítása után kerül alkalmazásra), vagy indítsa el a konzolt ebből a könyvtárból.

Az AppCenter rossz BitBucket-fiókhoz csatlakozott?

A probléma megoldásához le kell választania BitBucket-fiókját az AppCenterről. Rossz BitBucket fiókba jelentkezünk be, és a felhasználói profilhoz lépünk.

AppCenter és GitLab integráció

Ezután lépjen a Beállítások > Hozzáféréskezelés > OAuth menüpontba

AppCenter és GitLab integráció

Kattintson a Visszavonás gombra a fiók leválasztásához.

AppCenter és GitLab integráció

Ezt követően be kell jelentkeznie a szükséges BitBucket fiókkal.
* Végső megoldásként törölje a böngésző gyorsítótárát is.

Most menjünk az AppCenterhez. lépjen a Build szakaszhoz, kattintson a BitBucket-fiók leválasztása lehetőségre

AppCenter és GitLab integráció

A régi fiók leválasztása után újra összekapcsoljuk az AppCentert. Most a kívánt fiókhoz.

Az 'eval' parancsot nem ismeri fel belső vagy külső parancsként

Parancs helyett használjuk

  - eval $(ssh-agent -s)

Csapat:

  - ssh-agent

Bizonyos esetekben meg kell adnia a C:Program FilesGitusrbinssh-agent.exe teljes elérési útját, vagy hozzá kell adnia ezt az elérési utat a rendszerváltozókhoz azon a gépen, amelyen a futó fut.

Az AppCenter Build egy projekt összeállítását próbálja elindítani egy elavult bitBucket tárolóból

Az én esetemben a probléma azért merült fel, mert több fiókkal dolgoztam. Úgy döntöttem, hogy törli a gyorsítótárat.

Forrás: will.com

Hozzászólás