Tích hợp liên tục cho Ruby on Rails? [đóng cửa]


149

Tôi đã tìm kiếm một giải pháp tích hợp liên tục cho Ruby on Rails, nhưng không hài lòng với kết quả này. Tôi đến từ một cửa hàng .NET đã sử dụng CruiseControl.NET và thực sự hư hỏng với tính dễ sử dụng và trạng thái / báo cáo phong phú của nó.

Lý tưởng nhất là tôi đang tìm kiếm:

  • Rõ ràng Git / SVN và Test :: Tích hợp đơn vị

  • Tích hợp với Rake và / hoặc Capistrano

  • Giao diện web hiển thị trạng thái của bản dựng

  • Thông báo qua email về các bản dựng không thành công.

  • Thông báo trên màn hình (có khả năng thông qua Growl)

  • API REST để xây dựng trạng thái

  • Khung plugin để chạy các công cụ phân tích mã khác và báo cáo kết quả trong giao diện người dùng


11
Vì vậy, sự lựa chọn của bạn bây giờ, ba năm sau là gì?
Andrei

3
Tôi có thể đề nghị Circleci.com không?
Paul Biggar

Câu trả lời:


83

Tôi vừa trải qua các lựa chọn ở đây và nghĩ rằng tôi sẽ đưa chúng vào cuối năm 2011.

Chính trực

Sau khi trải nghiệm cận tử khiến trang web vẫn còn liên kết với thông tin lỗi thời và đánh sập trang web demo, dự án này lại xuất hiện một lần nữa. Nhưng tài liệu không được tiếp tục, và rất nhiều bước trong hướng dẫn chỉ bị hỏng ; Tôi đã phải thay đổi các tham chiếu đến đá quý, xây dựng một số thứ ngoài ban nhạc và sau đó tôi vẫn không thể làm cho nó hoạt động .

Kiểm soát hành trình.rb

Rất đơn giản : bạn chỉ cần tải xuống, chạy một dòng lệnh để thêm dự án của bạn ( không có giao diện người dùng để làm như vậy) và chạy ứng dụng Rails. Nhưng cũng không có giao diện người dùng để chỉnh sửa dự án của bạn và cũng không có tích hợp thực sự với các tạo phẩm xây dựng ngoài việc hiển thị các liên kết đến chúng: bạn không có biểu đồ kiểm tra nào chạy, không có đường xu hướng, v.v. Tôi cũng phải điều chỉnh routes.rbtệp để có được mã liên kết làm việc ( resources :projectsdòng cần di chuyển bên dưới tất cả các tuyến không mặc định khác).

TeamCity

Điều này có vẻ tuyệt vời , nhưng thang lương dường như vượt quá. 3 đại lý miễn phí và sau đó khi bạn phụ thuộc, bạn cần bỏ ra hàng trăm đô la. Bản dựng cá nhân trông rất tuyệt, nhưng không có ngân sách .

Jenkins (nhũn Hudson )

Đây là một bản sao Java và nó được tải lên với hàng ngàn tùy chọn , vì vậy UI rất khó hiểu và đó là một việc vặt để thiết lập các dự án của bạn . Nhưng một khi bạn thiết lập nó, bạn sẽ có được rất nhiều plugin có thể kéo từ hầu hết mọi nơi, chạy hầu hết mọi thứ và báo cáo hầu hết mọi thứ. Trình cài đặt OS X trỏ Jenkins vào /Users/Shared/Jenkins/Homenhưng không tạo được thư mục chownđó hoặc thư mục đó daemon(được sử dụng theo mặc định và bạn nên đổi sang jenkinsngười dùng mới để bạn có thể thiết lập tích hợp GitHub).

Khác

Tôi đã không thực sự thử những thứ này, nhưng nghĩ rằng tôi muốn đề cập đến tại sao:

  • CI Joe muốn sở hữu repo GitHub nhiều hơn tôi muốn và những người tạo ra nó thậm chí không sử dụng nó; Họ đang ở trên Jenkins.
  • Cerberus có vẻ nhỏ gọn nhưng không có UI và không tự động xuất bản các tạo phẩm xây dựng nơi người khác có thể nhìn thấy chúng.
  • BigTuna dường như là một bản sao CruiseControl.rb mà không có sự hỗ trợ của cộng đồng (đã tối thiểu).
  • Tre trông thực sự gọn gàng nếu bạn sử dụng JIRA và BitBucket, nhưng chúng tôi không sử dụng. Nó triển khai nhưng chúng tôi đã có những thiết lập trong Capistrano.

Sự lựa chọn

Chúng tôi đã đi với Jenkins , nhưng tôi thực sự mong muốn một trong những giải pháp nhẹ hơn đã được thực hiện.


8
Thế còn chuyến đi?
Vanuan

3
Tôi làm việc trong một dự án nguồn đóng, vì vậy trừ khi tôi hiểu sai tài liệu (nói kém) của họ, Travis thực sự không phải là một lựa chọn cho chúng tôi (không có cách nào tôi cấp cho họ quyền truy cập vào dự án GitHub của chúng tôi). Nếu tôi đang viết một số đá quý, tôi sẽ nhảy lên Travis ngay lập tức, nhưng không phải cho các trang Rails thực tế.
TALlama

2
Chỉ để thu âm, Travis CI sẽ sớm phát hành phiên bản PRO (Trả phí và Riêng tư) đã có bản Beta. Đó là một chút về phía đắt tiền cho các dự án nhỏ ở mức 129 đô la và 249 đô la mỗi tháng nhưng đáng để xem xét: travis-ci.com
Joshua Pinter

41

Làm thế nào về CruiseControl.rb ?

Cùng một đám đông đã làm CruiseControl(thinkworks) và viết bằng Ruby. Rất dễ sử dụng Rakeđể tích hợp các công cụ khác của bạn và có thể sử dụng đá quý ruby-growl cho thông báo của bạn.


Tôi đã gặp sự cố khi chạy cái này trên windows ... không hoạt động như quảng cáo trong video 'nó không thể dễ dàng như vậy' trên trang web đối với tôi.
Gishu

Tôi sẽ không bị ảnh hưởng bởi việc xây dựng thương hiệu ý tưởng - đánh giá nó dựa trên giá trị của nó.
Dafydd Rees

dự án này mới chỉ được duy trì gần đây và chưa phát hành phiên bản mới kể từ năm 2009 ... nhưng nó hoạt động ..
Scott Schulthess

3
cruisecontrol là rất nguyên thủy và rất rất lỗi thời.
bragboy

1
Với các sự kiện liên quan đến bảo mật khác nhau cho đến đầu tháng 2 (2013), việc để CruiseControl.rb trong cấu hình mặc định của nó (phiên bản Gem, v.v.) là không thể chấp nhận được. Tôi đã có thể chạy nó trong Rails 3.0.20, nhưng 3.2.11+ rõ ràng sẽ tốn nhiều công sức hơn. Tại thời điểm này, tôi rất cởi mở với các lựa chọn thay thế, với một danh sách yêu cầu rất giống với Jim Fiorato.
Jeff Dickey

27

Bạn cũng có thể muốn xem xét Hudson . Nó được thiết kế để sử dụng với các dự án Java mặc dù có rất nhiều lựa chọn bổ trợ có sẵn bao gồm hỗ trợ cho Ruby và Rake. Nó có một giao diện web rất hữu ích và hỗ trợ thông báo email cũng như nhiều người khác (như twitter, hoặc đèn gấu khổng lồ).

Cộng đồng cũng rất tích cực và đã có một số bài viết về việc kết nối Hudson với Selenium mà bạn có thể hữu ích để thử nghiệm các ứng dụng Rails ở phía trình duyệt.

Một cái nhìn khác là Team City miễn phí cho các dự án và nhóm nhỏ (bao gồm cả thương mại). Tôi thực sự thích Team City và đã sử dụng nó trước đây cho các dự án khác nhưng hiện tại chúng tôi đang sử dụng Mercurial để kiểm soát nguồn và hỗ trợ của Team City hơi quá beta khi chúng tôi xem xét nó.

Tôi đã chuyển từ CruiseControl.net sang Team City và hoàn toàn sốc trước sự cải tiến. Tôi là một phần của Hudson mặc dù vì tính năng tương tự của nó và cộng đồng rất tích cực.


2
+1 cho TC. Nắm tay CI tốt nhất tôi từng thấy
Matt Briggs

4
Được cảnh báo rằng có một số nội dung chính trị sẽ xảy ra với Hudson do, uh, chúng tôi sẽ gọi đó là sự khác biệt sáng tạo, với Oracle. Phần lớn các nhà phát triển dường như đang di chuyển với ngã ba sẽ được gọi là Jenkins; Oracle có nhân viên và sẽ tiếp tục hỗ trợ và phát triển Hudson.
dondo

4
Điểm tốt dondo. Đối với những người quan tâm đến việc theo dõi sự phát triển liên tục của Hudson, bạn có thể xem Jenkins tại jenkins-ci.org
Julian

Và đây là so sánh hoạt động phát triển của Jenkins vs Hudson: ohloh.net/p/compare?project_0=Jenkins&project_1=Hudson
Vanuan

13

Circle là một dịch vụ CI tiên tiến cho Rails (và các ứng dụng web khác). Từ danh sách của bạn, nó hỗ trợ như sau:

  • Git và Test :: Tích hợp đơn vị ( cũng tích hợp RSpec, Cucumber, Jasmine, Konacha và hỗ trợ các lệnh kiểm tra bổ sung tùy ý )
  • Tích hợp với Rake và / hoặc Capistrano ( sử dụng Rake để chạy các lệnh và thiết lập DB, hỗ trợ triển khai liên tục bằng Capistrano hoặc Heroku hoặc bất cứ thứ gì thực sự )
  • Giao diện web hiển thị trạng thái của bản dựng
  • Thông báo qua email về các bản dựng không thành công.
  • Thông báo trên màn hình ( thông qua CCMothy / CCTray )
  • API REST để xây dựng trạng thái
  • Khung plugin để chạy các công cụ phân tích mã khác và kết quả báo cáo trong giao diện người dùng ( chúng tôi có thể chạy các lệnh tùy ý và hỗ trợ bao gồm trạng thái của chúng như một phần của bản dựng )

Joel và tôi đã dành một lúc trò chuyện về điều này trên podcast Stackoverflow - hãy xem thử !


(chỉnh sửa) Tuyên bố miễn trừ trách nhiệm: Paul Biggar thành lập Circle khi ông tuyên bố trong hồ sơ Stackoverflow của mình


8

Semaphore là một ứng dụng CI được lưu trữ mới cho các ứng dụng Ruby và Rails. Nó tích hợp với GitHub, không yêu cầu thiết lập và có giao diện người dùng đơn giản.


Chúng tôi đang sử dụng Semaphore như một phần của bộ CI và nó hoạt động rất tuyệt vời. Bạn có thể thấy cách nó được tích hợp với các phần mềm khác như Jasmine và HipChat trong một trong những bài đăng trên blog của chúng tôi . Các op cũng đề cập đến việc sử dụng Capistrano như một công cụ triển khai. Chúng tôi đã sử dụng nó trong quá khứ, nhưng nó quá chậm đối với chúng tôi nên chúng tôi đã chuyển sang Mina .
denis.arunovic

8

Cập nhật tháng 2-2015

Mật mã

Không có sự phát triển trên Drone.io nên tôi đã chuyển sang Codeship và tôi hoàn toàn thích nó. Nó tích cực phát triển và cải tiến, có thiết kế tuyệt vời và rất nhanh. Ngoài ra, đối với tầng dưới cùng, nó thực sự miễn phí (lên tới 100 bản dựng mỗi tháng) nên cuối cùng nó rẻ hơn Drone.io.

Câu trả lời gốc

Drone.io

Tôi chỉ thiết lập ứng dụng Ruby on Rails chính của chúng tôi với http://drone.io/ . Là một miếng bánh và nó có một giao diện tuyệt vời. Tôi muốn nói rằng đáng để kiểm tra nếu bạn đang tìm kiếm một giải pháp lưu trữ đơn giản .


7

Kiểm tra Tddium . Tddium hỗ trợ tích hợp liên tục, triển khai và thử nghiệm tương tác các ứng dụng Ruby. Nó cung cấp một môi trường được quản lý với sự hỗ trợ cho Selenium, Headless Webkit và Solr. Nó lưu trữ các phiên bản Postgres, MySQL, Mongo và Redis trực tiếp. Và nó tự động song song các bộ thử nghiệm lớn.


5
Jay, bạn có thể muốn tiết lộ sự liên kết của bạn với các phòng thí nghiệm tddium và solano. Theo Câu hỏi thường gặp : "bạn phải tiết lộ liên kết của mình trong câu trả lời của mình"
tgf

7

Travis CI đã trở nên phổ biến trong thế giới ruby: http://travis-ci.org/


Travis CI tốt cho các dự án nguồn mở nhưng không thực sự cho các dự án nguồn đóng. Jenkins có thể bao gồm cả hai trường hợp :-)
Gabor Garami

1
Nhưng không phải là mở nguồn? github.com/travis-ci/travis-ci Bạn không thể thiết lập ví dụ du lịch riêng tư như bạn làm với jenkins?
Vanuan

Bạn có thể có thể, nhưng trong Readme, họ khuyên bạn nên chống lại nó và đề cập rằng nó chưa phù hợp với việc lưu trữ riêng tư.
Andrew

Bây giờ thì ổn cho các dự án đã đóng
aehlke


6

Giống như một số người, tôi là một fan hâm mộ lớn của cruisecontrol.rb, nhưng gần đây đã chuyển các dự án của tôi sang Integrity .

Nhẹ và dễ cài đặt (giống như cc.rb), nhưng với giao diện đẹp hơn.


5
Tôi chỉ cố gắng thiết lập tính toàn vẹn và đó là một mớ hỗn độn.
lawrence

5

BigTuna - được viết bằng Ruby, sử dụng Rails và sử dụng chính nó làm CI.


3
Xin lưu ý rằng liên kết appelier.com cho BigTuna là một liên kết chết với một miền hết hạn. Dự án có thể được tìm thấy trên Github .
Jeff Dickey

5

Bạn có thể cung cấp cho Codeship một vòng quay và xem nó có hiệu quả với bạn không (tôi là một trong những người sáng lập)

Tích hợp và triển khai liên tục dựa trên đám mây (có hỗ trợ Heroku đặc biệt)

Bốn mục đầu tiên của bạn đã được triển khai và hoạt động tốt cho một số công ty

  • Rõ ràng Git / SVN và Test :: Tích hợp đơn vị
  • Tích hợp với Rake và / hoặc Capistrano
  • Giao diện web hiển thị trạng thái của bản dựng
  • Thông báo qua email về các bản dựng không thành công.

Chúng tôi cũng đang làm việc trên các tính năng đó:

  • Thông báo trên màn hình (có khả năng thông qua Growl)
  • API REST để xây dựng trạng thái
  • Khung plugin để chạy các công cụ phân tích mã khác và báo cáo kết quả trong giao diện người dùng



3

Tự làm đi. Viết tập lệnh bash để chạy thử nghiệm và sau đó chạy quy trình triển khai nếu thử nghiệm vượt qua. Cần thông báo? Bắn cho mình một email văn bản về thành công / thất bại. Cần lịch trình? Công việc lương thấp. Đây là $ 0 / tháng., Và bạn sẽ có manh mối về những gì bạn đang làm. Tôi không thấy việc trả cho ai đó $ 40 / tháng sẽ giúp tôi làm điều này hiệu quả hơn bằng mọi cách.

Ví dụ, hãy xem xét việc triển khai của tôi không thành công do đường ống tài sản được định cấu hình không chính xác (tài sản không được biên dịch trước). Điều này sẽ không bị bắt với đơn vị, chức năng, tích hợp, hồi quy hoặc bất kỳ thử nghiệm nào khác. Lỗi này sẽ không được CI bắt. Lượng thời gian tôi dành để viết một tập lệnh bash có thể ít hơn thời gian tôi dành để thiết lập môi trường CI và tôi sẽ tiết kiệm cho mình 40 đô la / tháng.

Juuuuuust ném hai đồng xu của tôi vào cuộc thảo luận; )


1

Chạy Code Run có thể là những gì bạn cần.

Chỉnh sửa: liên kết đã bị xóa vì nó không còn đề cập đến trang web Run Code Run trước đây.


1
Bây giờ sắp bị đóng cửa. :(
Andrew Grimm

1

Và sau đó, có CI Joe :

Nó giống như một chiếc xe bán tải cũ rỉ sét: nó có thể có mùi và thô, nhưng nó hoàn thành công việc.

Chúng tôi sử dụng nó hàng ngày.


1

Tôi chỉ thích CI joe, tôi đã có vấn đề với tất cả những người còn lại, CI Joe là người tối thiểu tuyệt đối để hoàn thành công việc, siêu nhanh nhẹn và đáng tin cậy. Nguồn hudson thật kinh khủng và UI không hấp dẫn tôi.


0

Tôi vừa xuất bản một Ứng dụng tích hợp liên tục rất đơn giản cho RubyOnRails + SVN / GIT. Có lẽ bạn nên thử xem:

http://github.com/felipegiotto/Inotegration/tree/master

Tôi đã lấy một số ý tưởng về các công cụ đo lường và kiểm tra và sau khi thử một số công cụ CI và không thích ai trong số chúng, tôi quyết định tự xây dựng mà không cần phải xây dựng các tệp XML lớn hoặc bất kỳ cấu hình nào khác. Chỉ là cách Rails được thực hiện.

Nếu bạn thích, xin vui lòng gửi cho tôi một số thông tin phản hồi ..

Trân trọng,

Felipe Giotto.


0

Chạy CI sau mỗi lần cam kết có vẻ khá tốn kém nếu bạn đăng ký triết lý "cam kết thường xuyên". Làm thế nào về việc chạy một cronjob đơn giản cứ sau vài giờ và gửi email kết quả đến danh sách gửi thư của nhà phát triển?


Hoặc, làm thế nào về việc chỉ thiết lập máy chủ CI của bạn để chỉ thăm dò các thay đổi một lần mỗi giờ? Hầu hết các ứng dụng CI đều hỗ trợ cài đặt này.
jerhinesmith

2
Với git bạn có thể cam kết thường xuyên nhưng hiếm khi đẩy.
Vanuan

0

Tôi chỉ cấu hình một Hudson / Jenkins cho nó. Viên ngọc ci numporter có thể giúp định dạng đầu ra JUnit, những gì được Hudson mong đợi và Hudson có plugin Rails, vì vậy tôi có thể thấy phạm vi bảo hiểm của RCov, báo cáo thử nghiệm, số liệu thống kê đường ray và hơn thế nữa.


Bạn có thể so sánh thiết lập của bạn với các lựa chọn thay thế khác?
Andrei

Như tôi đang sử dụng Rails 2.3.x cho các dự án sản xuất của mình, hiện tại thì không, bởi vì hầu hết các phương án khác đều yêu cầu Rails 3.x. Tuy nhiên, khi tôi có thể, tôi sẽ kiểm tra nó và công bố kinh nghiệm của mình.
Gabor Garami

Tôi cũng đã thử Jenkins với Rails 3.x và nó hoạt động rất tốt. Tôi cũng đã thử một số giải pháp khác (ví dụ như IntegrityApp), nhưng vì tôi sử dụng Jenkins để thử nghiệm các dự án khác nên nó trở thành giải pháp cuối cùng cho nó. Điều đó không có nghĩa là IntegrityApp hoặc những thứ khác là xấu, IntegrityApp là những thứ rất tốt, tuy nhiên tôi thích Jenkins hơn một chút.
Gabor Garami

0

Bạn cũng nên xem xét việc nhìn vào CloudMunch. Điều này cung cấp một nền tảng polyglot để cho phép bạn có các ngôn ngữ khác nhau như một phần của cơ sở mã của bạn, với bộ siêu dữ liệu xây dựng phong phú.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.