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
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
De genererte nøklene ser omtrent slik ut:
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
Flott, neste må du legge til den offentlige nøkkelen til BitBucket. For å gjøre dette, åpne depotet og gå til Innstillinger > Tilgangsnøkler.
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.
Angi språk/plattform
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
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.
Deretter går du til Innstillinger > Tilgangsadministrasjon > OAuth
Klikk på Tilbakekall for å koble fra kontoen din.
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
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