AppCenter'i ja GitLabi integreerimine

Tere, tervitused!

Soovin jagada oma kogemust GitLabi ja AppCentri integreerimise seadistamisel läbi BitBucket'i.

Sellise integreerimise vajadus tekkis automaatsete UI testide käivitamise seadistamise käigus krossplatvormi projektis Xamarin'is. Üksikasjalik õpetus on allpool!

* UI testimise automatiseerimisest krossplatvormi tingimustes teen ma eraldi artikli, kui publik on huvitatud.

Sarnast materjali leidsin vaid ühe. artiklileSeega võib minu artikkel kellelegi abiks olla.

Ülesanne: Seada automaatne UI testide käivitamine AppCenter'is, samas kui meie meeskond kasutab GitLab'i kui versioonihaldussüsteemi.

Probleem Selgus, et AppCenter ei integreeru GitLab'iga otse. Üks lahendusena valiti ringkäik läbi BitBucket'i.

Sammud

1. Loome tühja BitBucket'i hoidla.

Ei näe vajadust selgitada seda põhjalikumalt 🙂

2. Seadistame GitLabi.

Peame tagama, et push/merge'i korral laekuvad muudatused ka BitBucket'i. Selleks lisame runner'i (või redigeerime olemasolevat .gitlab-ci.yml faili).

Esmalt lisame käsud before_scripts sektsiooni:

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

Seejärel lisame järgmise käsu vajalikku etappi:

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

Minu puhul tuli välja selline fail

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

Käivitame buildu ja kontrollime, et meie muudatused/failid on BitBucketis olemas.
* praktika on näidanud, et SSH võtmete seadistamine ei ole kohustuslik. Kuid igaks juhuks toon allpool SSH kaudu ühenduse seadistamise algoritmi.

Ühendamine SSH kaudu

Esmalt tuleb genereerida SSH võti. Sellega on kirjutatud palju artikleid. Näiteks võite vaadata siin.
Genereritud võtmed näevad umbes välja nii:
AppCenter'i ja GitLabi integreerimine

Seejärel salajane võti tuleb lisada muutujana GitLabi. Selleks läheme Settings > CI/CD > Environment Variables. Lisame KOGU faili sisu, kuhu olete salvestanud salajase võtme. Nimetame muutuja SSH_PRIVATE_KEY.
* see fail, erinevalt avaliku võtme failist, ei saa laienemist
AppCenter'i ja GitLabi integreerimine

Suurepärane, nüüd tuleb lisada avalik võti BitBucketisse. Selleks avame reposi, läheme Settings > Access Keys.

AppCenter'i ja GitLabi integreerimine

Siin vajutame Add Key ja sisestame avaliku võtme faili sisu (fail koos laiendiga .pub).

Järgmiseks sammuks on võtmete kasutamine gitlab-runneris. Kasutage neid käske, kuid asendage tärnid oma andmetega.

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. AppCenteri seadistamine

Loome uue rakenduse AppCenteris.

AppCenter'i ja GitLabi integreerimine

Määrame keele/platformi.

AppCenter'i ja GitLabi integreerimine

Järgmisena siseneme Build sektsiooni just loodud rakenduses. Valime seal BitBucket'i ja rea, mis loodi 1. etapis.

Suurepärane, nüüd tuleb seadistada build. Selleks leiame hammasratta ikooni.

AppCenter'i ja GitLabi integreerimine

Põhimõtteliselt on seal kõik intuitiivselt arusaadav. Valime projekti ja konfiguratsiooni. Vajadusel lülitame sisse testide käivitamise pärast buildi. Need käivituvad automaatselt.

Põhimõtteliselt on see kõik. See kõlab kergelt, kuid loomulikult ei lähe kõik sujuvalt. Seetõttu kirjeldan mõningaid vigu, millega ma töö käigus kokku puutusin:

‘ssh-keygen’ ei ole tuntud sisemise või välise käsuna.

See tekib, kuna ssh-keygen.exe tee ei ole lisatud keskkonnamuutujatesse.
On kaks võimalust: lisada C:Program FilesGitusrbin Enviroment Variables (rakendub pärast arvuti taaskäivitamist) või käivita terminal sellest kataloogist.

Kas AppCenter on ühendatud vale BitBucket kontoga?

Probleemi lahendamiseks tuleb BitBucket konto AppCenter'ist lahti siduda. Logi sisse valele BitBucket kontole ja mine kasutaja profiili.

AppCenter'i ja GitLabi integreerimine

Siis mine Settings > Access Management > OAuth

AppCenter'i ja GitLabi integreerimine

Klõpsa Revoke, et konto lahti siduda.

AppCenter'i ja GitLabi integreerimine

Seejärel logi sisse õige BitBucket kontoga.
* Tingimustel tuleb ka brauseri vahemälu puhastada.

Nüüd mine AppCenterisse. Mine Build sektsiooni ja kliki Disconnect BitBucket account.

AppCenter'i ja GitLabi integreerimine

Kui vana konto on lahti seotud, siduge AppCenter uuesti. Nüüd juba õige kontoga.

‘eval’ ei ole tuntud sisemise ega välise käsuna.

Kasutame käsu asemel

  - eval $(ssh-agent -s)

Käsku:

  - ssh-agent

Mõnikord tuleb kas märkida täistee C:Program FilesGitusrbinssh-agent.exe või lisada see tee süsteemi muutujatesse masinas, kus runner töötab.

AppCenter Build üritab käivitada buildi projekti jaoks mitteaktiivses BitBucket repos.

Minu puhul tekkis probleem seetõttu, et töötasin mitme kontoga. See lahendati vahemälu puhastamisega.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster