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ł
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ć
Wygenerowane klucze wyglądają mniej więcej tak:
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
Świetnie, następnie musisz dodać klucz publiczny do BitBucket. Aby to zrobić, otwórz repozytorium i przejdź do Ustawienia > Klucze dostępu.
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.
Określ język/platformę
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
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.
Następnie przejdź do Ustawienia > Zarządzanie dostępem > OAuth
Kliknij opcję Odwołaj, aby odłączyć swoje konto.
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
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