Uwaga
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 przedstawiono sposób konfigurowania serwera Jenkins jako serwera ciągłej integracji i automatyzowania kompilowania aplikacji mobilnych utworzonych za pomocą platformy Xamarin. W tym artykule opisano sposób instalowania serwera Jenkins w systemie OS X, konfigurowania go i konfigurowania zadań w celu kompilowania aplikacji platform Xamarin.iOS i Xamarin.Android po zatwierdzeniu zmian w systemie zarządzania kodem źródłowym.
Wprowadzenie do ciągłej integracji z platformą Xamarin wprowadza ciągłą integrację jako przydatną praktykę tworzenia oprogramowania, która zapewnia wczesne ostrzeżenie o uszkodzonym lub niezgodnym kodzie. Ciągła integracja umożliwia deweloperom rozwiązywanie problemów i problemów w miarę ich powstawania oraz przechowywanie oprogramowania w odpowiednim stanie na potrzeby wdrożenia. W tym przewodniku opisano sposób używania zawartości z obu dokumentów razem.
W tym przewodniku pokazano, jak zainstalować serwer Jenkins na dedykowanym komputerze z systemem OS X i skonfigurować go do automatycznego uruchamiania po uruchomieniu komputera. Po zainstalowaniu narzędzia Jenkins zainstalujemy dodatkowe wtyczki do obsługi programu MS Build. Narzędzie Jenkins obsługuje gotowe narzędzie Git. Jeśli serwer TFS jest używany do kontroli kodu źródłowego, należy również zainstalować dodatkowe wtyczki i narzędzia wiersza polecenia.
Po skonfigurowaniu serwera Jenkins i zainstalowaniu wszelkich niezbędnych wtyczek utworzymy jedno lub więcej zadań w celu skompilowania projektów platform Xamarin.Android i Xamarin.iOS. Zadanie to zbiór kroków i metadanych wymaganych do wykonania pewnej pracy. Zadanie zwykle składa się z następujących elementów:
- Zarządzanie kodem źródłowym (SCM) — jest to wpis metadanych w plikach konfiguracji narzędzia Jenkins, który zawiera informacje na temat nawiązywania połączenia z kontrolą kodu źródłowego i pobierania plików.
- Wyzwalacze — wyzwalacze są używane do uruchamiania zadania na podstawie określonych akcji, takich jak zatwierdzenie przez dewelopera zmian w repozytorium kodu źródłowego.
- Instrukcje kompilacji — jest to wtyczka lub skrypt, który skompiluje kod źródłowy i utworzy plik binarny, który można zainstalować na urządzeniach przenośnych.
- Opcjonalne akcje kompilacji — może to obejmować uruchamianie testów jednostkowych, przeprowadzanie statycznej analizy kodu, podpisywanie kodu lub uruchamianie innego zadania w celu wykonania innych zadań związanych z kompilacją.
- Powiadomienia — zadanie może wysłać jakieś powiadomienie o stanie kompilacji.
- Zabezpieczenia — mimo że opcjonalne, zdecydowanie zaleca się włączenie funkcji zabezpieczeń serwera Jenkins.
W tym przewodniku opisano sposób konfigurowania serwera Jenkins obejmującego każdy z tych punktów. Na koniec powinniśmy dobrze zrozumieć, jak skonfigurować i skonfigurować usługę Jenkins w celu tworzenia adresów IPA i APK dla naszych projektów mobilnych platformy Xamarin.
Wymagania
Idealny serwer kompilacji to autonomiczny komputer przeznaczony wyłącznie do tworzenia i testowania aplikacji. Dedykowany komputer zapewnia, że artefakty, które mogą być wymagane dla innych ról (takich jak serwer internetowy), nie powodują skażenia kompilacji. Jeśli na przykład serwer kompilacji działa również jako serwer internetowy, serwer internetowy może wymagać sprzecznej wersji niektórych wspólnych bibliotek. Z powodu tego konfliktu serwer internetowy może nie działać prawidłowo lub narzędzie Jenkins może tworzyć kompilacje, które nie działają podczas wdrażania dla użytkowników.
Serwer kompilacji dla aplikacji mobilnych platformy Xamarin jest konfigurowany bardzo podobnie jak stacja robocza dewelopera. Ma konto użytkownika, na którym zostaną zainstalowane narzędzia Jenkins, Visual Studio dla komputerów Mac i Xamarin.iOS i Xamarin.Android. Wszystkie certyfikaty podpisywania kodu, profile aprowizacji i magazyny kluczy muszą być również zainstalowane. Zazwyczaj konto użytkownika serwera kompilacji jest oddzielone od kont deweloperów — pamiętaj, aby zainstalować i skonfigurować wszystkie oprogramowanie, klucze i certyfikaty podczas logowania się przy użyciu konta użytkownika serwera kompilacji.
Na poniższym diagramie przedstawiono wszystkie te elementy na typowym serwerze kompilacji serwera Jenkins:
Aplikacje systemu iOS można tworzyć i podpisywane tylko na komputerze z systemem macOS. Komputer Mac Mini jest rozsądną opcją niższego kosztu, ale każdy komputer z systemem OS X 10.10 (Yosemite) lub nowszym jest wystarczający.
Jeśli serwer TFS jest używany do kontroli kodu źródłowego, należy zainstalować program Team Explorer Wszędzie. Program Team Explorer Everywhere zapewnia międzyplatformowy dostęp do serwera TFS w terminalu w systemie macOS.
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
Instalowanie narzędzia Jenkins
Pierwszym zadaniem korzystania z narzędzia Jenkins jest zainstalowanie go. Istnieją trzy sposoby uruchamiania serwera Jenkins w systemie OS X:
- Jako demon działa w tle.
- Wewnątrz kontenera serwletu, takiego jak Tomcat, Jetty lub JBoss.
- W ramach normalnego procesu uruchomionego na koncie użytkownika.
Większość tradycyjnych aplikacji ciągłej integracji działa w tle albo jako demon (w systemie OS X lub *nix) lub jako usługa (w systemie Windows). Jest to odpowiednie w scenariuszach, w których nie jest wymagana interakcja z graficznym interfejsem użytkownika i gdzie można łatwo przeprowadzić konfigurację środowiska kompilacji. Aplikacje mobilne wymagają również magazynów kluczy i certyfikatów podpisywania, które mogą być problematyczne w przypadku uruchamiania serwera Jenkins jako demona. Ze względu na te obawy ten dokument koncentruje się na trzecim scenariuszu — uruchamianiu serwera Jenkins na koncie użytkownika na serwerze kompilacji.
Jenkins.App to przydatny sposób instalowania serwera Jenkins. Jest to otoka appleScript, która upraszcza uruchamianie i zatrzymywanie serwera Jenkins. Zamiast działać w powłoce powłoki bash, narzędzie Jenkins działa jako aplikacja z ikoną w Docku, jak pokazano na poniższym zrzucie ekranu:
Uruchamianie lub zatrzymywanie serwera Jenkins jest tak proste, jak uruchamianie lub zatrzymywanie Jenkins.App.
Aby zainstalować Jenkins.App, pobierz najnowszą wersję ze strony pobierania projektu, na zdjęciu na poniższym zrzucie ekranu:
Wyodrębnij plik zip do /Applications
folderu na serwerze kompilacji i uruchom go tak samo jak każda inna aplikacja systemu OS X.
Przy pierwszym uruchomieniu Jenkins.App zostanie wyświetlone okno dialogowe z informacją o pobraniu narzędzia Jenkins:
Po zakończeniu pobierania Jenkins.App zostanie wyświetlone kolejne okno dialogowe z pytaniem, czy chcesz dostosować uruchamianie serwera Jenkins, jak pokazano na poniższym zrzucie ekranu:
Dostosowywanie serwera Jenkins jest opcjonalne i nie musi być wykonywane za każdym razem, gdy aplikacja jest uruchamiana — ustawienia domyślne serwera Jenkins będą działać w większości sytuacji.
Jeśli konieczne jest dostosowanie narzędzia Jenkins, kliknij przycisk Zmień ustawienia domyślne . Spowoduje to wyświetlenie dwóch kolejnych okien dialogowych: jednego z monitujących o parametry wiersza polecenia Języka Java, a drugiego, które pyta o parametry wiersza polecenia serwera Jenkins. Na poniższych dwóch zrzutach ekranu przedstawiono te dwa okna dialogowe:
Po uruchomieniu serwera Jenkins możesz ustawić go jako element logowania, aby był uruchamiany za każdym razem, gdy użytkownik zaloguje się na komputerze. Możesz to zrobić, klikając prawym przyciskiem myszy ikonę narzędzia Jenkins w obszarze Dock i wybierając pozycję Opcje... > Otwórz przy logowaniu, jak pokazano na poniższym zrzucie ekranu:
Spowoduje to automatyczne uruchomienie Jenkins.App za każdym razem, gdy użytkownik zaloguje się, ale nie po uruchomieniu komputera. Istnieje możliwość określenia konta użytkownika, za pomocą którego system OS X będzie automatycznie logować się podczas rozruchu. Otwórz preferencje systemowe i wybierz ikonę Użytkownicy i grupy, jak pokazano na poniższym zrzucie ekranu:
Kliknij przycisk Opcje logowania, a następnie wybierz konto, którego system OS X będzie używał do logowania podczas rozruchu.
W tym momencie narzędzie Jenkins zostało zainstalowane. Jeśli jednak chcemy tworzyć aplikacje mobilne platformy Xamarin, musimy zainstalować niektóre wtyczki.
Instalowanie wtyczek
Po zakończeniu Jenkins.App instalatora uruchomi narzędzie Jenkins i uruchomi przeglądarkę internetową przy użyciu adresu URL http://localhost:8080, jak pokazano na poniższym zrzucie ekranu:
Na tej stronie wybierz pozycję Jenkins Zarządzaj wtyczkami jenkins >> z menu w lewym górnym rogu, jak pokazano na poniższym zrzucie ekranu:
Spowoduje to wyświetlenie strony Menedżera wtyczek narzędzia Jenkins. Po kliknięciu karty Dostępne zostanie wyświetlona lista ponad 600 wtyczek, które można pobrać i zainstalować. Jest to na zdjęciu na poniższym zrzucie ekranu:
Przewijanie wszystkich 600 wtyczek w celu znalezienia kilku może być żmudne i podatne na błędy. Usługa Jenkins udostępnia pole wyszukiwania Filtr w prawym górnym rogu interfejsu. Użycie tego pola Filtr do wyszukiwania upraszcza lokalizowanie i instalowanie jednej lub wszystkich następujących wtyczek:
- Wtyczka programu JEnkins MSBuild — ta wtyczka umożliwia tworzenie programu Visual Studio i Visual Studio dla komputerów Mac rozwiązań (.sln) i projektów (csproj).
- Wtyczka iniektora środowiska — jest to opcjonalna, ale przydatna wtyczka, która umożliwia ustawianie zmiennych środowiskowych na poziomie zadania i kompilacji. Zapewnia również dodatkową ochronę zmiennych, takich jak hasła używane do podpisywania aplikacji. Czasami jest on skracany jako EnvInject Plugin .
- Wtyczka serwera Team Foundation Server — jest to opcjonalna wtyczka, która jest wymagana tylko wtedy, gdy używasz serwera Team Foundation Server lub usługi Team Foundation Services do kontroli kodu źródłowego.
Usługa Jenkins obsługuje usługę Git bez dodatkowych wtyczek.
Po zainstalowaniu wszystkich wtyczek należy ponownie uruchomić narzędzie Jenkins i skonfigurować ustawienia globalne dla każdej wtyczki. Ustawienia globalne wtyczki można znaleźć, wybierając pozycję Jenkins Manage Jenkins Configure System (Zarządzanie systemem Jenkins >>) w lewym górnym rogu, jak pokazano na poniższym zrzucie ekranu:
Po wybraniu tej opcji menu nastąpi przekierowanie do strony Konfigurowanie systemu [Jenkins]. Ta strona zawiera sekcje konfigurowania samego serwera Jenkins i ustawiania niektórych wartości globalnych wtyczek. Poniższy zrzut ekranu przedstawia przykład tej strony:
Konfigurowanie wtyczki MSBuild
Wtyczka MSBuild musi być skonfigurowana tak, aby korzystała z pliku /Library/Frameworks/Mono.framework/Commands/xbuild, aby skompilować pliki rozwiązania i projektu Visual Studio dla komputerów Mac. Przewiń w dół stronę Konfigurowanie systemu [Jenkins] do momentu wyświetlenia przycisku Dodaj program MSBuild , jak pokazano na poniższym zrzucie ekranu:
Kliknij ten przycisk i wypełnij pola Nazwa i Ścieżka do msBuild w wyświetlonym formularzu. Nazwa instalacji programu MSBuild powinna być czymś znaczącym, a ścieżka do programu MSBuild powinna być ścieżką do xbuild
, która jest zazwyczaj ścieżką /Library/Frameworks/Mono.framework/Commands/xbuild. Po zapisaniu zmian przez kliknięcie przycisku Zapisz lub Zastosuj w dolnej części strony narzędzie Jenkins będzie mogło skompilować xbuild
rozwiązania.
Konfigurowanie wtyczki TFS
Ta sekcja jest obowiązkowa, jeśli zamierzasz używać serwera TFS do kontroli kodu źródłowego.
Aby stacja robocza z systemem macOS wchodziła w interakcję z serwerem TFS, program Team Explorer Wszędzie musi być zainstalowany na stacji roboczej. Team Explorer Everywhere to zestaw narzędzi firmy Microsoft, który zawiera międzyplatformowego klienta wiersza polecenia na potrzeby uzyskiwania dostępu do serwera TFS. Program Team Explorer Everywhere można pobrać z firmy Microsoft i zainstalować w trzech krokach:
Rozpakuj plik archiwum do katalogu, który jest dostępny dla konta użytkownika. Możesz na przykład rozpakować plik do pliku ~/tee.
Skonfiguruj powłokę lub ścieżkę system, aby uwzględnić folder zawierający pliki, które zostały rozpakowane w kroku 1 powyżej. Przykład:
echo export PATH~/tee/:$PATH' >> ~/.bash_profile
Aby potwierdzić, że program Team Explorer Everywhere jest zainstalowany, otwórz sesję terminalu
tf
i wykonaj polecenie . Jeśli tf jest prawidłowo skonfigurowany, w sesji terminalu będą widoczne następujące dane wyjściowe:$ tf Team Explorer Everywhere Command Line Client (version 11.0.0.201306181526) Available commands and their options:
Po zainstalowaniu klienta wiersza polecenia dla serwera TFS należy skonfigurować narzędzie Jenkins z pełną ścieżką do tf
klienta wiersza polecenia. Przewiń w dół stronę Konfigurowanie systemu [Jenkins] do momentu znalezienia sekcji Team Foundation Server, jak pokazano na poniższym zrzucie ekranu:
Wprowadź pełną ścieżkę tf
do polecenia, a następnie kliknij przycisk Zapisz .
Konfigurowanie zabezpieczeń usługi Jenkins
Po pierwszym zainstalowaniu narzędzie Jenkins ma wyłączone zabezpieczenia, dzięki czemu każdy użytkownik może skonfigurować i uruchomić dowolne zadanie anonimowo. W tej sekcji opisano sposób konfigurowania zabezpieczeń przy użyciu bazy danych użytkowników serwera Jenkins w celu skonfigurowania uwierzytelniania i autoryzacji.
Ustawienia zabezpieczeń można znaleźć, wybierając pozycję Jenkins Manage Jenkins Configure Global Security (Zarządzanie usługą Jenkins >> Konfiguruj zabezpieczenia globalne), jak pokazano na poniższym zrzucie ekranu:
Na stronie Konfigurowanie zabezpieczeń globalnych zaznacz pole wyboru Włącz zabezpieczenia i powinien zostać wyświetlony formularz Kontrola dostępu podobny do następnego zrzutu ekranu:
Przełącz przycisk radiowy dla własnej bazy danych użytkownika narzędzia Jenkins w sekcji Obszar zabezpieczeń i upewnij się, że opcja Zezwalaj użytkownikom na rejestrację jest również zaznaczona, jak pokazano na poniższym zrzucie ekranu:
Na koniec uruchom ponownie usługę Jenkins i utwórz nowe konto. Pierwsze utworzone konto to konto główne, które zostanie automatycznie podniesione do administratora. Wróć do strony Konfigurowanie zabezpieczeń globalnych i zaznacz przycisk radiowy Zabezpieczenia oparte na macierzy. Konto główne powinno mieć pełny dostęp, a konto anonimowe powinno mieć dostęp tylko do odczytu, jak pokazano na poniższym zrzucie ekranu:
Po zapisaniu tych ustawień i ponownym uruchomieniu serwera Jenkins zabezpieczenia zostaną włączone.
Wyłączanie zabezpieczeń
W przypadku zapomnianego hasła lub blokady w całej usłudze Jenkins można wyłączyć zabezpieczenia, wykonując następujące kroki:
Zatrzymaj narzędzie Jenkins. Jeśli używasz Jenkins.app, możesz to zrobić, klikając prawym przyciskiem myszy ikonę Jenkins.App w docku i wybierając polecenie Zamknij z wyświetlonego menu:
Otwórz plik ~/.jenkins/config.xml w edytorze tekstów.
Zmień wartość
<usesecurity></usesecurity>
elementu ztrue
nafalse
.<authorizationstrategy></authorizationstrategy>
Usuń elementy i<securityrealm></securityrealm>
z pliku.Uruchom ponownie narzędzie Jenkins.
Konfigurowanie zadania
Na najwyższym poziomie narzędzie Jenkins organizuje wszystkie zadania wymagane do kompilowania oprogramowania do zadania. Zadanie zawiera również skojarzone z nim metadane, udostępniając informacje o kompilacji, takie jak pobieranie kodu źródłowego, częstotliwość uruchamiania kompilacji, wszelkie specjalne zmienne niezbędne do kompilowania oraz sposób powiadamiania deweloperów, jeśli kompilacja zakończy się niepowodzeniem.
Zadania są tworzone, wybierając pozycję Jenkins > New Job (Nowe zadanie ) z menu w prawym górnym rogu, jak pokazano na poniższym zrzucie ekranu:
Spowoduje to wyświetlenie strony Nowe zadanie [Jenkins]. Wprowadź nazwę zadania i wybierz przycisk radiowy Kompiluj projekt oprogramowania w stylu swobodnym. Poniższy zrzut ekranu przedstawia przykład tego:
Kliknięcie przycisku OK umożliwia wyświetlenie strony konfiguracji zadania. Powinno to wyglądać podobnie do poniższego zrzutu ekranu:
Usługa Jenkins organizuje zadania w katalogu na dysku twardym znajdującym się w następującej ścieżce: ~/.jenkins/jobs/[NAZWA ZADANIA]
Ten folder zawiera wszystkie pliki i artefakty specyficzne dla zadania, takie jak dzienniki, pliki konfiguracji i kod źródłowy, który należy skompilować.
Po utworzeniu zadania początkowego należy go skonfigurować przy użyciu co najmniej jednego z następujących elementów:
- Należy określić system zarządzania kodem źródłowym.
- Do projektu należy dodać co najmniej jedną akcję kompilacji. Są to kroki lub zadania wymagane do skompilowania aplikacji.
- Zadanie musi mieć przypisany jeden wyzwalacz kompilacji — zestaw instrukcji informujących usługę Jenkins, jak często pobierać kod i kompilować ostateczny projekt.
Konfigurowanie kontroli kodu źródłowego
Pierwsze zadanie, które wykonuje Jenkins, to pobranie kodu źródłowego z systemu zarządzania kodem źródłowym. Narzędzie Jenkins obsługuje obecnie wiele popularnych systemów zarządzania kodem źródłowym. W tej sekcji omówiono dwa popularne systemy: Git i Team Foundation Server. Każdy z tych systemów zarządzania kodem źródłowym został omówiony bardziej szczegółowo w poniższych sekcjach.
Używanie narzędzia Git do kontroli kodu źródłowego
Jeśli używasz serwera TFS do kontroli kodu źródłowego, pomiń tę sekcję i przejdź do następnej sekcji przy użyciu serwera TFS.
Narzędzie Jenkins obsługuje gotowe rozwiązanie Git — żadne dodatkowe wtyczki nie są niezbędne. Aby użyć usługi Git, kliknij przycisk radiowy Git i wprowadź adres URL repozytorium Git, jak pokazano na poniższym zrzucie ekranu:
Po zapisaniu zmian konfiguracja usługi Git zostanie ukończona.
Używanie serwera TFS do zarządzania kodem źródłowym
Ta sekcja dotyczy tylko użytkowników serwera TFS.
Kliknij przycisk radiowy Team Foundation Server i powinna zostać wyświetlona sekcja Konfiguracja serwera TFS, podobnie jak na poniższym zrzucie ekranu:
Podaj niezbędne informacje dla serwera TFS. Poniższy zrzut ekranu przedstawia przykład wypełnionego formularza:
Testowanie konfiguracji kontroli kodu źródłowego
Po skonfigurowaniu odpowiedniej kontroli kodu źródłowego kliknij przycisk Zapisz , aby zapisać zmiany. Spowoduje to powrót do strony głównej zadania, która będzie wyglądać podobnie do poniższego zrzutu ekranu:
Najprostszym sposobem sprawdzenia, czy kontrola kodu źródłowego jest prawidłowo skonfigurowana, jest ręczne wyzwolenie kompilacji, mimo że nie określono żadnych akcji kompilacji. Aby ręcznie uruchomić kompilację, strona główna zadania ma link Kompiluj teraz w menu po lewej stronie, jak pokazano na poniższym zrzucie ekranu:
Po uruchomieniu kompilacji w oknie dialogowym Historia kompilacji zostanie wyświetlony niebieski okrąg, pasek postępu, numer kompilacji i godzina rozpoczęcia kompilacji, podobnie jak na poniższym zrzucie ekranu:
Jeśli zadanie zakończy się pomyślnie, zostanie wyświetlone niebieskie kółko. Jeśli zadanie zakończy się niepowodzeniem, zostanie wyświetlone czerwone kółko.
Aby ułatwić rozwiązywanie problemów, które mogą wystąpić w ramach kompilacji, narzędzie Jenkins przechwytuje wszystkie dane wyjściowe konsoli zadania. Aby wyświetlić dane wyjściowe konsoli, kliknij zadanie w obszarze Historia kompilacji, a następnie w linku Dane wyjściowe konsoli w menu po lewej stronie. Poniższy zrzut ekranu przedstawia link Dane wyjściowe konsoli, a także niektóre dane wyjściowe z pomyślnego zadania:
Lokalizacja artefaktów kompilacji
Narzędzie Jenkins pobierze cały kod źródłowy do specjalnego folderu o nazwie obszar roboczy. Ten katalog można znaleźć w folderze w następującej lokalizacji:
~/.jenkins/jobs/[JOB NAME]/workspace
Ścieżka do obszaru roboczego będzie przechowywana w zmiennej środowiskowej o nazwie $WORKSPACE
.
Można przeglądać folder obszaru roboczego w narzędziu Jenkins, przechodząc do strony docelowej zadania, a następnie klikając link Obszar roboczy w menu po lewej stronie. Poniższy zrzut ekranu przedstawia przykład obszaru roboczego dla zadania o nazwie HelloWorld:
Wyzwalacze kompilacji
Istnieje kilka różnych strategii inicjowania kompilacji w usłudze Jenkins — są one nazywane wyzwalaczami kompilacji. Wyzwalacz kompilacji pomaga usłudze Jenkins zdecydować, kiedy uruchomić zadanie i skompilować projekt. Dwa z bardziej typowych wyzwalaczy kompilacji to:
- Kompilowanie okresowo — ten wyzwalacz powoduje, że usługa Jenkins uruchamia zadanie w określonych odstępach czasu, na przykład co dwie godziny lub o północy w dni robocze. Kompilacja zostanie uruchomiona niezależnie od tego, czy nastąpiły jakiekolwiek zmiany w repozytorium kodu źródłowego.
- Sondowanie SCM — ten wyzwalacz regularnie sonduje kontrolę kodu źródłowego. Jeśli jakiekolwiek zmiany zostały zatwierdzone w repozytorium kodu źródłowego, narzędzie Jenkins uruchomi nową kompilację.
Sondowanie SCM jest popularnym wyzwalaczem, ponieważ udostępnia szybką opinię, gdy deweloper zatwierdza zmiany, które powodują przerwanie kompilacji. Jest to przydatne w przypadku zgłaszania alertów zespołom, że niektóre ostatnio zatwierdzone kody powodują problemy i umożliwiają deweloperom rozwiązanie problemu, gdy zmiany są nadal świeże.
Okresowe kompilacje są często używane do tworzenia wersji aplikacji, która może być dystrybuowana do testerów. Na przykład okresowa kompilacja może być zaplanowana na piątek wieczorem, aby członkowie zespołu QA mogli przetestować pracę w poprzednim tygodniu.
Kompilowanie aplikacji platformy Xamarin.iOS
Projekty platformy Xamarin.iOS można kompilować w wierszu polecenia przy użyciu polecenia xbuild
lub msbuild
. Polecenie powłoki zostanie wykonane w kontekście konta użytkownika z uruchomionym serwerem Jenkins. Należy pamiętać, że konto użytkownika ma dostęp do profilu aprowizacji, aby aplikacja mogła być prawidłowo spakowana do dystrybucji. Istnieje możliwość dodania tego polecenia powłoki do strony konfiguracji zadania.
Przewiń w dół do sekcji Kompilacja. Kliknij przycisk Dodaj krok kompilacji i wybierz pozycję Wykonaj powłokę, jak pokazano na poniższym zrzucie ekranu:
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.
Tworzenie projektu platformy Xamarin.Android
Kompilowanie projektu platformy Xamarin.Android jest bardzo podobne do tworzenia projektu platformy Xamarin.iOS. Aby utworzyć plik APK na podstawie projektu platformy Xamarin.Android, należy skonfigurować narzędzie Jenkins w celu wykonania następujących dwóch kroków:
- Kompilowanie projektu przy użyciu wtyczki MSBuild
- Podpisywanie i zip wyrównuje plik APK z prawidłowym magazynem kluczy wydania.
Te dwa kroki zostaną szczegółowo omówione w dwóch następnych sekcjach.
Tworzenie pakietu APK
Kliknij przycisk Dodaj krok kompilacji i wybierz pozycję Kompiluj projekt lub rozwiązanie programu Visual Studio przy użyciu programu MSBuild, jak pokazano na poniższym zrzucie ekranu:
Po dodaniu kroku kompilacji do projektu wypełnij wyświetlone pola formularza. Poniższy zrzut ekranu to jeden z przykładów wypełnionego formularza:
Ten krok kompilacji zostanie wykonany xbuild
w folderze $WORKSPACE . Plik kompilacji MSBuild jest ustawiony na plik Xamarin.Android.csproj . Argumenty wiersza polecenia określają kompilację wydania docelowego PackageForAndroid. Produktem tego kroku będzie apk, który znajduje się w następującej lokalizacji:
$WORKSPACE/[PROJECT NAME]/bin/Release
Poniższy zrzut ekranu przedstawia przykład tego pakietu APK:
Ten plik APK nie jest gotowy do wdrożenia, ponieważ nie został podpisany przy użyciu prywatnego magazynu kluczy i musi być wyrównany do pliku zip.
Podpisywanie i zipalignowanie pakietu APK dla wydania
Podpisywanie i spakowanie pakietu APK to technicznie dwa oddzielne zadania wykonywane przez dwa oddzielne narzędzia wiersza polecenia z zestawu SDK systemu Android. Jednak wygodne jest wykonanie ich w jednej akcji kompilacji. Aby uzyskać więcej informacji na temat podpisywania i zipalignowania pakietu APK, zobacz dokumentację platformy Xamarin dotyczącą przygotowywania aplikacji systemu Android do wydania.
Oba te polecenia wymagają parametrów wiersza polecenia, które mogą się różnić od projektu do projektu. Ponadto niektóre z tych parametrów wiersza polecenia to hasła, które nie powinny być wyświetlane w danych wyjściowych konsoli podczas uruchamiania kompilacji. Niektóre z tych parametrów wiersza polecenia będą przechowywane w zmiennych środowiskowych. Zmienne środowiskowe wymagane do podpisywania i/lub wyrównywania zip zostały opisane w poniższej tabeli:
Zmienna środowiskowa | opis |
---|---|
KEYSTORE_FILE | Jest to ścieżka do magazynu kluczy do podpisywania pliku APK |
KEYSTORE_ALIAS | Klucz w magazynie kluczy, który będzie używany do podpisywania pliku APK. |
INPUT_APK | Plik APK utworzony przez xbuild program . |
SIGNED_APK | Podpisany plik APK wyprodukowany przez jarsigner program . |
FINAL_APK | To jest zip wyrównany APK, który jest produkowany przez zipalign . |
STORE_PASS | Jest to hasło używane do uzyskiwania dostępu do zawartości magazynu kluczy do śpiewania pliku. |
Zgodnie z opisem w sekcji Wymagania te zmienne środowiskowe można ustawić podczas kompilacji przy użyciu wtyczki EnvInject. Zadanie powinno mieć dodany nowy krok kompilacji na podstawie zmiennych środowiskowych Wstrzykiwanie, jak pokazano na następnym zrzucie ekranu:
W wyświetlonym polu Formularz zawartości właściwości zostaną dodane zmienne środowiskowe, po jednym na wiersz w następującym formacie:
ENVIRONMENT_VARIABLE_NAME = value
Poniższy zrzut ekranu przedstawia zmienne środowiskowe wymagane do podpisania pliku APK:
Zwróć uwagę, że niektóre zmienne środowiskowe dla plików APK są oparte na zmiennej środowiskowej WORKSPACE
.
Końcowa zmienna środowiskowa to hasło umożliwiające dostęp do zawartości magazynu kluczy: STORE_PASS
. Hasła są wartościami poufnymi, które powinny być zasłonięte lub pominięte w plikach dziennika. Wtyczkę EnvInject można skonfigurować do ochrony tych wartości, aby nie były wyświetlane w dziennikach.
Bezpośrednio przed sekcją Kompilacja konfiguracji zadania jest sekcja Środowisko kompilacji. Po przełączeniu pola wyboru Wstrzykiwanie haseł niektóre pola formularza będą wyświetlane. Te pola formularza służą do przechwytywania nazwy i wartości zmiennej środowiskowej. Poniższy zrzut ekranu to przykład dodawania zmiennej środowiskowej STORE_PASS
:
Po zainicjowaniu zmiennych środowiskowych następnym krokiem jest dodanie kroku kompilacji do podpisywania i zip wyrównywania pliku APK. Natychmiast po kroku kompilacji w celu wstawienia zmiennych środowiskowych będzie kolejna kompilacja polecenia Execute shell , która zostanie wykonana jarsigner
i zipalign
. Każde polecenie zajmie jeden wiersz, jak pokazano w poniższym fragmencie kodu:
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore $KEYSTORE_FILE -storepass $STORE_PASS -signedjar $SIGNED_APK $INPUT_APK $KEYSTORE_ALIAS
zipalign -f -v 4 $SIGNED_APK $FINAL_APK
Poniższy zrzut ekranu przedstawia przykład wprowadzania jarsigner
poleceń i zipalign
w kroku :
Po utworzeniu wszystkich akcji kompilacji dobrym rozwiązaniem jest wyzwolenie kompilacji ręcznej w celu sprawdzenia, czy wszystko działa. Jeśli kompilacja zakończy się niepowodzeniem, dane wyjściowe konsoli powinny zostać przejrzyone, aby uzyskać informacje na temat przyczyn niepowodzenia kompilacji.
Przesyłanie testów do chmury testowej
Testy automatyczne można przesłać do testowej chmury przy użyciu poleceń powłoki. Aby uzyskać więcej informacji na temat konfigurowania przebiegu testowego w chmurze Xamarin Test, zobacz Przygotowywanie aplikacji platformy Xamarin.Android i Przygotowywanie aplikacji platformy Xamarin.iOS.
Podsumowanie
W tym przewodniku wprowadziliśmy usługę Jenkins jako serwer kompilacji w systemie macOS i skonfigurowaliśmy go do kompilowania i przygotowywania aplikacji mobilnych platformy Xamarin do wydania. Na komputerze z systemem macOS zainstalowano narzędzie Jenkins wraz z kilkoma wtyczkami obsługującymi proces kompilacji. Utworzyliśmy i skonfigurowaliśmy zadanie, które będzie ściągać kod z serwera TFS lub Git, a następnie kompilować ten kod w aplikacji gotowej do wydania. Omówiliśmy również dwa różne sposoby planowania uruchamiania zadań.