AppCenter- und GitLab-Integration

Tryam, hallo!

Ich möchte über meine Erfahrungen bei der Einrichtung der GitLab- und AppCenter-Integration über BitBucket sprechen.

Der Bedarf an einer solchen Integration entstand beim Einrichten des automatischen Starts von UI-Tests für ein plattformübergreifendes Projekt auf Xamarin. Detailliertes Tutorial unter dem Schnitt!

* Bei Interesse der Öffentlichkeit werde ich einen separaten Artikel über die Automatisierung von UI-Tests unter plattformübergreifenden Bedingungen verfassen.

Ich habe nur ein solches Material ausgegraben Artikel. Daher kann mein Artikel jemandem helfen.

Aufgabe: Richten Sie den automatischen Start von UI-Tests im AppCenter ein, da unser Team GitLab als Versionskontrollsystem verwendet.

Problem Es stellte sich heraus, dass AppCenter nicht direkt in GitLab integriert werden kann. Als eine der Lösungen wurde die Umgehung über BitBucket gewählt.

Treppe

1. Erstellen Sie ein leeres Repository auf BitBucket

Ich sehe keine Notwendigkeit, das näher zu beschreiben :)

2. GitLab einrichten

Wir benötigen, dass beim Pushen/Zusammenführen in das Repository Änderungen auch in BitBucket hochgeladen werden. Fügen Sie dazu einen Runner hinzu (oder bearbeiten Sie die vorhandene Datei .gitlab-ci.yml).

Zuerst fügen wir Befehle zum Abschnitt before_scripts hinzu

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

Fügen Sie dann den folgenden Befehl zur gewünschten Stufe hinzu:

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

In meinem Fall ist dies die Datei, die ich erhalten habe:

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 prüfen, ob sich unsere Änderungen/Dateien auf BitBucket befinden.
* Wie die Praxis gezeigt hat, ist die Einrichtung von SSH-Schlüsseln optional. Aber für alle Fälle werde ich unten einen Algorithmus zum Einrichten einer Verbindung über SSH bereitstellen

Verbindung über SSH herstellen

Zuerst müssen Sie einen SSH-Schlüssel generieren. Darüber wurden viele Artikel geschrieben. Sie können zum Beispiel nachschauen hier.
Die generierten Schlüssel sehen etwa so aus:
AppCenter- und GitLab-Integration

Weiter Der geheime Schlüssel muss als Variable auf GitLab hinzugefügt werden. Gehen Sie dazu zu Einstellungen > CI/CD > Umgebungsvariablen. Fügen Sie ALLE Inhalte der Datei hinzu, in der Sie den geheimen Schlüssel gespeichert haben. Nennen wir die Variable SSH_PRIVATE_KEY.
* Diese Datei hat im Gegensatz zur öffentlichen Schlüsseldatei nicht die Erweiterung
AppCenter- und GitLab-Integration

Großartig, als nächstes müssen Sie den öffentlichen Schlüssel zu BitBucket hinzufügen. Öffnen Sie dazu das Repository und gehen Sie zu Einstellungen > Zugriffsschlüssel.

AppCenter- und GitLab-Integration

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, die Schlüssel in Gitlab-Runner zu verwenden. Verwenden Sie diese Befehle, ersetzen Sie jedoch die Sternchen durch Ihre Angaben

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 einrichten

Wir erstellen eine neue Anwendung im AppCenter.

AppCenter- und GitLab-Integration

Geben Sie die Sprache/Plattform an

AppCenter- und GitLab-Integration

Gehen Sie als Nächstes zum Abschnitt „Erstellen“ der neu erstellten Anwendung. Dort wählen wir BitBucket und das in Schritt 1 erstellte Repository aus.

Großartig, jetzt müssen wir den Build konfigurieren. Suchen Sie dazu das Zahnradsymbol

AppCenter- und GitLab-Integration

Im Prinzip ist dort alles intuitiv. Wählen Sie ein Projekt und eine Konfiguration aus. Aktivieren Sie bei Bedarf den Start von Tests nach dem Build. Sie werden automatisch gestartet.

Im Grunde ist das alles. Es klingt einfach, aber natürlich wird nicht alles reibungslos verlaufen. Daher beschreibe ich einige Fehler, die mir bei der Arbeit aufgefallen sind:

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

Es tritt auch auf, weil der Pfad zu ssh-keygen.exe nicht zu den Umgebungsvariablen hinzugefügt wird.
Es gibt zwei Möglichkeiten: C:Program FilesGitusrbin zu den Umgebungsvariablen hinzufügen (wird nach dem Neustart des Computers angewendet) oder die Konsole von diesem Verzeichnis aus starten.

AppCenter mit dem falschen BitBucket-Konto verbunden?

Um das Problem zu lösen, müssen Sie die Verknüpfung Ihres BitBucket-Kontos mit AppCenter aufheben. Wir melden uns beim falschen BitBucket-Konto an und gehen zum Benutzerprofil.

AppCenter- und GitLab-Integration

Gehen Sie als Nächstes zu Einstellungen > Zugriffsverwaltung > OAuth

AppCenter- und GitLab-Integration

Klicken Sie auf „Widerrufen“, um die Verknüpfung Ihres Kontos aufzuheben.

AppCenter- und GitLab-Integration

Danach müssen Sie sich mit dem erforderlichen BitBucket-Konto anmelden.
* Als letzten Ausweg leeren Sie auch Ihren Browser-Cache.

Gehen wir nun zum AppCenter. Gehen Sie zum Abschnitt „Erstellen“ und klicken Sie auf „BitBucket-Konto trennen“.

AppCenter- und GitLab-Integration

Wenn die Verknüpfung des alten Kontos aufgehoben wird, verknüpfen wir AppCenter erneut. Nun zum gewünschten Konto.

„eval“ wird nicht als interner oder externer Befehl erkannt

Wir verwenden es anstelle eines Befehls

  - eval $(ssh-agent -s)

Team:

  - ssh-agent

In einigen Fällen müssen Sie entweder den vollständigen Pfad zu C:ProgrammeGitusrbinssh-agent.exe angeben oder diesen Pfad zu den Systemvariablen auf dem Computer hinzufügen, auf dem der Runner ausgeführt wird

AppCenter Build versucht, einen Build für ein Projekt aus einem veralteten bitBucket-Repository zu starten

In meinem Fall entstand das Problem, weil ich mit mehreren Konten arbeitete. Ich habe beschlossen, den Cache zu leeren.

Source: habr.com

Kommentar hinzufügen