Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku omówiono kroki związane z używaniem usługi TeamCity do kompilowania aplikacji mobilnych, a następnie przesyłania ich do usługi App Center Test.
Jak opisano w przewodniku Wprowadzenie do ciągłej integracji , ciągła integracja (CI) jest przydatną praktyką podczas tworzenia wysokiej jakości aplikacji mobilnych. Istnieje wiele realnych opcji oprogramowania serwera ciągłej integracji; Ten przewodnik koncentruje się na usłudze TeamCity firmy JetBrains.
Istnieje kilka różnych permutacji instalacji usługi TeamCity. Na poniższej liście opisano niektóre z tych permutacji:
Usługa systemu Windows — w tym scenariuszu usługa TeamCity jest uruchamiana po uruchomieniu systemu Windows jako usługa systemu Windows. Musi być sparowany z hostem kompilacji dla komputerów Mac, aby skompilować wszystkie aplikacje systemu iOS.
Uruchom demona w systemie OS X — koncepcyjnie jest to podobne do działania jako usługa systemu Windows opisana w poprzednim kroku. Domyślnie kompilacje będą uruchamiane na koncie głównym.
Konto użytkownika w systemie OS X — można uruchomić usługę TeamCity na koncie użytkownika, które jest uruchamiane za każdym razem, gdy użytkownik loguje się.
W poprzednich scenariuszach uruchamianie usługi TeamCity na koncie użytkownika w systemie OS X jest najprostsze i najłatwiejsze do skonfigurowania.
Istnieje kilka kroków związanych z konfigurowaniem usługi TeamCity:
Instalowanie usługi TeamCity — instalacja usługi TeamCity nie jest omówiona w tym przewodniku. W tym przewodniku założono, że usługa TeamCity jest zainstalowana i uruchomiona na koncie użytkownika. Instrukcje dotyczące instalowania usługi TeamCity można znaleźć w dokumentacji usługi TeamCity 8 firmy JetBrains.
Przygotowanie serwera kompilacji — ten krok obejmuje zainstalowanie niezbędnego oprogramowania, narzędzi i certyfikatów wymaganych do tworzenia aplikacji mobilnych i przygotowania ich do dystrybucji.
Tworzenie skryptu kompilacji — ten krok nie jest ściśle konieczny, ale skrypt kompilacji jest przydatną pomocą w tworzeniu aplikacji nienadzorowanych. Użycie skryptu kompilacji pomoże w rozwiązywaniu problemów z kompilacją, które mogą wystąpić i zapewnia spójny, powtarzalny sposób tworzenia plików binarnych do dystrybucji, nawet jeśli ciągła integracja nie jest praktykowana.
Tworzenie projektu TeamCity — po zakończeniu poprzednich trzech kroków musimy utworzyć projekt TeamCity zawierający wszystkie metadane niezbędne do pobrania kodu źródłowego, skompilowania projektów i przesłania testów do usługi App Center Test.
Wymagania
Wymagane jest doświadczenie w testowaniu usługi App Center .
Wymagana jest znajomość usługi TeamCity 8.1. Instalacja usługi TeamCity wykracza poza zakres tego dokumentu. Przyjęto założenie, że usługa TeamCity jest zainstalowana w systemie OS X Mavericks i działa w ramach zwykłego konta użytkownika, a nie konta głównego.
Serwer kompilacji powinien być komputerem autonomicznym z systemem OS X przeznaczonym do ciągłej integracji. W idealnym przypadku serwer kompilacji nie będzie odpowiedzialny za żadne inne role, takie jak serwer bazy danych, serwer internetowy lub stacja robocza dewelopera.
Ważne
Ten przewodnik nie obejmuje "headless" instalacji platformy Xamarin.
Konfiguracja zapory
Aby testy zostały przesłane do chmury testowej platformy Xamarin, komputer przesyłając testy musi mieć możliwość komunikowania się z serwerami w chmurze testowej. Zapory muszą być skonfigurowane tak, aby zezwalały na ruch sieciowy do i z serwerów znajdujących się w testcloud.xamarin.com na portach 80 i 443. Ten punkt końcowy jest zarządzany przez system DNS, a adres IP może ulec zmianie.
W niektórych sytuacjach test (lub urządzenie z uruchomionym testem) musi komunikować się z serwerami internetowymi chronionymi przez zaporę. W tym scenariuszu zapora musi być skonfigurowana tak, aby zezwalała na ruch z następujących adresów IP:
- 195.249.159.238
- 195.249.159.239
Przygotowywanie serwera kompilacji
Kluczowym krokiem w konfigurowaniu serwera kompilacji jest zainstalowanie wszystkich niezbędnych narzędzi, oprogramowania i certyfikatów do tworzenia aplikacji mobilnych. Ważne jest, aby serwer kompilacji mógł skompilować rozwiązanie mobilne i uruchomić wszystkie testy. Aby zminimalizować problemy z konfiguracją, oprogramowanie i narzędzia powinny być zainstalowane na tym samym koncie użytkownika, które hostuje usługę TeamCity. Poniższa lista zawiera szczegółowe informacje o tym, co jest wymagane:
- Visual Studio dla komputerów Mac — obejmuje to platformy Xamarin.iOS i Xamarin.Android.
- Zaloguj się do magazynu składników Xamarin — ten krok jest opcjonalny i wymagany tylko wtedy, gdy aplikacja korzysta ze składników z magazynu składników Xamarin. Aktywne logowanie się do magazynu składników w tym momencie uniemożliwi wszelkie problemy, gdy kompilacja usługi TeamCity próbuje skompilować aplikację.
- Xcode — program Xcode jest wymagany do kompilowania i podpisywania aplikacji systemu iOS.
- Narzędzia wiersza polecenia programu Xcode — opisano to w kroku 1 sekcji Instalacja przewodnika Aktualizowanie języka Ruby za pomocą środowiska rbenv .
- Profile podpisywania tożsamości i aprowizacji — zaimportuj certyfikaty i profil aprowizacji za pośrednictwem programu XCode. Aby uzyskać więcej informacji, zobacz Przewodnik firmy Apple dotyczący eksportowania tożsamości podpisywania i profilów aprowizacji.
- Magazyny kluczy systemu Android — skopiuj wymagane magazyny kluczy systemu Android do katalogu, do którego użytkownik usługi TeamCity ma dostęp, tj.
~/Documents/keystores/MyAndroidApp1. - Calabash — jest to opcjonalny krok, jeśli aplikacja ma testy napisane przy użyciu narzędzia Calabash. Aby uzyskać więcej informacji, zobacz przewodnik Installing Calabash on OS X Mavericks (Instalowanie powłoki Calabash w systemie OS X Mavericks) i Przewodnik Dotyczący aktualizowania języka Ruby za pomocą oprogramowania rbenv.
Na poniższym diagramie przedstawiono wszystkie te składniki:

Po zainstalowaniu całego oprogramowania zaloguj się do konta użytkownika i upewnij się, że wszystkie oprogramowanie jest prawidłowo zainstalowane i działa. Powinno to obejmować kompilowanie rozwiązania i przesyłanie aplikacji do usługi App Center Test. Można to uprościć, uruchamiając skrypt kompilacji zgodnie z opisem w następnej sekcji.
Tworzenie skryptu kompilacji
Mimo że usługa TeamCity może obsługiwać wszystkie aspekty kompilowania i przesyłania aplikacji mobilnych do samego testu w usłudze App Center; Zaleca się utworzenie skryptu kompilacji. Skrypt kompilacji zapewnia następujące korzyści:
- Dokumentacja — skrypt kompilacji służy jako forma dokumentacji dotyczącej sposobu tworzenia oprogramowania. Spowoduje to usunięcie niektórych "magii", które jest skojarzone z wdrażaniem aplikacji i umożliwia deweloperom skoncentrowanie się na funkcjach.
- Powtarzalność — skrypt kompilacji gwarantuje, że za każdym razem, gdy aplikacja jest kompilowana i wdrażana, odbywa się w taki sam sposób, niezależnie od tego, kto lub co wykonuje pracę. Ta powtarzalna spójność usuwa wszelkie problemy lub błędy, które mogą występować z powodu niepoprawnie wykonanej kompilacji lub błędu ludzkiego.
- Przechowywanie wersji — skrypt kompilacji można uwzględnić w systemie kontroli źródła. Oznacza to, że zmiany skryptu kompilacji można śledzić, monitorować i poprawiać w przypadku znalezienia błędów lub niedokładności.
- Przygotowanie środowiska — skrypt kompilacji może obejmować logikę instalowania wszystkich wymaganych zależności innych firm. Dzięki temu aplikacje będą kompilowane przy użyciu odpowiednich składników.
Skrypt kompilacji może być tak prosty, jak plik programu PowerShell (w systemie Windows) lub skrypt powłoki bash (w systemie OS X). Podczas tworzenia skryptu kompilacji istnieje kilka opcji dla języków skryptów:
Rake — jest to język specyficzny dla domeny (DSL) do tworzenia projektów opartych na języku Ruby. Rake ma przewagę popularności i bogaty ekosystem bibliotek.
psake — jest to biblioteka programu Windows PowerShell do tworzenia oprogramowania
FAKE — jest to język DSL oparty na języku F#, który umożliwia korzystanie z istniejących bibliotek platformy .NET w razie potrzeby.
Używany język skryptów zależy od preferencji i wymagań.
Uwaga
Można użyć systemu kompilacji opartego na języku XML, takiego jak MSBuild lub NAnt, ale nie mają one ekspresywności i możliwości utrzymania rozszerzenia DSL przeznaczonego do tworzenia oprogramowania.
Parametryzacja skryptu kompilacji
Proces tworzenia i testowania oprogramowania wymaga informacji, które powinny być tajne. Utworzenie pakietu APK może wymagać hasła do magazynu kluczy i/lub aliasu klucza w magazynie kluczy. Podobnie test usługi App Center wymaga klucza interfejsu API unikatowego dla dewelopera. Te typy wartości nie powinny być zakodowane w skrycie kompilacji. Zamiast tego należy przekazać je jako zmienne do skryptu kompilacji.
Mniej poufne to wartości, takie jak identyfikator urządzenia z systemem iOS lub identyfikator urządzenia z systemem Android identyfikujące urządzenia, które powinny być używane przez centrum aplikacji na potrzeby przebiegów testów. Nie są to wartości, które muszą być chronione, ale mogą ulec zmianie z kompilacji na kompilację.
Przechowywanie tych typów zmiennych poza skryptem kompilacji ułatwia również udostępnianie skryptu kompilacji w organizacji, na przykład deweloperom. Deweloperzy mogą używać dokładnie tego samego skryptu co serwer kompilacji, ale mogą używać własnych magazynów kluczy i kluczy interfejsu API.
Istnieją dwie możliwe opcje przechowywania tych poufnych wartości:
Plik konfiguracji — aby chronić klucz interfejsu API, ta wartość nie powinna być zaewidencjonowana w kontroli wersji. Plik można utworzyć dla każdej maszyny. Sposób odczytywania wartości z tego pliku zależy od używanego języka skryptowego.
Zmienne środowiskowe — można je łatwo ustawiać dla poszczególnych maszyn i są niezależne od bazowego języka skryptowego.
Każda z tych opcji ma zalety i wady. Program TeamCity dobrze współpracuje ze zmiennymi środowiskowymi, dlatego ten przewodnik zaleci tę technikę podczas tworzenia skryptów kompilacji.
Kroki kompilacji
Skrypt kompilacji musi wykonać następujące czynności:
Skompiluj aplikację — obejmuje to podpisywanie aplikacji przy użyciu poprawnego profilu aprowizacji.
Prześlij aplikację do chmury testowej platformy Xamarin — obejmuje to podpisywanie i zip wyrównywanie pakietu APK z odpowiednim magazynem kluczy.
Te dwa kroki zostaną wyjaśnione bardziej szczegółowo poniżej.
Kompilowanie aplikacji platformy Xamarin.iOS
Poniższy wiersz polecenia określający kompilację wydania rozwiązania SOLUTION_FILE.sln dla i Telefon. Lokalizację usługi IPA można ustawić, określając IpaPackageDir właściwość w wierszu polecenia:
Na komputerze Mac przy użyciu programu xbuild:
xbuild /p:Configuration="Release" \ /p:Platform="iPhone" \ /p:IpaPackageDir="$HOME/Builds" \ /t:Build MyProject.sln
Polecenie xbuild znajduje się zwykle w katalogu /Library/Frameworks/Mono.framework/Commands.
W systemie Windows przy użyciu programu msbuild:
msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:IpaPackageDir="%USERPROFILE%\Builds" /p:ServerAddress="192.168.1.3" /p:ServerUser="macuser" /t:Build MyProject.sln
Program msbuild nie będzie automatycznie rozszerzać $( ) wyrażeń przekazywanych przez wiersz polecenia. Z tego powodu zaleca się użycie pełnej ścieżki podczas ustawiania IpaPackageDir elementu w wierszu polecenia.
Kompilowanie aplikacji platformy Xamarin.Android
Aby skompilować aplikację systemu Android, użyj programu xbuild (lub msbuild w systemie Windows):
/Library/Frameworks/Mono.framework/Commands/xbuild /t:SignAndroidPackage /p:Configuration=Release /path/to/android.csproj
Kompilowanie aplikacji systemu Android xbuild używa projektu, podczas gdy aplikacja systemu iOS xbuild używa rozwiązania.
Przesyłanie testów Xamarin.UITests do Centrum aplikacji
Testy interfejsu użytkownika są przesyłane przy użyciu interfejsu wiersza polecenia usługi App Center, jak pokazano w poniższym fragmencie kodu:
appcenter test run uitest --app <TEAM-NAME/APP-NAME> --devices <DEVICE_SET> --token <API_KEY> --app-path <appname.APK-or-appname.IPA> --merge-nunit-xml report.xml --build-dir pathToUITestBuildDir
Po uruchomieniu testu wyniki testu zostaną zwrócone w postaci pliku XML stylu NUnit o nazwie report.xml. Usługa TeamCity wyświetli informacje w dzienniku kompilacji.
Aby uzyskać więcej informacji na temat przesyłania testów interfejsu użytkownika do centrum aplikacji, zobacz Przygotowywanie aplikacji platformy Xamarin.Android lub Przygotowywanie aplikacji platformy Xamarin.iOS.
Przesyłanie testów calabash do centrum aplikacji
Testy calabash są przesyłane przy użyciu interfejsu wiersza polecenia usługi App Center, jak pokazano w poniższym fragmencie kodu:
appcenter test run calabash --app <TEAM-NAME/APP-NAME> --devices <DEVICE_SET> --token <API_KEY> --app-path <appname.APK-or-appname.IPA> --project-dir pathToProjectDir
Aby przesłać aplikację systemu Android do usługi App Center Test, należy najpierw ponownie skompilować serwer testowy APK przy użyciu calabash-android:
$ calabash-android build </path/to/signed/APK>
$ appcenter test run calabash --app <TEAM-NAME/APP-NAME> --devices <DEVICE_SET> --token <API_KEY> --app-path <appname.APK> --project-dir pathToProjectDir
Aby uzyskać więcej informacji na temat przesyłania testów Calabash, zapoznaj się z przewodnikiem platformy Xamarin dotyczącym przesyłania testów Calabash do chmury testowej.
Tworzenie projektu TeamCity
Po zainstalowaniu usługi TeamCity i Visual Studio dla komputerów Mac można skompilować projekt, nadszedł czas, aby utworzyć projekt w usłudze TeamCity w celu skompilowania projektu i przesłania go do Centrum aplikacji.
Rozpoczęto od zalogowania się do usługi TeamCity za pośrednictwem przeglądarki internetowej. Przejdź do głównego projektu:
Pod głównym projektem utwórz nowy podprojekt:
Po utworzeniu podprojektu dodaj nową konfigurację kompilacji:

Dołącz projekt VCS do konfiguracji kompilacji. Odbywa się to za pośrednictwem ekranu Ustawienia kontroli wersji:

Jeśli nie ma utworzonego projektu VCS, możesz go utworzyć na stronie Nowy katalog główny VCS pokazany poniżej:

Po dołączeniu katalogu głównego VCS usługa TeamCity wyewidencjonuje projekt i spróbuje automatycznie wykryć kroki kompilacji. Jeśli znasz usługę TeamCity, możesz wybrać jedną z wykrytych kroków kompilacji. Na razie można bezpiecznie zignorować wykryte kroki kompilacji.
Następnie skonfiguruj wyzwalacz kompilacji. Spowoduje to utworzenie kompilacji w kolejce po spełnieniu określonych warunków, takich jak zatwierdzenie przez użytkownika kodu do repozytorium. Poniższy zrzut ekranu przedstawia sposób dodawania wyzwalacza kompilacji:
Przykład konfigurowania wyzwalacza kompilacji można zobaczyć na poniższym zrzucie ekranu:
W poprzedniej sekcji Parametryzacja skryptu kompilacji zasugerowano przechowywanie niektórych wartości jako zmiennych środowiskowych. Te zmienne można dodać do konfiguracji kompilacji za pomocą ekranu Parametry. Dodaj zmienne dla klucza interfejsu API centrum aplikacji, identyfikatora urządzenia z systemem iOS i identyfikatora urządzenia z systemem Android, jak pokazano na poniższym zrzucie ekranu:

Ostatnim krokiem jest dodanie kroku kompilacji, który wywoła skrypt kompilacji w celu skompilowania aplikacji i w kolejce aplikacji do usługi App Center Test. Poniższy zrzut ekranu jest przykładem kroku kompilacji, który używa pliku Rakefile do kompilowania aplikacji:

W tym momencie konfiguracja kompilacji zostanie ukończona. Dobrym pomysłem jest wyzwolenie kompilacji w celu potwierdzenia prawidłowego skonfigurowania projektu. Dobrym sposobem na to jest zatwierdzenie małej, nieistotnej zmiany w repozytorium. Usługa TeamCity powinna wykryć zatwierdzenie i uruchomić kompilację.
Po zakończeniu kompilacji sprawdź dziennik kompilacji i sprawdź, czy występują jakieś problemy lub ostrzeżenia z kompilacją, która wymaga uwagi.
Podsumowanie
W tym przewodniku opisano sposób tworzenia aplikacji Xamarin Mobile przy użyciu usługi TeamCity, a następnie przesyłania ich do usługi App Center Test. Omówiliśmy tworzenie skryptu kompilacji w celu zautomatyzowania procesu kompilacji. Skrypt kompilacji zajmuje się kompilowaniem aplikacji, przesyłaniem do usługi App Center Test i oczekiwaniem na wyniki.
Następnie omówiliśmy sposób tworzenia projektu w usłudze TeamCity, który będzie kolejkować kompilację za każdym razem, gdy deweloper zatwierdzi kod i wywoła skrypt kompilacji.