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
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
De gegenereerde sleutels zien er ongeveer zo uit:
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
Geweldig, vervolgens moet je de openbare sleutel aan BitBucket toevoegen. Open hiervoor de repository en ga naar Instellingen > Toegangssleutels.
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.
Geef de taal/platform op
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
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.
Ga vervolgens naar Instellingen > Toegangsbeheer > OAuth
Klik op Intrekken om uw account te ontkoppelen.
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
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