programing

Ruby on Rails를 위한 지속적인 통합?

newstyles 2023. 6. 3. 08:18

Ruby on Rails를 위한 지속적인 통합?

저는 Ruby on Rails를 위한 Continuous Integration 솔루션을 찾아다녔지만 결과에 만족하지 못했습니다.저는 크루즈 컨트롤을 사용하는 닷넷 상점에서 왔습니다.NET은 사용 편의성과 풍부한 상태/보고 기능으로 인해 매우 손상되었습니다.

이상적으로 제가 찾고 있는 것은 다음과 같습니다.

  • 명백한 Git/SVN 및 테스트:단위 통합

  • 레이크 및/또는 카피스트라노와의 통합

  • 빌드 상태를 보여주는 웹 인터페이스

  • 실패한 빌드에 대한 전자 메일 알림입니다.

  • 데스크톱 알림(잠재적으로 Growl을 통해)

  • 빌드 상태에 대한 REST API

  • 다른 코드 분석 도구를 실행하고 UI에서 결과를 보고하기 위한 플러그인 프레임워크

저는 여기서 옵션을 검토하고 2011년 말에 이 옵션을 롤업할 것이라고 생각했습니다.

무결성

아직도 링크된 웹사이트를 구시대적인 정보로 남겨놓고 데모 사이트를 다운시킨 죽음에 가까운 경험 끝에, 이 프로젝트는 다시 활기를 띠고 있습니다.하지만 문서는 진행되지 않았고, 튜토리얼의 많은 단계들이 그냥 깨졌습니다. 저는 보석에 대한 참조를 변경해야 했고, 대역 외로 무언가를 구축해야 했지만, 여전히 작동하지 않았습니다.

크루즈 컨트롤.rb

매우 간단합니다. 다운로드한 후 명령줄을 실행하여 프로젝트를 추가하고 레일즈 앱을 실행합니다.그러나 프로젝트를 편집하기 위한 UI도 없으며, 실행 중인 테스트 그래프나 추세선 등의 링크를 표시하는 것 에 빌드 아티팩트와의 실질적인 통합도 없습니다.저는 또한 조정해야 했습니다.routes.rb동작하는 .resources :projects회선은 기본값이 아닌 다른 모든 경로 아래로 이동해야 합니다.

팀 시티

이것은 훌륭해 보이지만, 급여 체계는 엉망인 것 같습니다. 3명의 요원이 무료이고 의존적일 때는 수백 달러를 나눠줘야 합니다.Personal Builds는 보기에는 좋지만 예산없습니다.

젠킨스 (결혼 전 성씨 허드슨)

이것은 Java의 견고한 구성 요소로, 수많은 옵션으로 가득 차 있기 때문에 UI가 혼란스럽고 프로젝트를 설정하는 것이 번거롭습니다.그러나 일단 설정하면 대부분의 장소에서 풀링하고, 대부분의 모든 것을 실행하고, 대부분의 모든 것을 보고할 수 있는 수많은 플러그인을 얻을 수 있습니다.OS X 설치 관리자가 Jenkins를 가리킵니다./Users/Shared/Jenkins/Home 해당 또는 "" "" "" "" "를 .chowndaemon되며, (으)로 .jenkinsGitHub 통합을 설정할 수 있습니다.

다른이들

저는 이것들을 실제로 시도하지는 않았지만, 그 이유를 언급하려고 생각했습니다.

  • CI Joe는 GitHub repo를 제가 원하는 것보다 더 많이 소유하고 싶어하고, GitHub repo의 제작자들은 심지어 그것을 사용하지도 않습니다. 그들은 Jenkins에 있습니다.
  • Cerberus는 깔끔하게 작아 보이지만 UI가 없고 빌드 아티팩트를 다른 사람이 볼 수 있는 곳에 자동으로 게시하지 않습니다.
  • BigTuna는 (이미 최소한의) 커뮤니티 지원이 없는 CruiseControl.rb 클론인 것 같습니다.
  • 대나무는 JIRA와 BitBucket을 사용하면 정말 깔끔해 보이지만, 우리는 둘 다 사용하지 않습니다.배치는 되지만 이미 카피스트라노에 설치되어 있습니다.

더 초이스

젠킨스와 함께 갔지만, 저는 정말 더 가벼운 해결책 중 하나가 효과가 있었으면 좋겠습니다.

크루즈 컨트롤.rb는 어떻습니까?

한 무리의 사람들.CruiseControl (사상가) 그리습니다쓰생으로 .Ruby매우 사용하기 쉽습니다.Rake사용자의 다른 도구를 통합하고 알림에 루비가 으르렁거리는 보석을 사용할 수 있습니다.

허드슨도 고려해 볼 수 있습니다.Ruby 및 Rake 지원을 포함하여 다양한 플러그인을 사용할 수 있지만 Java 프로젝트에서 사용할 수 있도록 설계되었습니다.매우 유용한 웹 인터페이스를 갖추고 있으며 이메일 알림은 물론 트위터나 자이언트 베어 램프와 같은 많은 다른 알림도 지원합니다.

커뮤니티도 매우 활성화되어 있으며 허드슨을 셀레늄으로 연결하는 것에 대한 몇 가지 기사가 있습니다. 이 기사는 브라우저 측에서 Rails 애플리케이션을 테스트하는 데 도움이 될 수 있습니다.

팀 시티는 소규모 프로젝트 및 팀(상업용 포함)에 무료로 제공됩니다.저는 팀시티를 정말 좋아하고 이전에도 다른 프로젝트에 사용한 적이 있지만, 현재 소스 제어를 위해 머큐리얼을 사용하고 있으며 팀시티의 지원은 고려할 때 너무 베타적이었습니다.

저는 CruiseControl.net 에서 Team City로 전환했고 개선에 완전히 충격을 받았습니다.저는 허드슨이 비슷한 특징들과 매우 활발한 커뮤니티 때문에 편합니다.

Circle은 Rails(및 기타 웹 앱)용 고급 CI 서비스입니다.목록에서 다음을 지원합니다.

  • Git 및 테스트:장치 통합(RSpec, Oi, Jasmine, Konacha 통합 임의의 추가 테스트 명령 지원)
  • Rake/또는 Capistrano와의 통합(Rake를 사용하여 명령 실행 및 DB 설정, Capistrano 또는 Heroku를 사용한 지속적인 배포 지원 등)
  • 빌드 상태를 보여주는 웹 인터페이스
  • 실패한 빌드에 대한 전자 메일 알림입니다.
  • 데스크톱 알림(CC 메뉴/CCTVray를 통해)
  • 빌드 상태에 대한 REST API
  • UI에서 다른 코드 분석 도구를 실행하고 결과를 보고하기 위한 플러그인 프레임워크(빌드의 일부로 상태를 포함하여 임의 명령과 지원을 실행할 수 있음)

조엘과 저는 스택 오버플로 팟캐스트에서 이것에 대해 잠시 이야기를 나누었습니다 - 확인해 보세요!


(편집) 면책 사항: 폴 빅가는 스택 오버플로 프로필에 명시된 대로 서클을 설립했습니다.

Semaphore는 Ruby 및 Rails 앱을 위한 새로운 호스팅된 CI 앱입니다.GitHub과 통합되며, 설정이 필요 없으며 간단한 UI를 가지고 있습니다.

2015년 2월 업데이트

코드쉽

Drone.io 에서 개발이 부족해서 Codeship으로 전환하여 충분히 즐기고 있습니다.그것은 적극적으로 개발되고 개선되었으며, 훌륭한 디자인을 가지고 있고 매우 빠릅니다.또한 하위 계층의 경우 실제로 무료이므로(월 최대 100건의 빌드) Drone.io 보다 저렴합니다.

원답

Drone.io

저는 방금 http://drone.io/ 에서 메인 Ruby on Rails 애플리케이션을 설정했습니다.식은 죽 먹기였고 훌륭한 인터페이스를 가지고 있습니다.간단한 호스팅 솔루션을 찾고 있다면 확인해 볼 가치가 있다고 생각합니다.

Tddium을 확인해 보세요.Tddium은 Ruby 애플리케이션의 지속적인 통합, 배포 및 대화형 테스트를 지원합니다.Selenium, Headless Webkit 및 Solr을 지원하는 관리 환경을 제공합니다.라이브 Postgres, MySQL, Mongo 및 Redis 인스턴스를 호스팅합니다.또한 대규모 테스트 제품군을 자동으로 병렬화합니다.

트래비스 CI는 루비 세계에서 인기를 얻었습니다. http://travis-ci.org/

크루즈 컨트롤. 그렇다면 크루즈 컨트롤이 완벽한 일치일 것입니다.

http://cruisecontrolrb.thoughtworks.com/

많은 사람들처럼 저는 cruisecontrol.rb의 열렬한 팬이었지만 최근에는 프로젝트를 Integrity로 전환했습니다.

가볍고 설정하기 쉬우며(cc.rb와 비슷하지만) 인터페이스가 더 좋습니다.

Ruby로 작성된 BigTuna는 Rails를 사용하고 자신을 CI로 사용합니다.

Codeship에게 한 번 돌려보고 그것이 당신에게 효과가 있는지 확인할 수 있습니다(저는 설립자 중 한 명입니다).

클라우드 기반 지속적인 통합 및 구축(특별 Heroku 지원 포함)

처음 4개 항목은 이미 구현되었으며 여러 회사에서 잘 작동합니다.

  • 명백한 Git/SVN 및 테스트:단위 통합
  • 레이크 및/또는 카피스트라노와의 통합
  • 빌드 상태를 보여주는 웹 인터페이스
  • 실패한 빌드에 대한 전자 메일 알림입니다.

또한 다음과 같은 기능에 대해서도 연구하고 있습니다.

  • 데스크톱 알림(잠재적으로 Growl을 통해)
  • 빌드 상태에 대한 REST API
  • 다른 코드 분석 도구를 실행하고 UI에서 결과를 보고하기 위한 플러그인 프레임워크

아무도 아틀라스의 대나무에 대해 언급하지 않았습니다.대나무를 사용하는 Ruby on Rails CI에 대한 멋진 튜토리얼 같은 기사가 있습니다.

http://blogs.atlassian.com/news/2009/05/bamboo_customer_8.html

무결성은 훌륭한 해결책인 것 같습니다.herku에 배포하는 것은 간단합니다. http://elabs.se/blog/7-continuous-integration-testing-for-ruby-on-rails-with-integrity http://integrityapp.com

직접 하시오.bash 스크립트를 작성하여 테스트를 실행한 다음 테스트에 합격한 경우 배포 절차를 실행합니다.알림이 필요합니까?성공/실패 시 일반 텍스트 전자 메일을 작성합니다.스케줄러가 필요합니까?크론잡.이것은 $0/mo이며, 당신은 당신이 무엇을 하고 있는지에 대한 단서를 얻을 수 있을 것입니다.저는 모 당 40달러를 지불하는 것이 제가 이 일을 더 효율적으로 하는 데 어떻게 도움이 될지 모르겠습니다.

예를 들어, 잘못 구성된 자산 파이프라인(자산 사전 컴파일 실패)으로 인해 구축이 실패하고 있습니다.이것은 단위, 기능, 통합, 회귀 또는 기타 테스트에서 발견되지 않습니다.이 오류는 CI에서 감지되지 않습니다.bash 스크립트를 작성하는 데 소요되는 시간은 CI 환경을 설정하는 데 소요되는 시간보다 적을 수 있으므로 비용을 40달러/mo 절감할 수 있습니다.

Juuuuuu는 단지 내 두 페니를 토론에 던졌습니다 ; )

코드 실행 실행이 필요할 수 있습니다.

편집: 이전 실행 코드 실행 사이트를 더 이상 참조하지 않으므로 링크가 제거되었습니다.

다음은 CI Joe입니다.

그것은 오래된 녹슨 픽업 트럭과 같습니다. 냄새가 나고 역겹지만, 일을 해낼 수 있습니다.

우리는 그것을 일상적으로 사용합니다.

저는 CI Joe만 좋아하고, 다른 모든 것에 문제가 있었습니다. CI Joe는 업무를 수행하기 위한 절대적인 최소치이며, 매우 민첩하고 신뢰할 수 있습니다.허드슨 소스는 끔찍하고 UI는 나에게 매력적이지 않습니다.

방금 RubyOnRails + SVN/GIT를 위한 매우 간단한 Continuous Integration App을 발표했습니다.한 번 해보셔야 할 수 있어요.

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

저는 측정 및 테스트 도구에 대한 아이디어를 얻었고, CI 도구를 사용해 본 후 좋아하는 사람이 아무도 없었기 때문에 큰 XML 파일이나 다른 구성을 구축할 필요 없이 저만의 것을 구축하기로 결정했습니다.레일즈가 만들어졌던 방식 그대로.

괜찮으시다면 피드백을 보내주시기 바랍니다.

안부 전합니다,

펠리페 지오토.

커밋 후 매번 CI를 실행하는 것은 "커밋 자주(commit feature)" 철학에 가입한 경우 다소 비용이 많이 듭니다.몇 시간마다 간단한 cronjob을 실행하여 결과를 dev 메일링 리스트에 이메일로 보내는 것은 어떻습니까?

방금 허드슨/젠킨스를 구성했습니다.ci_reporter gem은 허드슨이 예상한 대로 Junit 출력을 포맷하는 데 도움이 될 수 있으며 허드슨은 레일즈 플러그인을 사용하여 rcov 적용 범위, 테스트 보고서, 레일즈 통계 등을 확인할 수 있습니다.

CloudMunch에 대해서도 고려해야 합니다.이는 다양한 빌드 메타데이터 세트를 사용하여 코드베이스의 일부로 다양한 언어를 사용할 수 있는 다중 언어 플랫폼을 제공합니다.

언급URL : https://stackoverflow.com/questions/220668/continuous-integration-for-ruby-on-rails