Integration von AppCenter und GitLab

Hallo, guten Tag!

Ich möchte über meine Erfahrungen mit der Integration von GitLab und AppCenter über BitBucket berichten.

Die Notwendigkeit einer solchen Integration entstand während der Einrichtung der automatischen Ausführung von UI-Tests für ein plattformübergreifendes Projekt in Xamarin. Eine detaillierte Anleitung findet Ihr unten!

* Über die Automatisierung von UI-Tests unter plattformübergreifenden Bedingungen werde ich einen separaten Artikel schreiben, wenn das Publikum interessiert ist.

Ich habe nur ein ähnliches Material gefunden. den ArtikelDeshalb könnte mein Artikel jemandem helfen.

ZielDas Ziel war, die automatische Ausführung von UI-Tests auf AppCenter einzurichten, während unser Team GitLab als Versionskontrollsystem verwendet.

Das Problem Das Problem war, dass AppCenter nicht direkt mit GitLab integriert ist. Als eine der Lösungen wurde der Umweg über BitBucket gewählt.

Schritte

1. Erstellen Sie ein leeres Repository auf BitBucket.

Ich sehe keine Notwendigkeit, dies näher zu erläutern 🙂

2. GitLab konfigurieren

Wir müssen sicherstellen, dass bei einem Push/Merge in das Repository die Änderungen auch auf BitBucket hochgeladen werden. Dazu fügen wir einen Runner hinzu (oder bearbeiten die bestehende .gitlab-ci.yml-Datei).

Zuerst fügen wir die Befehle in den Bereich before_scripts ein:

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

Dann fügen wir den folgenden Befehl in die gewünschte Phase ein:

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

In meinem Fall entstand eine solche Datei

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

Wir starten den Build und überprüfen, ob unsere Änderungen/Dateien in BitBucket angekommen sind.
* Wie die Praxis gezeigt hat, ist die Einrichtung von SSH-Keys nicht zwingend erforderlich. Dennoch führe ich für alle Fälle den Algorithmus zur Verbindung über SSH unten an.

Verbindung über SSH

Zuerst muss ein SSH-Key generiert werden. Dazu gibt es zahlreiche Artikel. Zum Beispiel können Sie sich diesen anschauen. hier.
Die generierten Schlüssel sehen ungefähr so aus:
Integration von AppCenter und GitLab

Weiter privater Schlüssel muss als Variable in GitLab hinzugefügt werden. Gehen Sie dazu zu Einstellungen > CI/CD > Umgebungsvariablen. Fügen Sie den gesamten Inhalt der Datei hinzu, in der Sie den privaten Schlüssel gespeichert haben. Nennen wir die Variable SSH_PRIVATE_KEY.
* diese Datei hat im Gegensatz zur Datei mit dem öffentlichen Schlüssel keine Erweiterung
Integration von AppCenter und GitLab

Super, jetzt müssen wir den öffentlichen Schlüssel in BitBucket hinzufügen. Gehen Sie dazu zu Ihrem Repository, wählen Sie Einstellungen > Zugriffsschlüssel.

Integration von AppCenter und GitLab

Hier klicken wir auf Schlüssel hinzufügen und fügen den Inhalt der Datei mit dem öffentlichen Schlüssel (Datei mit der Erweiterung .pub) ein.

Der nächste Schritt besteht darin, Schlüssel in gitlab-runner zu verwenden. Nutzen Sie diese Befehle, aber ersetzen Sie die Sterne durch Ihre Daten.

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 einrichten

Wir erstellen eine neue Anwendung im AppCenter.

Integration von AppCenter und GitLab

Wir geben die Sprache/Plattform an.

Integration von AppCenter und GitLab

Nun gehen wir in den Bereich Build der gerade erstellten Anwendung. Dort wählen wir BitBucket und das im Schritt 1 erstellte Repository aus.

Prima, jetzt müssen wir den Build konfigurieren. Dazu suchen wir das Zahnradsymbol.

Integration von AppCenter und GitLab

Im Grunde genommen ist alles intuitiv verständlich. Wir wählen das Projekt und die Konfiguration aus. Bei Bedarf aktivieren wir die Durchführung von Tests nach dem Build. Diese werden automatisch gestartet.

Im Wesentlichen war das alles. Es klingt nicht schwierig, aber natürlich wird es nicht ganz reibungslos verlaufen. Daher werde ich einige Fehler beschreiben, mit denen ich während der Arbeit konfrontiert wurde:

'ssh-keygen' wird nicht als interner oder externer Befehl erkannt.

Dies liegt daran, dass der Pfad zu ssh-keygen.exe nicht in die Umgebungsvariablen hinzugefügt wurde.
Es gibt zwei Möglichkeiten: Fügen Sie C:\Program Files\Git\usr\bin zu den Umgebungsvariablen hinzu (wirksam nach einem Neustart des Rechners) oder starten Sie die Konsole aus diesem Verzeichnis.

Hat sich AppCenter mit dem falschen BitBucket-Konto verbunden?

Um das Problem zu lösen, müssen Sie das BitBucket-Konto von AppCenter trennen. Melden Sie sich beim falschen BitBucket-Konto an und gehen Sie zu Ihrem Benutzerprofil.

Integration von AppCenter und GitLab

Gehen Sie dann zu Einstellungen > Zugriff verwalten > OAuth.

Integration von AppCenter und GitLab

Klicken Sie auf Widerrufen, um das Konto zu trennen.

Integration von AppCenter und GitLab

Anschließend müssen Sie sich mit dem richtigen BitBucket-Konto anmelden.
* Im schlimmsten Fall sollten Sie auch den Browser-Cache leeren.

Jetzt gehen Sie zu AppCenter. Gehen Sie zum Abschnitt Build und klicken Sie auf BitBucket-Konto trennen.

Integration von AppCenter und GitLab

Wenn das alte Konto getrennt ist, binden Sie AppCenter erneut an das richtige Konto.

‘eval’ wird nicht als interner oder externer Befehl erkannt.

Verwenden Sie stattdessen den Befehl

  - eval $(ssh-agent -s)

Den Befehl:

  - ssh-agent

In einigen Fällen müssen Sie entweder den vollständigen Pfad zu C:\Program Files\Git\usr\bin\ssh-agent.exe angeben oder diesen Pfad zu den Systemvariablen auf dem Rechner hinzufügen, auf dem der Runner ausgeführt wird.

AppCenter Build versucht, einen Build für das Projekt aus einem veralteten BitBucket-Repository zu starten.

In meinem Fall trat das Problem auf, weil ich mit mehreren Konten arbeitete. Es ließ sich durch das Leeren des Caches lösen.

Quelle: habr.com

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster