AppCenter og GitLab-integrasjon

Tryam, hei!

Jeg vil gjerne snakke om min erfaring med å sette opp GitLab og AppCenter-integrasjon via BitBucket.

Behovet for slik integrasjon oppsto ved oppsett av automatisk lansering av UI-tester for et tverrplattformprosjekt på Xamarin. Detaljert opplæring under kuttet!

* Jeg skal lage en egen artikkel om automatisering av UI-testing i forhold på tvers av plattformer hvis publikum er interessert.

Jeg gravde bare opp ett slikt materiale artikkel. Derfor kan artikkelen min hjelpe noen.

Oppgave: Sett opp automatisk lansering av UI-tester på AppCenter, gitt at teamet vårt bruker GitLab som et versjonskontrollsystem.

problem Det viste seg at AppCenter ikke integreres direkte med GitLab. Bypass via BitBucket ble valgt som en av løsningene.

Шаги

1. Opprett et tomt depot på BitBucket

Jeg ser ikke behovet for å beskrive dette mer detaljert :)

2. Sette opp GitLab

Vi trenger at når du skyver/fletter inn i depotet, blir endringer også lastet opp til BitBucket. For å gjøre dette, legg til en løper (eller rediger den eksisterende .gitlab-ci.yml-filen).

Først legger vi til kommandoer til before_scripts-delen

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

Legg deretter til følgende kommando til ønsket stadium:

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

I mitt tilfelle er dette filen jeg fikk:

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 byggingen, kontrollerer at endringene/filene våre er på BitBucket.
* Som praksis har vist, er det valgfritt å sette opp SSH-nøkler. Men i tilfelle vil jeg gi en algoritme for å sette opp en tilkobling via SSH nedenfor

Kobler til via SSH

Først må du generere en SSH-nøkkel. Det er skrevet mange artikler om dette. For eksempel kan du se her.
De genererte nøklene ser omtrent slik ut:
AppCenter og GitLab-integrasjon

Neste Den hemmelige nøkkelen må legges til som en variabel til GitLab. For å gjøre dette, gå til Innstillinger > CI/CD > Miljøvariabler. Legg til ALT innholdet i filen der du lagret den hemmelige nøkkelen. La oss kalle variabelen SSH_PRIVATE_KEY.
* denne filen, i motsetning til den offentlige nøkkelfilen, vil ikke ha filtypen
AppCenter og GitLab-integrasjon

Flott, neste må du legge til den offentlige nøkkelen til BitBucket. For å gjøre dette, åpne depotet og gå til Innstillinger > Tilgangsnøkler.

AppCenter og GitLab-integrasjon

Her klikker vi Legg til nøkkel og setter inn innholdet i filen med den offentlige nøkkelen (fil med filtypen .pub).

Det neste trinnet er å bruke nøklene i gitlab-runner. Bruk disse kommandoene, men erstatt stjernene 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. Sette opp AppCenter

Vi oppretter en ny applikasjon på AppCenter.

AppCenter og GitLab-integrasjon

Angi språk/plattform

AppCenter og GitLab-integrasjon

Gå deretter til Bygg-delen av den nyopprettede applikasjonen. Der velger vi BitBucket og depotet som ble opprettet i trinn 1.

Flott, nå må vi konfigurere bygget. For å gjøre dette, finn tannhjulikonet

AppCenter og GitLab-integrasjon

I prinsippet er alt der intuitivt. Velg et prosjekt og konfigurasjon. Aktiver om nødvendig lansering av tester etter byggingen. De vil starte automatisk.

I utgangspunktet er det alt. Det høres enkelt ut, men naturligvis vil ikke alt gå knirkefritt. Derfor vil jeg beskrive noen feil som jeg møtte under arbeidet:

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

Det oppstår også fordi banen til ssh-keygen.exe ikke er lagt til miljøvariablene.
Det er to alternativer: legg til C:Program FilesGitusrbin til Environment Variables (vil bli brukt etter omstart av maskinen), eller start konsollen fra denne katalogen.

AppCenter koblet til feil BitBucket-konto?

For å løse problemet må du koble fra BitBucket-kontoen din fra AppCenter. Vi logger inn på feil BitBucket-konto og går til brukerprofilen.

AppCenter og GitLab-integrasjon

Deretter går du til Innstillinger > Tilgangsadministrasjon > OAuth

AppCenter og GitLab-integrasjon

Klikk på Tilbakekall for å koble fra kontoen din.

AppCenter og GitLab-integrasjon

Etter dette må du logge på med den nødvendige BitBucket-kontoen.
* Som en siste utvei, tøm også nettleserbufferen.

La oss nå gå til AppCenter. gå til Bygg-delen, klikk Koble fra BitBucket-konto

AppCenter og GitLab-integrasjon

Når den gamle kontoen er koblet fra, kobler vi til AppCenter igjen. Nå til ønsket konto.

'eval' gjenkjennes ikke som en intern eller ekstern kommando

Vi bruker det i stedet for en kommando

  - eval $(ssh-agent -s)

Team:

  - ssh-agent

I noen tilfeller må du enten spesifisere hele banen til C:Program FilesGitusrbinssh-agent.exe, eller legge til denne banen til systemvariablene på maskinen der løperen kjører

AppCenter Build prøver å lansere en build for et prosjekt fra et utdatert bitBucket-depot

I mitt tilfelle oppsto problemet fordi jeg jobbet med flere kontoer. Jeg bestemte meg for å tømme bufferen.

Kilde: www.habr.com

Legg til en kommentar