有没有坚实可靠的Clojure持续集成选项?

5

我正在尝试将Clojure集成到一个持续构建中。有没有像Jenkins这样支持Clojure的系统,可以通过插件帮我完成工作的建议?我看到一些临时教程,但不确定是否存在明确的方法。我注意到Clojure本身是使用CI构建的,由于它是Java方言,所以如果没有这样的选项,我认为也许可以将Clojure构建包装为Maven / Ant任务...

4个回答

8

虽然Jenkins/Hudson是Clojure项目中最广泛使用的,但您可以使用任何喜欢的CI系统。

Clojure本身、所有的contrib项目和各种开源项目都使用Maven来驱动其构建,因此可以相对容易地将它们升级到Hudson/Jenkins。clojure-maven-plugin就是你需要的,以模拟这样的设置。

您也可以使用Leiningen与Hudson/Jenkins(或任何其他CI系统)只需根据需要调用lein即可。有一种聪明的方法是通过Jenkins本身 here 进行设置。

最后,如果您需要ant,可以使用clojure-ant-tasks


3
再次投票支持使用Jenkins;我使用基本的shell命令,在Leiningen中取得了巨大的成功。上面的链接是其中一种方法,但是直接通过apt安装Leiningen而不是单独的CI作业也没有问题。 - user61051
2
@Chas,“the somewhat clever way”的链接失效了。 - John Wang
你不再推荐PalletOps的原因是什么?(我找到了这个链接:http://cemerick.com/2010/11/02/continuous-deployment-of-clojure-web-applications/) - nha

2

您希望使用ant/maven/gradle等构建框架完成所有工作,因为您想能够轻松地在本地以及CI系统中构建项目。一旦您可以使用众所周知的构建框架在本地构建,您只需在Jenkins中调用相同的任务/目标,此时非常容易,因为Jenkins与大多数构建框架(如ant/maven/gradle)集成得很好。


那么......Leiningan是直接构建的选项吗?还是您建议我在maven/ant/gradle中包装Leiningan? - jayunit100
1
Ant、Maven、Gradle和Leiningen是同级的,后者可以(并且经常)独立于其他工具使用。它是否符合您的要求是另一回事(例如,Leiningen没有像Maven那样明确的发布概念,但Ant或Gradle也没有)。无论如何,人们经常从主要工具调用其他构建工具,因此有ant的maven任务、maven antrun插件等。实际上,Leiningen是建立在maven ant任务之上的,所以有多层龟壳。 :-) - cemerick

1

作为一个数据点,我使用:

  • Maven 来构建多语言的Clojure+Java项目
  • GitHub 用于源代码管理
  • Travis CI 基于GitHub源码进行持续集成。

重要的是,通过让Maven工作,您可以很容易地连接到标准的基于Java的CI工具生态系统。就Travis CI而言,它只是另一个Java项目 - 从构建过程的角度来看,Clojure实际上被视为额外的Java库。这是travis.yml配置:

language: java
jdk:
  - oraclejdk7
  - openjdk7
  - openjdk6

这里有一个使用这种方法的开源项目示例:


0

你可能需要Lambda CD。它允许你在Clojure中编写构建和交付流水线。它相对较新,似乎越来越受欢迎。 http://www.lambda.cd/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接