Integracja AppCenter i GitLab

Tryam, cześć!

Chciałbym opowiedzieć o swoich doświadczeniach w konfiguracji integracji GitLab i AppCenter poprzez BitBucket.

Potrzeba takiej integracji pojawiła się podczas konfigurowania automatycznego uruchamiania testów UI dla projektu wieloplatformowego na Xamarin. Szczegółowy tutorial poniżej kroju!

* Jeśli opinia publiczna będzie zainteresowana, napiszę osobny artykuł na temat automatyzacji testowania interfejsu użytkownika w warunkach międzyplatformowych.

Wykopałem tylko jeden taki materiał статью. Dlatego mój artykuł może komuś pomóc.

Zadanie: Skonfiguruj automatyczne uruchamianie testów interfejsu użytkownika w AppCenter, biorąc pod uwagę, że nasz zespół używa GitLab jako systemu kontroli wersji.

problem Okazało się, że AppCenter nie integruje się bezpośrednio z GitLabem. Jako jedno z rozwiązań wybrano obejście poprzez BitBucket.

Шаги

1. Utwórz puste repozytorium w BitBucket

Nie widzę potrzeby opisywania tego szerzej :)

2. Konfiguracja GitLaba

Potrzebujemy, aby podczas wypychania/łączenia do repozytorium zmiany były również przesyłane do BitBucket. Aby to zrobić, dodaj moduł uruchamiający (lub edytuj istniejący plik .gitlab-ci.yml).

Najpierw dodajemy polecenia do sekcji before_scripts

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

Następnie dodaj następujące polecenie do żądanego etapu:

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

W moim przypadku jest to plik, który otrzymałem:

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

Uruchamiamy kompilację, sprawdzamy, czy nasze zmiany/pliki znajdują się na BitBucket.
* jak pokazała praktyka, konfiguracja kluczy SSH jest opcjonalna. Ale na wszelki wypadek poniżej podam algorytm konfiguracji połączenia przez SSH

Łączenie przez SSH

Najpierw musisz wygenerować klucz SSH. Napisano na ten temat wiele artykułów. Możesz na przykład spojrzeć tutaj.
Wygenerowane klucze wyglądają mniej więcej tak:
Integracja AppCenter i GitLab

Dalej Sekretny klucz należy dodać jako zmienną do GitLab. Aby to zrobić, przejdź do Ustawienia > CI/CD > Zmienne środowiskowe. Dodaj CAŁĄ zawartość pliku, w którym zapisałeś tajny klucz. Nazwijmy zmienną SSH_PRIVATE_KEY.
* plik ten, w przeciwieństwie do pliku klucza publicznego, nie będzie miał rozszerzenia
Integracja AppCenter i GitLab

Świetnie, następnie musisz dodać klucz publiczny do BitBucket. Aby to zrobić, otwórz repozytorium i przejdź do Ustawienia > Klucze dostępu.

Integracja AppCenter i GitLab

Tutaj klikamy Dodaj klucz i wstawiamy zawartość pliku z kluczem publicznym (plik z rozszerzeniem .pub).

Następnym krokiem jest użycie klawiszy w gitlab-runner. Użyj tych poleceń, ale zamień gwiazdki na swoje dane

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. Konfigurowanie AppCenter

Tworzymy nową aplikację w AppCenter.

Integracja AppCenter i GitLab

Określ język/platformę

Integracja AppCenter i GitLab

Następnie przejdź do sekcji Build nowo utworzonej aplikacji. Tam wybieramy BitBucket i repozytorium utworzone w kroku 1.

Świetnie, teraz musimy skonfigurować kompilację. Aby to zrobić, znajdź ikonę koła zębatego

Integracja AppCenter i GitLab

W zasadzie wszystko tam jest intuicyjne. Wybierz projekt i konfigurację. Jeśli to konieczne, włącz uruchomienie testów po kompilacji. Rozpoczną się automatycznie.

W zasadzie to wszystko. Brzmi prosto, ale oczywiście nie wszystko pójdzie gładko. Dlatego opiszę kilka błędów, które napotkałem podczas pracy:

„ssh-keygen” nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne.

Dzieje się tak również dlatego, że ścieżka do ssh-keygen.exe nie jest dodana do zmiennych środowiskowych.
Istnieją dwie możliwości: dodaj C:Program FilesGitusrbin do zmiennych środowiskowych (zostanie zastosowany po ponownym uruchomieniu komputera) lub uruchom konsolę z tego katalogu.

AppCenter połączony z niewłaściwym kontem BitBucket?

Aby rozwiązać problem, musisz odłączyć swoje konto BitBucket od AppCenter. Logujemy się na niewłaściwe konto BitBucket i przechodzimy do profilu użytkownika.

Integracja AppCenter i GitLab

Następnie przejdź do Ustawienia > Zarządzanie dostępem > OAuth

Integracja AppCenter i GitLab

Kliknij opcję Odwołaj, aby odłączyć swoje konto.

Integracja AppCenter i GitLab

Następnie musisz zalogować się na wymagane konto BitBucket.
* W ostateczności wyczyść także pamięć podręczną przeglądarki.

Przejdźmy teraz do AppCenter. przejdź do sekcji Kompilacja, kliknij Odłącz konto BitBucket

Integracja AppCenter i GitLab

Po odłączeniu starego konta ponownie łączymy AppCenter. Teraz do żądanego konta.

„eval” nie jest rozpoznawane jako polecenie wewnętrzne lub zewnętrzne

Używamy go zamiast polecenia

  - eval $(ssh-agent -s)

Zespół:

  - ssh-agent

W niektórych przypadkach będziesz musiał podać pełną ścieżkę do C:Program FilesGitusrbinssh-agent.exe lub dodać tę ścieżkę do zmiennych systemowych na komputerze, na którym działa moduł uruchamiający

AppCenter Build próbuje uruchomić kompilację projektu z nieaktualnego repozytorium bitBucket

W moim przypadku problem pojawił się, ponieważ pracowałem z kilkoma kontami. Postanowiłem wyczyścić pamięć podręczną.

Źródło: www.habr.com

Dodaj komentarz