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. . 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.gitI 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.gitStarta 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Ä .
De genererade nycklarna ser ut ungefÀr sÄ hÀr:

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

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.

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/*****/*.git3. Konfigurera AppCenter
Skapa en ny applikation i AppCenter.

Ange sprÄk/plattform

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.

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.

GÄ sedan till InstÀllningar > à tkomsthantering > OAuth

Klicka pÄ à terkalla för att koppla bort kontot.

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.

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-agentI 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
