Integratie van AppCenter en GitLab

Hallo, goedemorgen!

Ik wil mijn ervaring delen over het instellen van de integratie van GitLab en AppCenter via BitBucket.

De noodzaak voor deze integratie ontstond tijdens het instellen van de automatische uitvoering van UI-tests voor een cross-platform project op Xamarin. Een gedetailleerde tutorial vind je hieronder!

* Als er interesse is, maak ik een apart artikel over de automatisering van UI-testen in een cross-platform omgeving.

Ik heb maar één soortgelijk materiaal gevonden. artikel. Daarom kan mijn artikel iemand helpen.

Task: Automatisch UI-tests op AppCenter instellen, terwijl ons team GitLab als versiebeheersysteem gebruikt.

Probleem bleek dat AppCenter niet rechtstreeks integreert met GitLab. Als een van de oplossingen is BitBucket gekozen als omweg.

Stappen

1. Maak een lege repository aan op BitBucket.

Ik zie geen noodzaak om dit verder te beschrijven 🙂

2. Stel GitLab in.

We moeten ervoor zorgen dat bij push/merge in de repository de wijzigingen ook naar BitBucket worden gepusht. Hiervoor voegen we een runner toe (of bewerken we het bestaande .gitlab-ci.yml-bestand).

Eerst voegen we de commando's toe in de sectie before_scripts.

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

Vervolgens voegen we het volgende commando toe aan de benodigde stage:

- git push --mirror https://username:password@bitbucket.org/username/projectname.git

In mijn geval resulteerde dit in het volgende bestand:

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 zijn geplaatst.
* In de praktijk bleek het instellen van SSH-sleutels niet verplicht. Maar voor de zekerheid geef ik hieronder het algoritme voor het instellen van de verbinding via SSH.

Verbinden via SSH

Eerst moet je een SSH-sleutel genereren. Er zijn duizenden artikelen over geschreven. Voor een voorbeeld kun je kijken naar here.
De gegenereerde sleutels zien er ongeveer zo uit:
Integratie van AppCenter en GitLab

Volgende geheime sleutel moet toegevoegd worden als een variabele op GitLab. Ga hiervoor naar Instellingen > CI/CD > Omgevingsvariabelen. Voeg ALLE inhoud van het bestand toe waarin je de geheime sleutel hebt opgeslagen. We noemen de variabele SSH_PRIVATE_KEY.
* dit bestand, in tegenstelling tot het bestand met de openbare sleutel, zal geen extensie hebben.
Integratie van AppCenter en GitLab

Geweldig, vervolgens moet de openbare sleutel worden toegevoegd aan BitBucket. Open hiervoor de repository, ga naar Instellingen > Toegangssleutels.

Integratie van AppCenter en GitLab

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

De volgende stap is het gebruik van sleutels in gitlab-runner. Gebruik deze commando's, maar geef in plaats van sterretjes je eigen gegevens op.

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 git@bitbucket.org

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

3. AppCenter instellen

Laten we een nieuwe applicatie op AppCenter maken.

Integratie van AppCenter en GitLab

Geef de taal/platform op.

Integratie van AppCenter en GitLab

Ga nu naar de sectie Build van de zojuist gemaakte applicatie. Kies daar BitBucket en de repository die in stap 1 is gemaakt.

Geweldig, nu moeten we de build instellen. Zoek hiervoor het tandwielicoon.

Integratie van AppCenter en GitLab

In principe is het daar allemaal intuïtief te begrijpen. Kies een project en configuratie. Schakel indien nodig de uitvoering van tests na de build in. Deze worden automatisch uitgevoerd.

In principe is dat alles. Het klinkt niet moeilijk, maar natuurlijk zal het niet alles soepel verlopen. Daarom beschrijf ik enkele fouten waarmee ik tijdens het werk in aanraking ben gekomen:

‘ssh-keygen’ wordt niet herkend als een interne of externe opdracht.

Dit gebeurt omdat het pad naar ssh-keygen.exe niet is toegevoegd aan de omgevingsvariabelen.
Er zijn twee opties: voeg C:Program FilesGitusrbin toe aan de omgevingsvariabelen (wordt toegepast na het opnieuw opstarten van de machine), of voer de console uit vanuit deze directory.

Is AppCenter niet verbonden met het juiste BitBucket-account?

Om het probleem op te lossen, moet je het BitBucket-account loskoppelen van AppCenter. Log in op het foute BitBucket-account en ga naar het gebruikersprofiel.

Integratie van AppCenter en GitLab

Ga vervolgens naar Instellingen > Toegangsbeheer > OAuth.

Integratie van AppCenter en GitLab

Klik op Intrekken om het account los te koppelen.

Integratie van AppCenter en GitLab

Log daarna in met het juiste BitBucket-account.
* Als laatste optie kan je ook de cache van de browser wissen.

Ga nu naar AppCenter. Ga naar de sectie Build en klik op Disconnect BitBucket-account.

Integratie van AppCenter en GitLab

Wanneer het oude account is losgekoppeld, koppelen we AppCenter opnieuw. Nu aan het juiste account.

‘eval’ wordt niet herkend als een interne of externe opdracht.

Gebruik in plaats van de opdracht:

  - eval $(ssh-agent -s)

De opdracht:

  - ssh-agent

In sommige gevallen moet je ofwel het volledige pad naar C:Program FilesGitusrbinssh-agent.exe opgeven, of deze pad aan de systeemvariabelen toevoegen op de machine waar de runner draait.

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

In mijn geval was het probleem ontstaan omdat ik met verschillende accounts werkte. Het werd opgelost door de cache te wissen.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster