Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu kılavuz, Jenkins'i sürekli tümleştirme sunucusu olarak ayarlamayı ve Xamarin ile oluşturulan mobil uygulamaları derlemeyi otomatikleştirmeyi gösterir. Jenkins'in OS X'e nasıl yükleneceği, yapılandırıldığı ve değişiklikler kaynak kod yönetim sisteminde işlendiğinde Xamarin.iOS ve Xamarin.Android uygulamalarını derlemek için işlerin nasıl ayarlanacağı açıklanır.
Xamarin ile Sürekli Tümleştirmeye giriş, bozuk veya uyumsuz kodla ilgili erken uyarı sağlayan kullanışlı bir yazılım geliştirme uygulaması olarak sürekli tümleştirmeyi tanıtır. CI, geliştiricilerin ortaya çıkan sorunları ve sorunları çözmesine olanak tanır ve yazılımı dağıtım için uygun bir durumda tutar. Bu izlenecek yol, her iki belgedeki içeriğin birlikte nasıl kullanılacağını kapsar.
Bu kılavuz, Jenkins'in OS X çalıştıran ayrılmış bir bilgisayara nasıl yükleneceğini ve bilgisayar başlatıldığında otomatik olarak çalışacak şekilde nasıl yapılandırılacaklarını gösterir. Jenkins yüklendikten sonra MS Build'i desteklemek için ek eklentiler yükleyeceğiz. Jenkins, Git'i kullanıma sunar. Kaynak kodu denetimi için TFS kullanılıyorsa ek bir eklenti ve komut satırı yardımcı programları da yüklenmelidir.
Jenkins yapılandırıldıktan ve gerekli eklentiler yüklendikten sonra Xamarin.Android ve Xamarin.iOS projelerini derlemek için bir veya daha fazla iş oluşturacağız. İş, bazı işleri gerçekleştirmek için gereken adımlardan ve meta verilerden oluşan bir koleksiyondur. bir iş genellikle aşağıdakilerden oluşur:
- Kaynak Kod Yönetimi (SCM) – Bu, Jenkins yapılandırma dosyalarında kaynak kod denetimine bağlanma ve alınacak dosyalar hakkında bilgi içeren bir meta veri girişidir.
- Tetikleyiciler – Tetikleyiciler, bir geliştiricinin kaynak kod deposunda değişiklik gerçekleştirmesi gibi belirli eylemlere dayalı olarak bir iş başlatmak için kullanılır.
- Derleme Yönergeleri – Bu, kaynak kodu derleyecek ve mobil cihazlara yüklenebilen bir ikili dosya üretecek bir eklenti veya betiktir.
- İsteğe Bağlı Derleme Eylemleri : Bu, birim testleri çalıştırmayı, kod üzerinde statik analiz gerçekleştirmeyi, kod imzalamayı veya derlemeyle ilgili diğer işleri gerçekleştirmek için başka bir iş başlatmayı içerebilir.
- Bildirimler : bir iş, derlemenin durumu hakkında bir tür bildirim gönderebilir.
- Güvenlik – İsteğe bağlı olsa da Jenkins güvenlik özelliklerinin de etkinleştirilmesi kesinlikle önerilir.
Bu kılavuzda, bu noktaların her birini kapsayan bir Jenkins sunucusunun nasıl ayarlanacağı açıklanmaktadır. Sonunda, Jenkins'i Xamarin mobil projelerimiz için IPA ve APK'lar oluşturacak şekilde ayarlama ve yapılandırma hakkında iyi bir anlayışa sahip olmamız gerekir.
Gereksinimler
İdeal derleme sunucusu, uygulamayı derleme ve muhtemelen test etme amacıyla ayrılmış tek başına bir bilgisayardır. Ayrılmış bir bilgisayar, diğer roller için gerekli olabilecek yapıtların (örneğin, bir web sunucusunun) derlemeyi kirletmemesini sağlar. Örneğin, derleme sunucusu aynı zamanda bir web sunucusu gibi davranıyorsa, web sunucusu bazı ortak kitaplıkların çakışan bir sürümünü gerektirebilir. Bu çakışma nedeniyle web sunucusu düzgün çalışmayabilir veya Jenkins kullanıcılara dağıtıldığında çalışmayan derlemeler oluşturabilir.
Xamarin mobil uygulamaları için derleme sunucusu, bir geliştiricinin iş istasyonuna çok benzer şekilde ayarlanır. Jenkins, Mac için Visual Studio ve Xamarin.iOS ile Xamarin.Android'in yükleneceği bir kullanıcı hesabı vardır. Tüm kod imzalama sertifikaları, sağlama profilleri ve anahtar depoları da yüklenmelidir. Derleme sunucusunun kullanıcı hesabı genellikle geliştirici hesaplarınızdan ayrıdır. Derleme sunucusu kullanıcı hesabıyla oturum açarken tüm yazılımları, anahtarları ve sertifikaları yüklediğinizden ve yapılandırıldığından emin olun.
Aşağıdaki diyagramda, tipik bir Jenkins derleme sunucusundaki bu öğelerin tümü gösterilmektedir:
iOS uygulamaları yalnızca macOS çalıştıran bir bilgisayarda derlenebilir ve imzalanabilir. Mac Mini makul bir düşük maliyetli seçenektir, ancak OS X 10.10 (Yosemite) veya üzerini çalıştırabilen tüm bilgisayarlar yeterlidir.
Kaynak kodu denetimi için TFS kullanılıyorsa, Her Yerde Ekip Gezgini'ni yüklemek istersiniz. Team Explorer Everywhere, macOS'taki Terminal'de TFS'ye platformlar arası erişim sağlar.
Güvenlik Duvarı Yapılandırması
Testlerin Xamarin Test Bulutu'na gönderilebilmesi için testleri gönderen bilgisayarın Test Bulutu sunucularıyla iletişim kurabilmesi gerekir. Güvenlik duvarları, 80 ve 443 bağlantı noktalarındaki testcloud.xamarin.com bulunan sunuculardan gelen ve giden ağ trafiğine izin verecek şekilde yapılandırılmalıdır. Bu uç nokta DNS tarafından yönetilir ve IP adresi değiştirilebilir.
Bazı durumlarda, bir test (veya testi çalıştıran bir cihaz) bir güvenlik duvarı tarafından korunan web sunucularıyla iletişim kurmalıdır. Bu senaryoda güvenlik duvarı aşağıdaki IP adreslerinden gelen trafiğe izin verecek şekilde yapılandırılmalıdır:
- 195.249.159.238
- 195.249.159.239
Jenkins'i yükleme
Jenkins'i kullanmanın ilk görevi yüklemektir. Jenkins'i OS X üzerinde çalıştırmanın üç yolu vardır:
- Arka planda çalışan bir daemon olarak.
- Tomcat, Jetty veya JBoss gibi bir servlet kapsayıcısı içinde.
- Kullanıcı hesabı altında çalışan normal bir işlem olarak.
Geleneksel sürekli tümleştirme uygulamalarının çoğu arka planda bir daemon (OS X veya *nix üzerinde) veya hizmet olarak (Windows üzerinde) çalışır. Bu, GUI etkileşiminin gerekli olmadığı ve derleme ortamının kurulumunun kolayca gerçekleştirilebildiği senaryolar için uygundur. Mobil uygulamalar, Jenkins bir daemon olarak çalışırken erişmesi sorunlu olabilecek anahtar depoları ve imzalama sertifikaları da gerektirir. Bu endişeler nedeniyle bu belge, jenkins'i derleme sunucusunda bir kullanıcı hesabı altında çalıştırma adlı üçüncü senaryoya odaklanır.
Jenkins.App, Jenkins'i yüklemenin kullanışlı bir yoludur. Bu, jenkins sunucusunun başlatılmasını ve durdurulmasını basitleştiren bir AppleScript sarmalayıcıdır. Jenkins, aşağıdaki ekran görüntüsünde gösterildiği gibi bash kabuğunda çalıştırmak yerine Dock'ta simgesi olan bir uygulama olarak çalışır:
Jenkins'i başlatmak veya durdurmak, Jenkins.App başlatmak veya durdurmak kadar basittir.
Jenkins.App yüklemek için aşağıdaki ekran görüntüsünde yer alan projenin indirme sayfasından en son sürümü indirin:
Zip dosyasını derleme sunucunuzdaki /Applications klasöre ayıklayın ve diğer OS X uygulamaları gibi başlatın.
Jenkins.App ilk kez başlattığınızda Jenkins'i indireceğini bildiren bir iletişim kutusu sunulur:
Jenkins.App indirme işlemini tamamladıktan sonra, aşağıdaki ekran görüntüsünde gösterildiği gibi Jenkins başlangıcını özelleştirmek isteyip istemediğinizi soran başka bir iletişim kutusu görüntülenir:
Jenkins'in özelleştirilmesi isteğe bağlıdır ve uygulama her başlatıldığında gerçekleştirilmesi gerekmez. Jenkins için varsayılan ayarlar çoğu durumda çalışır.
Jenkins'i özelleştirmek gerekiyorsa Varsayılanları değiştir düğmesine tıklayın. Bu size ardışık iki iletişim kutusu sunar: biri Java komut satırı parametrelerini, diğeri de Jenkins komut satırı parametrelerini ister. Aşağıdaki iki ekran görüntüsü şu iki iletişim kutusunu gösterir:
Jenkins çalıştırıldıktan sonra, kullanıcı bilgisayarda her oturum açışında başlatılması için bunu bir oturum açma öğesi olarak ayarlamak isteyebilirsiniz. Dock'ta Jenkins simgesine sağ tıklayıp Seçenekler... seçeneğini belirleyerek bunu yapabilirsiniz. > Aşağıdaki ekran görüntüsünde gösterildiği gibi Oturum Aç'ta açın:
Bu, kullanıcı her oturum açtığında Jenkins.App otomatik olarak başlatılmasına neden olur, ancak bilgisayar ön başlatıldığında başlatılmaz. OS X'in önyükleme zamanında otomatik olarak oturum açmak için kullanacağı bir kullanıcı hesabı belirtmek mümkündür. Sistem Tercihleri'ni açın ve bu ekran görüntüsünde gösterildiği gibi Kullanıcılar ve Gruplar simgesini seçin:
Oturum Açma Seçenekleri düğmesine tıklayın ve ardından OS X'in önyükleme sırasında oturum açmak için kullanacağı hesabı seçin.
Bu noktada Jenkins yüklendi. Ancak, Xamarin mobil uygulamaları oluşturmak istiyorsak bazı eklentiler yüklememiz gerekir.
Eklentileri Yükleme
Jenkins.App yükleyicisi tamamlandığında Jenkins'i başlatır ve aşağıdaki ekran görüntüsünde gösterildiği gibi URL http://localhost:8080ile web tarayıcısını başlatır:
Bu sayfada, aşağıdaki ekran görüntüsünde gösterildiği gibi sol üst köşedeki menüden Jenkins > Jenkins > Yönet Eklentilerini Yönet'i seçin:
Bu, Jenkins Eklenti Yöneticisi sayfasını görüntüler. Kullanılabilir sekmesine tıklarsanız indirilip yüklenebilen 600'den fazla eklentinin listesini görürsünüz. Bu, aşağıdaki ekran görüntüsünde yer almaktadır:
Birkaç eklentiyi bulmak için 600 eklentinin tümünü kaydırmak yorucu ve hataya eğilimli olabilir. Jenkins, arabirimin sağ üst köşesinde bir Filtre arama alanı sağlar. Arama yapmak için bu Filtre alanını kullanmak, aşağıdaki eklentilerden birini veya tümünü bulma ve yükleme işlemlerini basitleştirir:
- Jenkins MSBuild Eklentisi – Bu eklenti Visual Studio ve Mac için Visual Studio çözümleri (.sln) ve projeleri (.csproj) derlemeyi mümkün kılar.
- Ortam Enjektör Eklentisi – Bu, iş ve derleme düzeyinde ortam değişkenlerini ayarlamayı mümkün kılan isteğe bağlı ancak kullanışlı bir eklentidir. Ayrıca, uygulamayı kodla imzalamak için kullanılan parolalar gibi değişkenler için ek koruma sunar. Bazen EnvInject Eklentisi olarak kısaltılır.
- Team Foundation Server Eklentisi – Bu, yalnızca kaynak kodu denetimi için Team Foundation Server veya Team Foundation Services kullanıyorsanız gerekli olan isteğe bağlı bir eklentidir.
Jenkins, ek eklenti olmadan Git'i destekler.
Tüm eklentileri yükledikten sonra Jenkins'i yeniden başlatmak ve her eklenti için genel ayarları yapılandırmak isteyeceksiniz. Eklentinin genel ayarları, aşağıdaki ekran görüntüsünde gösterildiği gibi sol üst köşedeki Jenkins Manage Jenkins Configure System (Jenkins > Yapılandırma Sistemini Yönet) > seçeneği belirlenerek bulunabilir:
Bu menü seçeneğini belirlediğinizde, Sistemi Yapılandır [Jenkins] sayfasına yönlendirilirsiniz. Bu sayfa, Jenkins'in kendisini yapılandırmaya ve bazı genel eklenti değerlerini ayarlamaya yönelik bölümler içerir. Aşağıdaki ekran görüntüsünde bu sayfanın bir örneği gösterilmektedir:
MSBuild Eklentisini Yapılandırma
MSBuild eklentisi, Mac için Visual Studio çözümü ve proje dosyalarını derlemek için /Library/Frameworks/Mono.framework/Commands/xbuild kullanacak şekilde yapılandırılmalıdır. Aşağıdaki ekran görüntüsünde gösterildiği gibi MSBuild Ekle düğmesi görünene kadar Sistemi Yapılandır [Jenkins] sayfasını aşağı kaydırın:
Bu düğmeye tıklayın ve görüntülenen formdaki Ad ve MSBuild Yolu alanlarını doldurun. MSBuild yüklemenizin adı anlamlı bir ad, MSBuild Yolu ise genellikle /Library/Frameworks/Mono.framework/Commands/xbuild olan yolu xbuildolmalıdır. Sayfanın en altındaki Kaydet veya Uygula düğmesine tıklayarak değişiklikleri kaydettikten sonra Jenkins, çözümlerinizi derlemek için kullanabilir xbuild .
TFS Eklentisini Yapılandırma
Kaynak kodu denetiminiz için TFS kullanmayı planlıyorsanız bu bölüm zorunludur.
MacOS iş istasyonunun bir TFS sunucusuyla etkileşim kurabilmesi için ekip gezgini her yerde iş istasyonuna yüklenmelidir. Team Explorer Everywhere, TFS'ye erişmek için platformlar arası bir komut satırı istemcisi içeren microsoft tarafından sunulan bir araç kümesidir. Her Yerde Ekip Gezgini Microsoft'tan indirilebilir ve üç adımda yüklenebilir:
Arşiv dosyasının sıkıştırmasını kullanıcı hesabı tarafından erişilebilen bir dizine açın. Örneğin, dosyanın sıkıştırmasını ~/tee olarak açabilirsiniz.
Kabuğu veya sistem yolunu, yukarıdaki birinci adımda sıkıştırması açılmış dosyaları barındıran klasörü içerecek şekilde yapılandırın. Örneğin,
echo export PATH~/tee/:$PATH' >> ~/.bash_profileHer Yerde Takım Gezgini'nin yüklü olduğunu onaylamak için bir terminal oturumu açın ve komutunu yürütebilirsiniz
tf. tf düzgün yapılandırıldıysa terminal oturumunuzda aşağıdaki çıkışı görürsünüz:$ tf Team Explorer Everywhere Command Line Client (version 11.0.0.201306181526) Available commands and their options:
TFS için komut satırı istemcisi yüklendikten sonra Jenkins, komut satırı istemcisinin tam yolu tf ile yapılandırılmalıdır. Aşağıdaki ekran görüntüsünde gösterildiği gibi Team Foundation Server bölümünü bulana kadar Sistemi Yapılandır [Jenkins] sayfasını aşağı kaydırın:
Komutun tam yolunu tf girin ve Kaydet düğmesine tıklayın.
Jenkins Güvenliğini Yapılandırma
jenkins ilk yüklendiğinde güvenliği devre dışı bırakmıştır, bu nedenle herhangi bir kullanıcının herhangi bir işi anonim olarak ayarlaması ve çalıştırması mümkündür. Bu bölüm, kimlik doğrulaması ve yetkilendirmeyi yapılandırmak için Jenkins kullanıcı veritabanını kullanarak güvenliği yapılandırmayı kapsar.
Güvenlik ayarları, bu ekran görüntüsünde gösterildiği gibi Jenkins'i > Yönet Jenkins > Genel Güvenliği Yapılandır'ı seçerek bulunabilir:
Genel Güvenliği Yapılandır sayfasında, Güvenliği Etkinleştir onay kutusunu işaretleyin; Erişim Denetimi formu bir sonraki ekran görüntüsüne benzer şekilde görünmelidir:
Güvenlik Bölgesi Bölümünde Jenkins'in kendi kullanıcı veritabanı için radyo düğmesini açın ve aşağıdaki ekran görüntüsünde gösterildiği gibi Kullanıcıların kaydolmasına izin ver seçeneğinin de işaretli olduğundan emin olun:
Son olarak Jenkins'i yeniden başlatın ve yeni bir hesap oluşturun. Oluşturulan ilk hesap kök hesaptır ve bu hesap otomatik olarak yöneticiye yükseltilir. Genel Güvenliği Yapılandır sayfasına dönün ve Matris tabanlı güvenlik radyo düğmesini kapatın. Aşağıdaki ekran görüntüsünde gösterildiği gibi kök hesaba tam erişim verilmelidir ve anonim hesaba salt okunur erişim verilmelidir:
Bu ayarlar kaydedildikten ve Jenkins yeniden başlatıldıktan sonra güvenlik açılır.
Güvenliği Devre Dışı Bırakma
Unutulan bir parola veya Jenkins genelinde kilitlenme durumunda, şu adımları izleyerek güvenliği devre dışı bırakmak mümkündür:
Jenkins'i durdurun. Jenkins.app kullanıyorsanız, Dock'taki Jenkins.App simgesine sağ tıklayıp açılan menüden Çık'ı seçerek bunu yapabilirsiniz:

~/.jenkins/config.xml dosyasını bir metin düzenleyicisinde açın.
öğesinin
<usesecurity></usesecurity>truefalsedeğerini olarak değiştirin.<authorizationstrategy></authorizationstrategy>ve<securityrealm></securityrealm>öğelerini dosyadan silin.Jenkins'i yeniden başlatın.
İş Ayarlama
Jenkins en üst düzeyde, bir işe yazılım oluşturmak için gereken çeşitli görevlerin tümünü düzenler. Bir işin ayrıca, kaynak kodu alma, derlemenin ne sıklıkta çalışması gerektiği, derlemenin oluşturulması için gerekli olan özel değişkenler ve derleme başarısız olursa geliştiricilere nasıl bildirecekleri gibi derleme hakkında bilgi sağlayan meta verileri de vardır.
İşler, aşağıdaki ekran görüntüsünde gösterildiği gibi sağ üst köşedeki menüden Jenkins > Yeni İş seçilerek oluşturulur:

Bu, Yeni İş [Jenkins] sayfasını görüntüler. İş için bir ad girin ve Serbest stil yazılım projesi oluştur radyo düğmesini seçin. Aşağıdaki ekran görüntüsünde bunun bir örneği gösterilmektedir:

Tamam düğmesine tıklanması işin yapılandırma sayfasını gösterir. Bu, aşağıdaki ekran görüntüsüne benzemelidir:

Jenkins, şu yolda bulunan sabit diskteki bir dizindeki işleri düzenler: ~/.jenkins/jobs/[JOB NAME]
Bu klasör günlükler, yapılandırma dosyaları ve derlenmesi gereken kaynak kodu gibi işe özgü tüm dosyaları ve yapıtları içerir.
İlk iş oluşturulduktan sonra, aşağıdakilerden biriyle veya daha fazlasıyla yapılandırılması gerekir:
- Kaynak kodu yönetim sistemi belirtilmelidir.
- Projeye bir veya daha fazla derleme eylemi eklenmelidir. Bunlar, uygulamayı derlemek için gereken adımlar veya görevlerdir.
- İşe bir derleme tetikleyicisi atanmalıdır. Jenkins'e kodu alma ve son projeyi oluşturma sıklıklarını bildiren yönergeler kümesi.
Kaynak Kodu Denetimini Yapılandırma
Jenkins'in ilk görevi kaynak kodu yönetim sisteminden almaktır. Jenkins, bugün kullanılabilen popüler kaynak kodu yönetim sistemlerinin çoğunu destekler. Bu bölüm Git ve Team Foundation Server adlı iki popüler sistemi kapsar. Bu kaynak kodu yönetim sistemlerinin her biri aşağıdaki bölümlerde daha ayrıntılı olarak açıklanmıştır.
Kaynak Kodu Denetimi için Git Kullanma
Kaynak kodu denetimi için TFS kullanıyorsanız, bu bölümü atlayın ve TFS kullanarak sonraki bölüme geçin.
Jenkins, Git'i kullanıma sunar; ek eklenti gerekmez. Git'i kullanmak için Git radyo düğmesine tıklayın ve aşağıdaki ekran görüntüsünde gösterildiği gibi Git deposunun URL'sini girin:

Değişiklikler kaydedildikten sonra Git yapılandırması tamamlanır.
Kaynak Kodu Yönetimi için TFS Kullanma
Bu bölüm yalnızca TFS kullanıcıları için geçerlidir.
Team Foundation Server radyo düğmesine tıkladığınızda, aşağıdaki ekran görüntüsündekine benzer şekilde TFS yapılandırma bölümü görünmelidir:

TFS için gerekli bilgileri sağlayın. Aşağıdaki ekran görüntüsünde tamamlanmış formun bir örneği gösterilmektedir:

Kaynak kodu denetimi yapılandırmasını test etme
Uygun kaynak kodu denetimi yapılandırıldıktan sonra, değişiklikleri kaydetmek için Kaydet'e tıklayın. Bu işlem sizi işin giriş sayfasına döndürür ve aşağıdaki ekran görüntüsüne benzer:

Kaynak kod denetiminin düzgün yapılandırıldığını doğrulamanın en basit yolu, herhangi bir derleme eylemi belirtilmemiş olsa bile bir derlemeyi el ile tetiklemedir. Derlemeyi el ile başlatmak için, aşağıdaki ekran görüntüsünde gösterildiği gibi işin giriş sayfasında sol taraftaki menüde Şimdi Derle bağlantısı bulunur:

Derleme başlatıldığında, Derleme Geçmişi iletişim kutusunda aşağıdaki ekran görüntüsüne benzer şekilde yanıp sönen mavi daire, ilerleme çubuğu, derleme numarası ve derlemenin başlatıldığı saat görüntülenir:

İş başarılı olursa mavi bir daire görüntülenir. İş başarısız olursa kırmızı bir daire görüntülenir.
Derlemenin bir parçası olarak ortaya çıkabilecek sorunları gidermeye yardımcı olmak için Jenkins, işin tüm konsol çıkışını yakalar. Konsol çıkışını görmek için Derleme Geçmişi'ndeki işe ve ardından sol taraftaki menüden Konsol Çıkışı bağlantısına tıklayın. Aşağıdaki ekran görüntüsünde Konsol Çıktısı bağlantısının yanı sıra başarılı bir işin çıktılarından bazıları gösterilmektedir:

Derleme Yapıtlarının Konumu
Jenkins, kaynak kodun tamamını çalışma alanı adı verilen özel bir klasöre alır. Bu dizin aşağıdaki konumdaki klasörün içinde bulunabilir:
~/.jenkins/jobs/[JOB NAME]/workspace
Çalışma alanının yolu adlı $WORKSPACEbir ortam değişkeninde depolanır.
Bir işin giriş sayfasına gidip sol taraftaki menüden Çalışma Alanı bağlantısına tıklayarak Jenkins'teki çalışma alanı klasörüne göz atmak mümkündür. Aşağıdaki ekran görüntüsünde HelloWorld adlı bir iş için çalışma alanı örneği gösterilmektedir:

Derleme Tetikleyicileri
Jenkins'te derleme başlatmaya yönelik birkaç farklı strateji vardır; bunlar derleme tetikleyicileri olarak bilinir. Derleme tetikleyicisi Jenkins'in bir işi ne zaman başlatıp projeyi oluşturacaklarına karar vermesine yardımcı olur. Daha yaygın derleme tetikleyicilerinden ikisi şunlardır:
- Düzenli aralıklarla derleme – Bu tetikleyici Jenkins'in belirli aralıklarla( örneğin iki saatte bir veya hafta içi gece yarısı) bir iş başlatmasına neden olur. Derleme, kaynak kod deposunda herhangi bir değişiklik olup olmadığına bakılmaksızın başlar.
- Yoklama SCM – Bu tetikleyici, kaynak kodu denetimini düzenli olarak yoklar. Kaynak kod deposunda yapılan değişiklikler varsa Jenkins yeni bir derleme başlatır.
Bir geliştirici derlemenin bozulmasına neden olan değişiklikleri işlediğinde hızlı geri bildirim sağladığından SCM yoklaması popüler bir tetikleyicidir. Bu, ekipleri kısa süre önce işlenen bazı kodların sorunlara neden olduğu konusunda uyarmak için kullanışlıdır ve geliştiricilere değişiklikler hala göz önünde bulundurularak sorunu çözmelerini sağlar.
Düzenli derlemeler genellikle uygulamanın test edicilere dağıtılabilir bir sürümünü oluşturmak için kullanılır. Örneğin, Soru-Cevap ekibinin üyelerinin önceki haftanın çalışmalarını test edebilmesi için düzenli bir derleme Cuma akşamı için zamanlanabilir.
Xamarin.iOS Uygulamalarını Derleme
Xamarin.iOS projeleri veya msbuildkullanılarak xbuild komut satırında derlenebilir. Kabuk komutu, Jenkins çalıştıran kullanıcı hesabı bağlamında yürütülür. Uygulamanın dağıtım için düzgün bir şekilde paketlenmesi için kullanıcı hesabının sağlama profiline erişimi olması önemlidir. Bu kabuk komutunu iş yapılandırma sayfasına eklemek mümkündür.
Aşağı kaydırarak Derleme bölümüne gelin. Derleme adımı ekle düğmesine tıklayın ve aşağıdaki ekran görüntüsünde gösterildiği gibi Kabuğu yürüt'e tıklayın:

i Telefon için çözüm SOLUTION_FILE.sln release derlemesini belirtmek için aşağıdaki komut satırı. IPA'nın konumu, komut satırında özelliği belirtilerek IpaPackageDir ayarlanabilir:
Mac'te xbuild kullanarak:
xbuild /p:Configuration="Release" \ /p:Platform="iPhone" \ /p:IpaPackageDir="$HOME/Builds" \ /t:Build MyProject.sln
xbuild komutu genellikle /Library/Frameworks/Mono.framework/Commands dizininde bulunur.
Windows'da, msbuild kullanarak:
msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:IpaPackageDir="%USERPROFILE%\Builds" /p:ServerAddress="192.168.1.3" /p:ServerUser="macuser" /t:Build MyProject.sln
msbuild , komut satırı tarafından geçirilen ifadeleri otomatik olarak genişletmez $( ) . Bu nedenle, komut satırında ayarlarken IpaPackageDir tam yol kullanmanız önerilir.
Özellik hakkında IpaPackageDir daha fazla bilgi için iOS 9.8 sürüm notlarına bakın.
Xamarin.Android Projesi Oluşturma
Xamarin.Android projesi oluşturmak, kavram olarak Xamarin.iOS projesi oluşturmaya çok benzer. Xamarin.Android projesinden APK oluşturmak için Jenkins'in aşağıdaki iki adımı gerçekleştirecek şekilde yapılandırılması gerekir:
- MSBuild eklentisini kullanarak projeyi derleme
- APK'yı geçerli bir yayın keystore ile hizalayın ve zip ile hizalayın.
Bu iki adım sonraki iki bölümde daha ayrıntılı olarak ele alınacaktır.
APK oluşturma
Derleme adımı ekle düğmesine tıklayın ve aşağıdaki ekran görüntüsünde gösterildiği gibi MSBuild kullanarak Visual Studio projesi veya çözümü derle'yi seçin:

Derleme adımı projeye eklendikten sonra, görüntülenen form alanlarını doldurun. Aşağıdaki ekran görüntüsü, tamamlanmış formun bir örneğidir:

Bu derleme adımı $WORKSPACE klasöründe yürütülür xbuild. MSBuild Derleme Dosyası, Xamarin.Android.csproj dosyasına ayarlanır. Komut Satırı Bağımsız Değişkenleri, hedef PackageForAndroid'un bir yayın derlemesini belirtir. Bu adımın ürünü, aşağıdaki konumda bulunan bir APK olacaktır:
$WORKSPACE/[PROJECT NAME]/bin/Release
Aşağıdaki ekran görüntüsünde bu APK örneği gösterilmektedir:

Bu APK, özel bir anahtar deposu ile imzalanmadığından ve zip ile hizalanması gerektiğinden dağıtım için hazır değildir.
Apk'yi Yayın için İmzalama ve Sıkıştırma
APK'yi imzalama ve sıkıştırma, Android SDK'dan iki ayrı komut satırı aracı tarafından gerçekleştirilen teknik olarak iki ayrı görevdir. Ancak, bunları tek bir derleme eyleminde gerçekleştirmek uygundur. APK imzalama ve zipaligning hakkında daha fazla bilgi için Xamarin'in android uygulamasını yayın için hazırlama belgelerine bakın.
Bu komutların her ikisi de projeden projeye farklılık gösterebilen komut satırı parametreleri gerektirir. Buna ek olarak, bu komut satırı parametrelerinden bazıları, derleme çalışırken konsol çıkışında görünmemesi gereken parolalardır. Bu komut satırı parametrelerinden bazılarını ortam değişkenlerinde depolayacağız. İmzalama ve/veya zip hizalama için gereken ortam değişkenleri aşağıdaki tabloda açıklanmıştır:
| Ortam değişkeni | Açıklama |
|---|---|
| KEYSTORE_FILE | Bu, APK'yi imzalamak için anahtar deposunun yoludur |
| KEYSTORE_ALIAS | APK'yi imzalamak için kullanılacak anahtar deposundaki anahtar. |
| INPUT_APK | tarafından xbuildoluşturulan APK. |
| SIGNED_APK | tarafından jarsignerüretilen imzalı APK. |
| FINAL_APK | Bu, tarafından zipalignüretilen zip ile hizalanmış APK'dır. |
| STORE_PASS | Bu, dosyayı söylemek için anahtar deposunun içeriğine erişmek için kullanılan paroladır. |
Gereksinimler bölümünde açıklandığı gibi, bu ortam değişkenleri derleme sırasında EnvInject eklentisi kullanılarak ayarlanabilir. İş, sonraki ekran görüntüsünde gösterildiği gibi Ekle ortam değişkenlerini temel alan yeni bir derleme adımı eklemelidir:

Görüntülenecek Özellikler İçerik formu alanına ortam değişkenleri aşağıdaki biçimde satır başına bir tane eklenir:
ENVIRONMENT_VARIABLE_NAME = value
Aşağıdaki ekran görüntüsünde APK'yi imzalamak için gereken ortam değişkenleri gösterilmektedir:

APK dosyaları için bazı ortam değişkenlerinin ortam değişkeni üzerine oluşturulduğuna WORKSPACE dikkat edin.
Son ortam değişkeni, anahtar deposunun içeriğine erişmek için paroladır: STORE_PASS. Parolalar, günlük dosyalarında gizlenmesi veya atlanması gereken hassas değerlerdir. EnvInject eklentisi, günlüklerde görünmemeleri için bu değerleri koruyacak şekilde yapılandırılabilir.
İş yapılandırmasının Derleme bölümünden hemen önce bir Derleme Ortamı bölümü bulunur. Parola ekle onay kutusu değiştirildiğinde, bazı form alanları görünür. Bu form alanları, ortam değişkeninin adını ve değerini yakalamak için kullanılır. Aşağıdaki ekran görüntüsü, ortam değişkenini ekleme örneğidir STORE_PASS :

Ortam değişkenleri başlatıldıktan sonra, bir sonraki adım APK'yı imzalamak ve zip ile hizalamak için bir derleme adımı eklemektir. Ortam değişkenlerini eklemeye yönelik derleme adımından hemen sonra ve zipalignyürütülecek jarsigner başka bir Execute shell komut derlemesi olacaktır. Her komut, aşağıdaki kod parçacığında gösterildiği gibi bir satır alır:
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
Aşağıdaki ekran görüntüsünde, adıma ve zipalign komutlarının jarsigner nasıl girilir örneği gösterilmektedir:

Tüm derleme eylemleri uygulandıktan sonra, her şeyin çalıştığını doğrulamak için el ile derleme tetikleme iyi bir uygulamadır. Derleme başarısız olursa, derlemenin başarısız olmasına neyin neden olduğu hakkında bilgi için Konsol Çıktısı gözden geçirilmelidir.
Testleri Test Bulutu'na Gönderme
Otomatikleştirilmiş testler kabuk komutları kullanılarak Test Bulutu'na gönderilebilir. Xamarin Test Bulutu'nda Test Çalıştırması ayarlama hakkında daha fazla bilgi için bkz . Xamarin.Android Uygulamalarını Hazırlama ve Xamarin.iOS Uygulamalarını Hazırlama.
Özet
Bu kılavuzda Jenkins'i macOS üzerinde derleme sunucusu olarak tanıttık ve Xamarin mobil uygulamalarını derlemek ve sürüme hazırlamak için yapılandırdık. Derleme işlemini desteklemek için Jenkins'i macOS bilgisayara çeşitli eklentilerle birlikte yükledik. TFS veya Git'ten kod çekecek ve ardından bu kodu yayına hazır bir uygulamada derleyecek bir iş oluşturup yapılandırdık. Ayrıca işlerin çalıştırılacağı zamanları zamanlamanın iki farklı yolunu keşfettik.


















