Integration av AppCenter och GitLab

Hej, god dag!

Jag vill berÀtta om min erfarenhet av att sÀtta upp integrationen mellan GitLab och AppCenter via BitBucket.

Behovet av en sÄdan integration uppstod under instÀllningen av automatisk körning av UI-tester för ett plattformsoberoende projekt pÄ Xamarin. En detaljerad handledning finns nedan!

* Jag kommer att skriva en separat artikel om automatisering av UI-testning i plattformsoberoende miljöer om lÀsarna Àr intresserade.

Jag har bara hittat ett sÄdant material. artikeln. DÀrför kan min artikel kanske vara till hjÀlp för nÄgon.

Uppgift: Att stÀlla in automatisk körning av UI-tester pÄ AppCenter, med tanke pÄ att vÄrt team anvÀnder GitLab som versionshanteringssystem.

Problemet visade sig vara att AppCenter inte integreras direkt med GitLab. En av lösningarna var att vÀlja en omvÀg via BitBucket.

Steg

1. Skapa ett tomt repository pÄ BitBucket

Jag ser ingen anledning att beskriva detta mer ingĂ„ende 🙂

2. StÀll in GitLab

Vi behöver att vid push/merge till repositoryn sÄ laddas Àndringarna Àven upp till BitBucket. För detta lÀgger vi till en runner (eller redigerar den befintliga .gitlab-ci.yml-filen).

Först lÀgger vi till kommandon i avsnittet before_scripts

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

Sedan lÀgger vi till följande kommando i det nödvÀndiga steget:

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

I mitt fall blev filen sÄ hÀr

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

Starta bygget, kontrollera att vÄra Àndringar/filer hamnat pÄ BitBucket.
* Som erfarenheten visat, Àr instÀllningen av SSH-nycklar inte nödvÀndig. Men, för sÀkerhets skull, kommer jag att ge algoritmen för att stÀlla in anslutning specifikt via SSH nedan.

Anslutning via SSH

Först behöver vi generera en SSH-nyckel. Det finns mÄnga artiklar som beskriver detta. För exempel kan du titta pÄ ). Ett typiskt exempel pÄ anvÀndning:.
De genererade nycklarna ser ut ungefÀr sÄ hÀr:
Integration av AppCenter och GitLab

NÀsta hemlig nyckel mÄste lÀggas till som en variabel pÄ GitLab. För detta gÄr vi till InstÀllningar > CI/CD > Miljövariabler. Vi lÀgger till ALLT innehÄll i filen dÀr du sparade den hemliga nyckeln. Vi kallar variabeln SSH_PRIVATE_KEY.
* denna fil, till skillnad frÄn filen med den öppna nyckeln, kommer inte att ha nÄgon tillÀgg
Integration av AppCenter och GitLab

UtmĂ€rkt, nĂ€sta steg Ă€r att lĂ€gga till den öppna nyckeln pĂ„ BitBucket. För detta öppnar vi repositoryt, gĂ„r till InstĂ€llningar > Åtkomstnycklar.

Integration av AppCenter och GitLab

HÀr klickar vi pÄ LÀgg till nyckel och klistrar in innehÄllet i filen med den offentliga nyckeln (filen med tillÀgget .pub).

Det nÀsta steget Àr att anvÀnda nycklar i gitlab-runner. AnvÀnd dessa kommandon, men ange dina egna uppgifter istÀllet för stjÀrnorna.

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. Konfigurera AppCenter

Skapa en ny applikation i AppCenter.

Integration av AppCenter och GitLab

Ange sprÄk/plattform

Integration av AppCenter och GitLab

GÄ sedan till avsnittet Bygg för den nyss skapade applikationen. VÀlj dÀr BitBucket och det repository som skapades i steg 1.

Perfekt, nu behöver vi konfigurera byggningen. För detta hittar vi kugghjulsikonen.

Integration av AppCenter och GitLab

I princip Àr allt instinktivt förstÄeligt dÀr. VÀlj projekt och konfiguration. Aktivera testkörning efter byggningen om det behövs. De kommer att köras automatiskt.

I princip Àr det allt. Det lÄter inte svÄrt, men naturligtvis kommer det inte att gÄ smidigt hela vÀgen. DÀrför beskriver jag nÄgra fel som jag stött pÄ under arbetet:

‘ssh-keygen’ Ă€r inte igenkĂ€nt som ett internt eller extern kommando.

Det beror pÄ att sökvÀgen till ssh-keygen.exe inte har lagts till i miljövariablerna.
Det finns tvÄ alternativ: lÀgg till C:Program FilesGitusrbin i miljövariablerna (det kommer att tillÀmpas efter omstart av maskinen), eller kör konsolen frÄn den hÀr katalogen.

Kopplade AppCenter inte till rÀtt BitBucket-konto?

För att lösa problemet mÄste du koppla bort BitBucket-kontot frÄn AppCenter. GÄ in i det felaktiga BitBucket-kontot, gÄ till anvÀndarprofilen.

Integration av AppCenter och GitLab

GĂ„ sedan till InstĂ€llningar > Åtkomsthantering > OAuth

Integration av AppCenter och GitLab

Klicka pĂ„ Återkalla för att koppla bort kontot.

Integration av AppCenter och GitLab

Efter detta mÄste du logga in pÄ det rÀtta BitBucket-kontot.
* I det extrema fallet Àven rensa webblÀsarens cache.

Nu gÄr vi till AppCenter. GÄ till avsnittet Bygg, klicka pÄ Koppla bort BitBucket-kontot.

Integration av AppCenter och GitLab

NÀr det gamla kontot har kopplats bort, koppla AppCenter igen. Nu till det rÀtta kontot.

‘eval’ Ă€r inte igenkĂ€nt som ett internt eller externt kommando.

AnvÀnd istÀllet kommandot.

  - eval $(ssh-agent -s)

Kommandot:

  - ssh-agent

I vissa fall kan det vara nödvÀndigt att antingen ange den fullstÀndiga sökvÀgen till C:Program FilesGitusrbinssh-agent.exe, eller lÀgga till den sökvÀgen i systemenvariabler pÄ maskinen dÀr runner körs.

AppCenter Build försöker starta en byggning för projektet frÄn ett obsolet bitBucket-repository.

I mitt fall uppstod problemet eftersom jag arbetade med flera konton. Det löste sig med en rensning av cachen.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster