Pengantar Integrasi Berkelanjutan dengan Xamarin
Integrasi Berkelanjutan adalah praktik rekayasa perangkat lunak di mana build otomatis mengompilasi dan secara opsional menguji aplikasi saat kode ditambahkan atau diubah oleh pengembang di repositori kontrol versi proyek. Artikel ini akan membahas konsep umum Integrasi Berkelanjutan dan beberapa opsi yang tersedia untuk Integrasi Berkelanjutan dengan proyek Xamarin.
Adalah umum pada proyek perangkat lunak bagi pengembang untuk bekerja secara paralel. Pada titik tertentu, perlu untuk mengintegrasikan semua aliran kerja paralel ini ke dalam satu basis kode yang membentuk produk akhir. Pada masa awal pengembangan perangkat lunak, integrasi ini dilakukan di akhir proyek, yang merupakan proses yang sulit dan berisiko.
Integrasi Berkelanjutan (CI) menghindari kompleksitas tersebut dengan menggabungkan setiap perubahan pengembang ke dalam basis kode umum secara berkelanjutan, biasanya setiap kali pengembang memeriksa perubahan pada repositori kode bersama proyek. Setiap check-in memicu build otomatis dan menjalankan pengujian otomatis untuk memverifikasi bahwa kode yang baru diperkenalkan tidak merusak kode yang ada. Dengan cara ini, CI segera memunculkan kesalahan dan masalah dan memastikan bahwa semua anggota tim tetap up to date dengan pekerjaan satu sama lain. Ini menghasilkan basis kode yang kohesif dan stabil.
Sistem integrasi berkelanjutan memiliki dua bagian utama:
- Kontrol Versi – Kontrol Versi (VC), juga disebut kontrol sumber atau manajemen kode sumber, mengonsolidasikan semua kode proyek ke dalam satu repositori bersama dan menyimpan riwayat lengkap setiap perubahan pada setiap file. Repositori ini, sering disebut sebagai cabang utama , berisi kode sumber yang pada akhirnya akan digunakan untuk membangun versi produksi atau rilis aplikasi. Ada banyak sumber terbuka dan produk komersial untuk tugas ini, yang biasanya memungkinkan tim atau individu untuk membuat fork salinan kode ke cabang sekunder di mana mereka dapat membuat perubahan yang luas atau melakukan eksperimen tanpa risiko ke cabang utama. Setelah perubahan di cabang sekunder divalidasi, mereka kemudian dapat semuanya digabungkan kembali ke cabang utama.
- Server Integrasi Berkelanjutan – Server Integrasi Berkelanjutan bertanggung jawab untuk mengumpulkan semua artefak proyek (kode sumber, gambar, video, database, pengujian otomatis, dll.), mengompilasi aplikasi, dan menjalankan pengujian otomatis. Sekali lagi, ada banyak alat server CI sumber terbuka dan komersial.
Pengembang biasanya memiliki salinan kerja dari satu atau beberapa cabang di stasiun kerja mereka, di mana pekerjaan awalnya dilakukan. Setelah serangkaian pekerjaan yang sesuai selesai, perubahan "diperiksa ke" atau "berkomitmen" ke cabang yang sesuai, yang menyebarkannya ke salinan kerja pengembang lain. Ini adalah bagaimana tim memastikan bahwa mereka semua bekerja pada kode yang sama.
Sekali lagi, dengan integrasi berkelanjutan, tindakan melakukan perubahan menyebabkan server CI membangun proyek dan menjalankan pengujian otomatis untuk memverifikasi kebenaran kode sumber. Jika ada kesalahan build atau kegagalan pengujian, server CI memberi tahu pengembang yang bertanggung jawab (melalui email, IM, Twitter, Growl, dll.) sehingga dia dapat memperbaiki masalah. (Server CI bahkan dapat menolak penerapan jika ada kegagalan, yang disebut "check-in terjaga".)
Diagram berikut mengilustrasikan proses ini:
Aplikasi seluler memperkenalkan tantangan unik untuk integrasi berkelanjutan. Aplikasi mungkin memerlukan sensor seperti GPS atau kamera yang hanya tersedia di perangkat fisik. Selain itu, simulator atau emulator hanya merupakan perkiraan perangkat keras dan dapat menyembunyikan atau mengaburkan masalah. Pada akhirnya, perlu untuk menguji aplikasi seluler pada perangkat keras nyata untuk yakin bahwa aplikasi tersebut benar-benar siap untuk pelanggan.
App Center Menguji masalah khusus ini dengan menguji aplikasi langsung di ratusan perangkat fisik. Pengembang menulis pengujian penerimaan otomatis, yang memungkinkan pengujian UI yang kuat. Setelah pengujian ini diunggah ke App Center, server CI dapat menjalankannya secara otomatis sebagai bagian dari proses CI seperti yang ditunjukkan pada diagram berikut:
Ada ekosistem ekstensif alat komersial dan sumber terbuka yang dirancang untuk mendukung CI. Bagian ini menjelaskan beberapa yang paling umum.
Azure DevOps dan Team Foundation Server (TFS) adalah alat kolaboratif Microsoft untuk layanan build integrasi berkelanjutan, pelacakan tugas, alat perencanaan dan pelaporan yang tangkas, dan kontrol versi. Dengan kontrol versi, Azure DevOps dan TFS dapat bekerja dengan sistemnya sendiri (Team Foundation Version Control atau TFVC) atau dengan proyek yang dihosting di GitHub.
- Azure DevOps menyediakan layanan melalui cloud. Keuntungan utamanya adalah tidak memerlukan perangkat keras atau infrastruktur khusus dan dapat diakses dari mana saja melalui browser web dan melalui alat pengembangan populer seperti Visual Studio, membuatnya menarik bagi tim yang didistribusikan secara geografis. Ini gratis untuk tim yang terdiri dari lima pengembang atau kurang, setelah itu lisensi tambahan dapat dibeli untuk mengakomodasi tim yang sedang berkembang.
- TFS dirancang untuk server Windows lokal dan diakses melalui jaringan lokal atau koneksi VPN ke jaringan tersebut. Keuntungan utamanya adalah Anda sepenuhnya mengontrol konfigurasi server build dan dapat menginstal perangkat lunak atau layanan tambahan apa pun yang diperlukan. TFS memiliki edisi Express tingkat pemula gratis untuk tim kecil.
Baik TFS dan Azure DevOps terintegrasi erat dengan Visual Studio dan memungkinkan pengembang untuk melakukan banyak kontrol versi dan tugas CI dari dalam kenyamanan satu IDE. Plugin Team Explorer Everywhere untuk Eclipse (lihat di bawah) juga tersedia. Visual Studio untuk Mac memiliki pratinjau TFVC yang tersedia.
Azure DevOps Pipelines memiliki dukungan langsung untuk proyek Xamarin, di mana Anda membuat definisi build untuk setiap platform yang ingin Anda targetkan (Android, iOS, dan Windows). Lisensi Xamarin yang sesuai diperlukan untuk setiap definisi build. Dimungkinkan juga untuk menghubungkan server build TFS lokal berkemampangan Xamarin ke Azure DevOps untuk tujuan ini. Dengan penyiapan ini, build yang diantrekan ke Azure DevOps akan didelegasikan ke server lokal. Untuk detailnya, lihat Membangun dan merilis agen. Secara bergantian, Anda dapat menggunakan alat build lain seperti Jenkins atau Team City.
Ringkasan lengkap semua fitur Manajemen Siklus Hidup Aplikasi (ALM) Visual Studio, Azure DevOps, dan Team Foundation Server, lihat DevOps dengan Aplikasi Xamarin.
Team Explorer Everywhere menghadirkan kekuatan Team Foundation Server dan Azure DevOps ke tim yang berkembang di luar Visual Studio. Ini memungkinkan pengembang untuk terhubung ke proyek tim lokal atau di cloud dari Eclipse atau klien baris perintah lintas platform untuk OS X dan Linux. Team Explorer Everywhere menyediakan akses penuh ke kontrol versi (termasuk Git), item kerja, dan kemampuan build untuk platform non-Windows.
Git adalah solusi kontrol versi sumber terbuka populer yang awalnya dikembangkan untuk mengelola kode sumber untuk kernel Linux. Ini adalah sistem yang sangat cepat dan fleksibel yang populer dengan proyek perangkat lunak dari semua ukuran. Ini dengan mudah menskalakan dari pengembang tunggal dengan akses Internet yang buruk ke tim besar yang menjangkau dunia. Git juga membuat percabangan sangat mudah, yang pada gilirannya dapat mendorong aliran pengembangan paralel dengan risiko minimal.
Git dapat beroperasi sepenuhnya melalui browser web, atau klien GUI yang berjalan di Linux, Mac OSX, dan Windows. Ini gratis untuk repositori publik; repositori privat memerlukan paket berbayar.
Versi Visual Studio untuk Windows dan Mac saat ini menyediakan dukungan asli untuk Git. Microsoft menyediakan ekstensi yang dapat diunduh untuk Git untuk versi Visual Studio yang lebih lama. Seperti disebutkan di atas, Azure DevOps dan TFS dapat menggunakan Git untuk kontrol versi alih-alih TFVC.
Subversion (SVN) adalah sistem kontrol versi sumber terbuka populer yang telah digunakan sejak 2000. SVN berjalan pada semua versi modern OS X, Windows, FreeBSD, Linux, dan Unix. Visual Studio untuk Mac memiliki dukungan asli untuk SVN. Ada ekstensi pihak ketiga yang membawa dukungan SVN ke Visual Studio.
Menyiapkan lingkungan integrasi berkelanjutan berarti menggabungkan sistem kontrol versi dengan layanan build. Untuk yang terakhir, dua yang paling umum adalah:
- Azure Pipelines adalah sistem build Azure DevOps dan TFS. Ini terintegrasi erat dengan Visual Studio, yang memudahkan pengembang untuk memicu build, menjalankan pengujian secara otomatis, dan melihat hasilnya.
- Jenkins adalah server CI sumber terbuka dengan ekosistem plugin yang kaya untuk mendukung semua jenis pengembangan perangkat lunak. Ini berjalan pada Windows dan Mac OS X. Jenkins tidak terintegrasi dengan IDE tertentu. Sebaliknya, ini dikonfigurasi dan dikelola melalui antarmuka web. Jenkins CI juga mudah dipasang dan dikonfigurasi yang membuatnya menarik untuk tim kecil.
Anda dapat menggunakan TFS/Azure DevOps dengan sendirinya, atau Anda dapat menggunakan Jenkins dalam kombinasi dengan TFS/Azure DevOps atau Git seperti yang dijelaskan di bagian berikut.
Seperti yang dibahas, Azure DevOps dan Team Foundation Server menyediakan kontrol versi dan layanan build. Layanan build selalu memerlukan lisensi Xamarin Business atau Enterprise untuk setiap platform target.
Dengan Azure DevOps, Anda membuat definisi build terpisah untuk setiap platform target dan memasukkan lisensi yang sesuai di sana. Setelah dikonfigurasi, Azure DevOps akan menjalankan build dan pengujian di cloud. Lihat Azure Pipelines untuk detail selengkapnya.
Dengan Team Foundation Server, Anda mengonfigurasi mesin build sebagai berikut untuk platform target tertentu:
- Android dan Windows: Instal Visual Studio dan alat Xamarin (untuk Android dan Windows keduanya) dan konfigurasikan dengan lisensi Xamarin Anda. Anda juga perlu memindahkan Android SDK ke lokasi bersama di server tempat agen build TFS dapat menemukannya. Untuk detailnya, lihat Mengonfigurasi TFVC.
- iOS dan Xamarin: Instal Visual Studio dan alat Xamarin di server Windows dengan lisensi yang sesuai. Kemudian instal Visual Studio untuk Mac pada komputer Mac OS X yang dapat diakses jaringan, yang akan berfungsi sebagai host build dan membuat paket aplikasi akhir (IPA untuk iOS, APP untuk OS X).
Diagram berikut mengilustrasikan topografi ini:
Dimungkinkan juga untuk menautkan server TFS lokal ke proyek Azure DevOps sehingga build Azure DevOps didelegasikan ke server lokal. Untuk detailnya, lihat Membangun dan merilis agen.
Jika Anda menggunakan Jenkins untuk membangun aplikasi, Anda dapat menyimpan kode di Azure DevOps atau Team Foundation Server dan terus menggunakan Jenkins untuk build CI Anda. Anda dapat memicu build Jenkins saat mendorong kode ke repositori Git proyek tim Anda atau saat Anda memeriksa kode ke TFVC. Untuk detailnya, lihat Jenkins dengan Azure DevOps.
Lingkungan CI umum lainnya dapat sepenuhnya berbasis OS X. Skenario ini melibatkan penggunaan Git untuk kontrol kode sumber dan Jenkins untuk server build. Kedua hal ini berjalan pada satu komputer Mac OS X dengan Visual Studio untuk Mac terinstal. Ini sangat mirip dengan lingkungan Azure DevOps + Jenkins yang dibahas di bagian sebelumnya:
Penting
Jenkins tidak didukung oleh Microsoft.