AppCenter og GitLab Integration

Tryam, hej!

Jeg vil gerne fortælle om min erfaring med at opsætte GitLab og AppCenter integration via BitBucket.

Behovet for en sådan integration opstod ved opsætning af automatisk lancering af UI-test til et cross-platform projekt på Xamarin. Detaljeret vejledning under snittet!

* Jeg vil lave en separat artikel om automatisering af UI-test i forhold på tværs af platforme, hvis offentligheden er interesseret.

Jeg gravede kun et sådant materiale op en artikel. Derfor kan min artikel måske hjælpe nogen.

Opgave: Opsæt automatisk lancering af UI-tests på AppCenter, da vores team bruger GitLab som et versionskontrolsystem.

problem Det viste sig, at AppCenter ikke integrerer direkte med GitLab. Bypass via BitBucket blev valgt som en af ​​løsningerne.

Шаги

1. Opret et tomt lager på BitBucket

Jeg kan ikke se behovet for at beskrive dette mere detaljeret :)

2. Opsætning af GitLab

Vi har brug for, at når der skubbes/flettes ind i depotet, uploades ændringer også til BitBucket. For at gøre dette skal du tilføje en runner (eller redigere den eksisterende .gitlab-ci.yml-fil).

Først tilføjer vi kommandoer til sektionen before_scripts

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

Tilføj derefter følgende kommando til det ønskede trin:

- git push --mirror https://username:[email protected]/username/projectname.git

I mit tilfælde er dette filen jeg fik:

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 buildet, kontrollerer at vores ændringer/filer er på BitBucket.
* Som praksis har vist, er opsætning af SSH-nøgler valgfri. Men for en sikkerheds skyld vil jeg give en algoritme til at oprette en forbindelse via SSH nedenfor

Tilslutning via SSH

Først skal du generere en SSH-nøgle. Der er skrevet mange artikler om dette. Du kan f.eks. kigge her.
De genererede nøgler ser nogenlunde sådan ud:
AppCenter og GitLab Integration

Næste Den hemmelige nøgle skal tilføjes som en variabel til GitLab. For at gøre dette skal du gå til Indstillinger > CI/CD > Miljøvariabler. Tilføj ALT indholdet af filen, hvor du gemte den hemmelige nøgle. Lad os kalde variablen SSH_PRIVATE_KEY.
* denne fil, i modsætning til den offentlige nøglefil, vil ikke have filtypenavnet
AppCenter og GitLab Integration

Fantastisk, derefter skal du tilføje den offentlige nøgle til BitBucket. For at gøre dette skal du åbne lageret og gå til Indstillinger > Adgangsnøgler.

AppCenter og GitLab Integration

Her klikker vi på Tilføj nøgle og indsætter indholdet af filen med den offentlige nøgle (fil med filtypenavnet .pub).

Det næste trin er at bruge nøglerne i gitlab-runner. Brug disse kommandoer, men erstat stjernerne med dine detaljer

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 [email protected]

mirror:
  stage: mirror
  script:
    - git push --mirror https://****:****@bitbucket.org/*****/*****.git

3. Opsætning af AppCenter

Vi opretter en ny applikation på AppCenter.

AppCenter og GitLab Integration

Angiv sproget/platformen

AppCenter og GitLab Integration

Gå derefter til sektionen Byg i den nyoprettede applikation. Der vælger vi BitBucket og depotet, der blev oprettet i trin 1.

Godt, nu skal vi konfigurere bygningen. For at gøre dette skal du finde tandhjulsikonet

AppCenter og GitLab Integration

I princippet er alt der intuitivt. Vælg et projekt og konfiguration. Aktiver om nødvendigt lanceringen af ​​tests efter opbygningen. De starter automatisk.

Dybest set er det alt. Det lyder enkelt, men naturligvis vil alt ikke gå glat. Derfor vil jeg beskrive nogle fejl, som jeg stødte på under arbejdet:

'ssh-keygen' genkendes ikke som en intern eller ekstern kommando.

Det opstår også, fordi stien til ssh-keygen.exe ikke er tilføjet til miljøvariablerne.
Der er to muligheder: føj C:Program FilesGitusrbin til miljøvariabler (vil blive anvendt efter genstart af maskinen), eller start konsollen fra denne mappe.

AppCenter forbundet til den forkerte BitBucket-konto?

For at løse problemet skal du fjerne linket til din BitBucket-konto fra AppCenter. Vi logger ind på den forkerte BitBucket-konto og går til brugerprofilen.

AppCenter og GitLab Integration

Gå derefter til Indstillinger > Adgangsstyring > OAuth

AppCenter og GitLab Integration

Klik på Tilbagekald for at fjerne linket til din konto.

AppCenter og GitLab Integration

Herefter skal du logge ind med den nødvendige BitBucket-konto.
* Som en sidste udvej skal du også rydde din browsers cache.

Lad os nu gå til AppCenter. gå til Build-sektionen, klik på Afbryd BitBucket-konto

AppCenter og GitLab Integration

Når den gamle konto er fjernet, linker vi AppCenter igen. Nu til den ønskede konto.

'eval' genkendes ikke som en intern eller ekstern kommando

Vi bruger det i stedet for en kommando

  - eval $(ssh-agent -s)

Hold:

  - 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 en build til et projekt fra et forældet bitBucket-lager

I mit tilfælde opstod problemet, fordi jeg arbejdede med flere konti. Jeg besluttede at rydde cachen.

Kilde: www.habr.com

Tilføj en kommentar