2011-10-18 25 views
6

Tôi đang cố gắng tích hợp clojure vào một bản dựng liên tục. Bất kỳ đề xuất cho một hệ thống clojure kích hoạt như Jenkins, đó là khả năng làm công việc cho tôi thông qua một plugin? Tôi đã nhìn thấy một số hướng dẫn quảng cáo, nhưng không chắc chắn nếu có một phương pháp được chấp nhận rõ ràng. Tôi nhận thấy rằng clojure được xây dựng bằng cách sử dụng CI, và vì nó là một phương ngữ java, tôi giả định có lẽ nếu không có các tùy chọn như vậy tồn tại, thì có lẽ tôi có thể bọc một clojure build như một nhiệm vụ maven/ant ....Có bất kỳ tùy chọn tích hợp liên tục Clojure mạnh mẽ nào không?

Trả lời

2

Bạn muốn làm tất cả các công việc trong một trong hai kiến ​​/ maven/gradle vv bởi vì bạn muốn có thể dễ dàng xây dựng dự án của bạn tại địa phương cũng như trên một hệ thống CI. Một khi bạn có thể xây dựng cục bộ với một framework xây dựng nổi tiếng, bạn chỉ cần gọi cùng một nhiệm vụ/mục tiêu trong Jenkins và siêu dễ dàng của nó tại thời điểm đó, vì Jenkins tích hợp độc đáo với hầu hết các khung công tác xây dựng như ant/maven/gradle.

+0

Vì vậy .... Leiningan có phải là tùy chọn để xây dựng trực tiếp không? Đó là bạn đề nghị tôi nên bọc Leiningan trong maven/ant/gradle – jayunit100

+1

Ant, Maven, Gradle, và Leiningen là các đồng nghiệp, và sau này có thể được (và) được sử dụng độc lập với những người khác mọi lúc.Cho dù đáp ứng yêu cầu của bạn có phải là vấn đề riêng biệt hay không (ví dụ: leiningen không có khái niệm riêng biệt về bản phát hành như Maven, nhưng cũng không có kiến ​​hay cao điểm). Trong mọi trường hợp, mọi người gọi ra các công cụ xây dựng khác từ chiếc xe chính của họ mọi lúc, do đó các nhiệm vụ maven cho kiến, plugin antaven maven, vv Leiningen thực sự được xây dựng trên các nhiệm vụ kiến ​​quạ, vì vậy có nhiều cấp độ rùa. :-) – cemerick

9

Trong khi Jenkins/Hudson được sử dụng rộng rãi nhất cho các dự án Clojure, bạn có thể sử dụng bất kỳ hệ thống CI nào bạn thích.

Bản thân Clojure, tất cả các dự án contrib, và các dự án nguồn mở khác nhau đều sử dụng Maven để xây dựng các bản dựng của chúng và do đó có thể được đưa vào Hudson/Jenkins một cách tương đối dễ dàng. clojure-maven-plugin là những gì bạn đang tìm kiếm để phản ánh một thiết lập như vậy.

Bạn cũng có thể sử dụng Leiningen với Hudson/Jenkins (hoặc thực sự bất kỳ hệ thống CI nào khác) chỉ bằng cách bắn phá lein nếu cần. Có một cách khá thông minh để thiết lập điều này thông qua chính Jenkins here.

Cuối cùng, nếu bạn cần kiến, bạn có thể sử dụng clojure-ant-tasks.

+3

Một phiếu bầu khác cho Jenkins; Tôi đã thành công khi sử dụng nó với Leiningen bằng cách sử dụng không có gì ngoài một lệnh shell cơ bản. Liên kết ở trên là một cách để làm điều đó, nhưng không có gì sai khi chỉ cần cài đặt leiningen qua apt chứ không phải là một công việc CI riêng biệt. – technomancy

+2

@Cho, liên kết đến "cách thông minh" bị hỏng –

+0

Có lý do gì khiến bạn không đề xuất palletops nữa không? (Tôi đã tìm thấy liên kết này: http://cemerick.com/2010/11/02/continuous-deployment-of-clojure-web-applications/) – nha

1

Như một điểm dữ liệu, tôi sử dụng:

  • Maven để xây dựng các dự án có nhiều thứ tiếng Clojure + Java
  • GitHub cho SCM
  • Travis CI cho hội nhập liên tục dựa trên các GitHub nguồn.

Điểm quan trọng là bằng cách tạo công việc xây dựng với Maven, bạn có thể móc vào hệ sinh thái công cụ CI chuẩn Java khá dễ dàng. Theo như Travis CI là có liên quan, nó là chỉ là một dự án Java - Clojure được coi là một thư viện Java bổ sung có hiệu quả từ quan điểm của quá trình xây dựng. Đây là travis.yml config:

language: java 
jdk: 
    - oraclejdk7 
    - openjdk7 
    - openjdk6 

Dưới đây là một ví dụ dự án mã nguồn mở sử dụng phương pháp này:

0

Lambda CD có lẽ là những gì bạn muốn. Nó cho phép bạn viết các bản xây dựng và các đường ống phân phối trong clojure. Nó tương đối mới và dường như trở nên phổ biến hơn. http://www.lambda.cd/

Các vấn đề liên quan