AppCenter- en GitLab-integratie

Tryam, hallo!

Ik wil graag praten over mijn ervaring met het opzetten van GitLab en AppCenter-integratie via BitBucket.

De behoefte aan een dergelijke integratie ontstond bij het opzetten van de automatische lancering van UI-tests voor een platformonafhankelijk project op Xamarin. Gedetailleerde tutorial onder de snit!

* Als het publiek geïnteresseerd is, zal ik een apart artikel maken over het automatiseren van UI-testen in platformonafhankelijke omstandigheden.

Ik heb maar één dergelijk materiaal opgegraven статью. Daarom kan mijn artikel iemand helpen.

Taak: Stel het automatisch starten van UI-tests op AppCenter in, aangezien ons team GitLab als versiecontrolesysteem gebruikt.

probleem Het bleek dat AppCenter niet rechtstreeks met GitLab integreert. Als één van de oplossingen werd gekozen voor Bypass via BitBucket.

stappen

1. Maak een lege repository op BitBucket

Ik zie niet de noodzaak om dit in meer detail te beschrijven :)

2. GitLab opzetten

We hebben nodig dat bij het pushen/samenvoegen in de repository de wijzigingen ook worden geüpload naar BitBucket. Om dit te doen, voegt u een runner toe (of bewerkt u het bestaande .gitlab-ci.yml bestand).

Eerst voegen we opdrachten toe aan de before_scripts sectie

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

Voeg vervolgens het volgende commando toe aan de gewenste fase:

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

In mijn geval is dit het bestand dat ik kreeg:

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

We starten de build en controleren of onze wijzigingen/bestanden op BitBucket staan.
* zoals de praktijk heeft geleerd, is het instellen van SSH-sleutels optioneel. Maar voor het geval dat, zal ik hieronder een algoritme geven voor het opzetten van een verbinding via SSH

Verbinding maken via SSH

Eerst moet u een SSH-sleutel genereren. Hier zijn veel artikelen over geschreven. Je kunt bijvoorbeeld kijken hier.
De gegenereerde sleutels zien er ongeveer zo uit:
AppCenter- en GitLab-integratie

Volgende De geheime sleutel moet als variabele aan GitLab worden toegevoegd. Ga hiervoor naar Instellingen > CI/CD > Omgevingsvariabelen. Voeg ALLE inhoud toe van het bestand waarin u de geheime sleutel hebt opgeslagen. Laten we de variabele SSH_PRIVATE_KEY aanroepen.
* dit bestand heeft, in tegenstelling tot het bestand met de openbare sleutel, niet de extensie
AppCenter- en GitLab-integratie

Geweldig, vervolgens moet je de openbare sleutel aan BitBucket toevoegen. Open hiervoor de repository en ga naar Instellingen > Toegangssleutels.

AppCenter- en GitLab-integratie

Hier klikken we op Sleutel toevoegen en voegen we de inhoud van het bestand met de openbare sleutel in (bestand met de extensie .pub).

De volgende stap is het gebruik van de toetsen in gitlab-runner. Gebruik deze opdrachten, maar vervang de sterretjes door uw gegevens

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. AppCenter instellen

We maken een nieuwe applicatie op AppCenter.

AppCenter- en GitLab-integratie

Geef de taal/platform op

AppCenter- en GitLab-integratie

Ga vervolgens naar het gedeelte Build van de nieuw gemaakte applicatie. Daar selecteren we BitBucket en de repository die in stap 1 is gemaakt.

Geweldig, nu moeten we de build configureren. Zoek hiervoor het tandwielpictogram

AppCenter- en GitLab-integratie

In principe is alles daar intuïtief. Selecteer een project en configuratie. Schakel indien nodig het starten van tests na de build in. Ze starten automatisch.

Eigenlijk is dat alles. Het klinkt eenvoudig, maar natuurlijk zal niet alles soepel verlopen. Daarom zal ik enkele fouten beschrijven die ik tegenkwam tijdens het werken:

'ssh-keygen' wordt niet herkend als een intern of extern commando.

Het komt ook voor omdat het pad naar ssh-keygen.exe niet wordt toegevoegd aan de omgevingsvariabelen.
Er zijn twee opties: voeg C:Program FilesGitusrbin toe aan omgevingsvariabelen (wordt toegepast na het opnieuw opstarten van de machine), of start de console vanuit deze map.

AppCenter verbonden met het verkeerde BitBucket-account?

Om het probleem op te lossen, moet u uw BitBucket-account ontkoppelen van AppCenter. We loggen in op het verkeerde BitBucket-account en gaan naar het gebruikersprofiel.

AppCenter- en GitLab-integratie

Ga vervolgens naar Instellingen > Toegangsbeheer > OAuth

AppCenter- en GitLab-integratie

Klik op Intrekken om uw account te ontkoppelen.

AppCenter- en GitLab-integratie

Hierna dient u in te loggen met het benodigde BitBucket-account.
* Wis als laatste redmiddel ook de cache van uw browser.

Laten we nu naar AppCenter gaan. ga naar de sectie Bouwen en klik op BitBucket-account ontkoppelen

AppCenter- en GitLab-integratie

Wanneer het oude account wordt ontkoppeld, koppelen wij AppCenter opnieuw. Nu naar het gewenste account.

'eval' wordt niet herkend als een intern of extern commando

We gebruiken het in plaats van een commando

  - eval $(ssh-agent -s)

Team:

  - ssh-agent

In sommige gevallen moet u het volledige pad naar C:Program FilesGitusrbinssh-agent.exe opgeven, of dit pad toevoegen aan de systeemvariabelen op de machine waarop de runner draait

AppCenter Build probeert een build voor een project te starten vanuit een verouderde bitBucket-repository

In mijn geval ontstond het probleem omdat ik met meerdere accounts werkte. Ik besloot de cache te wissen.

Bron: www.habr.com

Voeg een reactie