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
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
A generált kulcsok valahogy így néznek ki:
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
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.
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.
Adja meg a nyelvet/platformot
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
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.
Ezután lépjen a Beállítások > Hozzáféréskezelés > OAuth menüpontba
Kattintson a Visszavonás gombra a fiók leválasztásához.
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
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