Integration af AppCenter og GitLab

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. artiklen. 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.git

I 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.git

Vi 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å her.
De genererede nøgler ser cirka sådan ud:
Integration af AppCenter og GitLab

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.
Integration af AppCenter og GitLab

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.

Integration af AppCenter og GitLab

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/*****/*.git

3. Opsætning af AppCenter

Opretter en ny applikation på AppCenter.

Integration af AppCenter og GitLab

Angiv sprog/platform

Integration af AppCenter og GitLab

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

Integration af AppCenter og GitLab

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.

Integration af AppCenter og GitLab

Gå derefter til Indstillinger > Adgangsstyring > OAuth

Integration af AppCenter og GitLab

Klik på tilbagekald for at frakoble kontoen.

Integration af AppCenter og GitLab

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

Integration af AppCenter og GitLab

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

I 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

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster