Hallo hallo
Ich möchte über meine Erfahrungen beim Einrichten der Integration von GitLab und AppCenter über BitBucket sprechen.
Die Notwendigkeit einer solchen Integration ergab sich beim Einrichten des automatischen Starts von UI-Tests für ein plattformübergreifendes Projekt auf Xamarin. Ein ausführliches Tutorial unter dem Schnitt!
* Zur Automatisierung von UI-Tests unter plattformübergreifenden Bedingungen werde ich einen separaten Artikel verfassen, wenn die Öffentlichkeit interessiert ist.
Solches Material hat nur einen Artikel ausgegraben. Daher kann mein Artikel jemandem helfen.
Ziel : Richten Sie den automatischen Start von UI-Tests in AppCenter ein, während unser Team GitLab als Versionskontrollsystem verwendet.
Es stellte sich heraus, dass AppCenter nicht direkt in GitLab integriert ist. Als eine der Lösungen wurde ein Bypass durch BitBucket gewählt.
Schritte
1. Erstellen Sie ein leeres BitBucket-Repository
Ich sehe keine Notwendigkeit, es genauer zu beschreiben :)
2. Konfigurieren Sie GitLab
Wir brauchen das, wenn Push / Merge zum Repository Änderungen auch auf BitBucket gegossen werden. Fügen Sie dazu den Runner hinzu (oder bearbeiten Sie die vorhandene Datei .gitlab-ci.yml).
Fügen Sie zunächst dem Abschnitt before_scripts Befehle hinzu
- git config --global user.email "user@email" - git config --global user.name "username"
Fügen Sie dann der gewünschten Stufe den folgenden Befehl hinzu:
- git push --mirror https://username:password@bitbucket.org/username/projectname.git
In meinem Fall habe ich eine solche Datei bekommen
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 auf BitBucket basieren.
* Wie die Praxis gezeigt hat, ist die Konfiguration von SSH-Schlüsseln optional. Aber nur für den Fall, ich werde den Verbindungsaufbau-Algorithmus über SSH unten geben
SSH-VerbindungZuerst müssen Sie einen SSH-Schlüssel generieren. Es wurden viele Artikel darüber geschrieben. Ein Beispiel finden Sie hier .
Die generierten Schlüssel sehen ungefähr so aus:

Als nächstes muss der geheime Schlüssel als Variable in GitLab hinzugefügt werden. Gehen Sie dazu zu Einstellungen> CI / CD> Umgebungsvariablen. Fügen Sie ALLE Inhalte der Datei hinzu, in der Sie den privaten Schlüssel gespeichert haben. Nennen wir die Variable SSH_PRIVATE_KEY.
* Diese Datei hat im Gegensatz zu einer Datei mit öffentlichem Schlüssel keine Erweiterung

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

Klicken Sie dann auf Schlüssel hinzufügen und fügen Sie den Inhalt der Datei mit dem öffentlichen Schlüssel ein (Datei mit der Erweiterung .pub).
Der nächste Schritt ist die Verwendung der Schlüssel in Gitlab-Runner. Verwenden Sie diese Befehle, geben Sie jedoch Ihre Daten anstelle von Sternchen an
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. Konfigurieren Sie AppCenter
Wir erstellen eine neue Anwendung in AppCenter.

Geben Sie die Sprache / Plattform an

Wechseln Sie als Nächstes zum Abschnitt Erstellen der neu erstellten Anwendung. Wir wählen dort BitBucket und das in Schritt 1 erstellte Repository aus.
Ok, jetzt müssen Sie den Build konfigurieren. Suchen Sie dazu das Zahnradsymbol

Grundsätzlich ist dort alles intuitiv. Wir wählen das Projekt und die Konfiguration aus. Aktivieren Sie bei Bedarf den Start von Tests nach dem Build. Sie werden automatisch gestartet.
Im Prinzip ist das alles. Es klingt einfach, aber natürlich läuft nicht alles reibungslos. Daher werde ich einige Fehler beschreiben, die bei der Arbeit aufgetreten sind:
'ssh-keygen' wird nicht als interner oder externer Befehl erkannt.Dies liegt daran, dass der Pfad zu ssh-keygen.exe nicht zu den Umgebungsvariablen hinzugefügt wird.
Es gibt zwei Möglichkeiten: Fügen Sie C: \ Programme \ Git \ usr \ bin zu Umgebungsvariablen hinzu (gilt nach dem Neustart des Computers) oder starten Sie die Konsole in diesem Verzeichnis.
AppCenter mit dem falschen BitBucket-Konto verbunden?Um das Problem zu lösen, müssen Sie das BitBucket-Konto von AppCenter trennen. Wir gehen in das falsche BitBucket-Konto, gehen zum Benutzerprofil.

Gehen Sie anschließend zu Einstellungen> Zugriffsverwaltung> OAuth

Klicken Sie auf Widerrufen, um das Konto zu lösen.

Danach müssen Sie sich unter dem erforderlichen BitBucket-Konto anmelden
* Löschen Sie in extremen Fällen auch den Browser-Cache
Gehen Sie jetzt zum AppCenter. Gehen Sie zum Abschnitt Erstellen und klicken Sie auf BitBucket-Konto trennen

Wenn das alte Konto nicht mehr verbunden ist, binden wir AppCenter erneut. Nun zum gewünschten Konto.
'eval' wird nicht als interner oder externer Befehl erkanntVerwenden Sie anstelle des Befehls
- eval $(ssh-agent -s)
Befehl:
- ssh-agent
In einigen Fällen müssen Sie entweder den vollständigen Pfad zu C: \ Programme \ Git \ usr \ bin \ ssh-agent.exe angeben oder diesen Pfad zu den Systemvariablen auf dem Computer hinzufügen, auf dem Runner ausgeführt wird
AppCenter Build versucht, einen Build für ein Projekt aus einem irrelevanten bitBucket-Repository zu startenIn meinem Fall trat das Problem auf, weil ich mit mehreren Konten gearbeitet habe. Ich beschloss, den Cache zu leeren.