Là một nhà phát triển iOS, tôi đã tìm cách tạo ra một cơ sở hạ tầng CI và CCQ (= Chất lượng mã liên tục) cho các dự án iOS mà chúng tôi đang phát triển cho đến nay. Chúng tôi đã sử dụng Jenkins và SonarQube cho hầu hết các dự án Web và Android (sử dụng dự án VM foreach, cài đặt và định cấu hình CI và CCQ là tự động) và nó hoạt động rất tốt. Nhưng đối với các dự án iOS, Jenkins cần thực hiện việc xây dựng trên máy tính chạy macOS, vì vậy tôi không chắc mình có giải pháp hoàn hảo cho việc đó.
- Tôi đã xem xét một giải pháp để ảo hóa macOS. Đối với mỗi dự án, để tạo một macOS ảo và cài đặt Jenkins làm nô lệ ở đó để xử lý các bản dựng. Giải pháp có vẻ hoàn hảo, nhưng có vẻ không hợp pháp khi có nhiều hơn 2 VM chạy với macOS (và tất nhiên, chỉ trên máy tính Mac) http://images.apple.com/legal/sla/docs/macOS1012.pdf -> Điểm 2.B. Vì vậy, đây không phải là một giải pháp cho trường hợp của tôi.
- Một giải pháp phổ biến khác mà tôi đã đọc là có một máy tính Mac (có thể là MacMini) sẽ xử lý tất cả các bản dựng cho tất cả các dự án. Bạn nghĩ gì về việc thực hiện này? Có bao nhiêu dự án có thể xử lý? Các nhà phát triển có thể cần phải thực hiện một số cấu hình trên dự án riêng của họ (đặc biệt là trong SonarQube), có an toàn không?
- Chúng ta có thể có nhiều phiên bản Jenkins và SonarQube trên cùng một máy, sử dụng các cổng khác nhau không? Đây thậm chí là một giải pháp để được xem xét hoặc tôi đang nói không có ý nghĩa?
- Có giải pháp khả thi nào khác, có thể tốt hơn những giải pháp trên :)?
Lưu ý: Tôi không gắn bó với bộ đôi Jenkins + SonarQube, nếu có bất kỳ công cụ nào khác phù hợp hơn để phát triển iOS, vui lòng chia sẻ chúng với tôi.