Infrastruktur Integrasi berkelanjutan untuk beberapa proyek iOS

13

Sebagai pengembang iOS, saya ingin membuat infrastruktur CI dan CCQ (= Kualitas Kode Berkelanjutan) untuk proyek-proyek iOS yang kami miliki dalam pengembangan sejauh ini. Kami sudah menggunakan Jenkins dan SonarQube untuk hampir semua proyek Web dan Android (menggunakan proyek VM foreach, menginstal dan mengkonfigurasi CI dan CCQ secara otomatis) dan ini bekerja dengan baik. Tetapi untuk proyek iOS, Jenkins perlu melakukan pembangunan di komputer yang menjalankan macOS, jadi saya tidak yakin saya memiliki solusi yang tepat untuk itu.

  • Saya sedang mencari solusi untuk virtualisasi macOS. Untuk setiap proyek, untuk membuat macOS virtual dan instal Jenkins sebagai budak di sana untuk menangani build. Solusinya tampak sempurna, tetapi tampaknya tidak sah untuk menggunakan lebih dari 2 VM berjalan dengan macOS (dan tentu saja, hanya pada komputer Mac) http://images.apple.com/legal/sla/docs/macOS1012.pdf -> Intinya 2.B. Jadi ini bukan solusi untuk kasus saya.
  • Solusi umum lain yang pernah saya baca adalah memiliki komputer Mac (mungkin MacMini) yang akan menangani semua build untuk semua proyek. Apa pendapat Anda tentang implementasi ini? Berapa banyak proyek yang bisa ditangani? Pengembang mungkin perlu melakukan beberapa konfigurasi pada proyek mereka sendiri (terutama di SonarQube), apakah aman?
  • Bisakah kita memiliki beberapa instance Jenkins dan SonarQube pada mesin yang sama, menggunakan port yang berbeda? Apakah ini bahkan solusi untuk dipertimbangkan atau saya berbicara tidak masuk akal?
  • Apakah ada solusi lain yang layak, mungkin lebih baik daripada yang di atas :)?

Catatan: Saya tidak menggunakan duet Jenkins + SonarQube, jika ada alat lain yang lebih cocok untuk pengembangan iOS, silakan bagikan dengan saya.

Dan Bodnar
sumber
@ Pierre.Vriens: Kualitas Kode Berkelanjutan. Saya tidak yakin apakah ini istilah yang umum digunakan, atau hanya SonarQube yang menggunakannya. :)
Dan Bodnar

Jawaban:

10

Apakah ada solusi lain yang layak, mungkin lebih baik daripada yang di atas :)?

Untuk Jenkins mungkin tidak, karena masalah lisensi yang Anda sebutkan (Anda harus menjalankan macOS pada perangkat keras bermerek Apple). Jika Anda bisa mengatasinya maka itu pasti solusinya.

Jika tidak, maka saya sarankan Anda untuk memeriksa sistem integrasi berkesinambungan iOS yang dihosting di mana Anda tidak harus berurusan dengan perangkat keras / lisensi Apple, layanan ini akan mengaturnya untuk Anda, misalnya https: //www.bitrise. io

Ada juga layanan di mana Anda dapat menyewa Apple dan Anda dapat mengonfigurasinya dengan cara apa pun yang Anda suka, https://www.macstadium.com adalah salah satunya (mungkin yang terbesar).

Viktor Benei
sumber
1
Terima kasih atas tanggapannya. Saya masih mencari solusi. Saya pikir MiniMac adalah cara untuk pergi untuk saat ini.
Dan Bodnar
2

Saya pikir Anda juga dapat melihat virtualisasi ringan baru untuk macOS yang disebut Anka . Anka Build dapat memungkinkan Anda untuk menyiapkan infrastruktur tervirtualisasi pada perangkat keras Apple dan memungkinkan Anda untuk menyediakan macOS Vms sesuai permintaan dari Jenkins.

Manisha
sumber