Hej, goddag!
Jeg vil gerne dele mine erfaringer med at konfigurere integrationen af GitLab og AppCenter via BitBucket.
Behovet for en sådan integration opstod under opsætningen af automatisk kørsel af UI-test for et tværplatformsprojekt på Xamarin. En detaljeret tutorial findes nedenfor!
* Jeg vil lave en separat artikel om automatisering af UI-testning under forhold med tværplatform, hvis der er interesse for publikationen.
Jeg har kun fundet ét lignende materiale. . Derfor kan min artikel være til hjælp for nogen.
Regler for godkendelse af merge-requests: At konfigurere automatisk kørsel af UI-test på AppCenter, når vores team bruger GitLab som versionsstyringssystem.
Problemet blev det klart, at AppCenter ikke integreres direkte med GitLab. Derfor blev en workaround via BitBucket valgt.
Trin
1. Opret et tomt repository på BitBucket.
Jeg ser ikke behovet for at beskrive dette nærmere 🙂
2. Konfigurer GitLab.
Vi skal have, at når der er en push/merge til repositoryet, ændres også på BitBucket. For at gøre dette tilføjer vi en runner (eller redigerer den eksisterende .gitlab-ci.yml-fil).
Først tilføjer vi kommandoerne i sektionen before_scripts.
- git config --global user.email "user@email"
- git config --global user.name "username"Derefter tilføjer vi følgende kommando i den relevante stage:
- git push --mirror https://username:password@bitbucket.org/username/projectname.gitI mit tilfælde blev det til en fil som denne.
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.gitVi starter builden og tjekker, at vores ændringer/filer er kommet op på BitBucket.
* som erfaringen viser, er opsætning af SSH-nøgler ikke obligatorisk. Men for en sikkerheds skyld vil jeg give algoritmen til opsætning af forbindelse via SSH nedenfor.
Forbindelse via SSH
Først skal du generere en SSH-nøgle. Der er skrevet mange artikler om dette. Du kan for eksempel se på .
De genererede nøgler ser cirka sådan ud:

Næste hemmelig nøgle skal tilføjes som en variabel på GitLab. For at gøre dette går vi til Settings > CI/CD > Environment Variables. Vi tilføjer ALT indholdet fra filen, hvor du har gemt den hemmelige nøgle. Lad os kalde variablen SSH_PRIVATE_KEY.
* denne fil, i modsætning til filen med den offentlige nøgle, vil ikke have en filendelse.

Fremragende, derefter skal den offentlige nøgle tilføjes på BitBucket. For at gøre dette åbner vi repositoryet og går til Settings > Access Keys.

Her klikker vi på Add Key og indsætter indholdet af filen med den offentlige nøgle (filen med filendelsen .pub).
Det næste skridt vil være at bruge nøglerne i gitlab-runner. Brug disse kommandoer, men angiv dine egne oplysninger i stedet for stjernerne
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. Opsætning af AppCenter
Opretter en ny applikation på AppCenter.

Angiv sprog/platform

Gå derefter ind i sektionen Build for den nyoprettede applikation. Vælg BitBucket og det repository, der blev oprettet i trin 1.
Perfekt, nu skal vi konfigurere bygningen. Find tandhjulsikonet

I princippet er alt intuitivt forståeligt. Vælg projekt og konfiguration. Aktivér testafvikling efter bygningen, hvis nødvendigt. De vil blive kørt automatisk.
I princippet er det hele. Det lyder ikke svært, men naturligvis vil det ikke gå glat. Derfor vil jeg beskrive nogle af de fejl, jeg stødte på undervejs:
‘ssh-keygen’ genkendes ikke som en intern eller ekstern kommando.
Det opstår, fordi stien til ssh-keygen.exe ikke er tilføjet til miljøvariablerne.
Der er to muligheder: tilføj C:Program FilesGitusrbin til miljøvariablerne (det træder i kraft efter genstart af maskinen), eller start konsollen fra denne mappe.
AppCenter forbinder ikke med den rigtige BitBucket-konto?
For at løse problemet skal du frakoble BitBucket-kontoen fra AppCenter. Log ind på den forkerte BitBucket-konto, gå til brugerprofilen.

Gå derefter til Indstillinger > Adgangsstyring > OAuth

Klik på tilbagekald for at frakoble kontoen.

Derefter skal du logge ind på den rigtige BitBucket-konto
* I sidste ende kan du også tømme browserens cache
Nu går vi til AppCenter. Gå til sektionen Build, klik på Frakobl BitBucket-konto

Når den gamle konto er frakoblet, tilknytter vi AppCenter igen. Nu til den rigtige konto.
‘eval’ genkendes ikke som en intern eller ekstern kommando
Brug i stedet for kommandoen
- eval $(ssh-agent -s)Kommandoen:
- ssh-agentI nogle tilfælde skal du enten angive den fulde sti til C:Program FilesGitusrbinssh-agent.exe eller tilføje denne sti til systemvariablerne på den maskine, hvor runneren kører
AppCenter Build forsøger at starte bygningen for projektet fra et forældet bitBucket-repository
I mit tilfælde opstod problemet, fordi jeg arbejdede med flere konti. Det blev løst ved at rense cachen.
Kilde: habr.com
