我正在尝试将Clojure集成到一个持续构建中。有没有像Jenkins这样支持Clojure的系统,可以通过插件帮我完成工作的建议?我看到一些临时教程,但不确定是否存在明确的方法。我注意到Clojure本身是使用CI构建的,由于它是Java方言,所以如果没有这样的选项,我认为也许可以将Clojure构建包装为Maven / Ant任务...
我正在尝试将Clojure集成到一个持续构建中。有没有像Jenkins这样支持Clojure的系统,可以通过插件帮我完成工作的建议?我看到一些临时教程,但不确定是否存在明确的方法。我注意到Clojure本身是使用CI构建的,由于它是Java方言,所以如果没有这样的选项,我认为也许可以将Clojure构建包装为Maven / Ant任务...
虽然Jenkins/Hudson是Clojure项目中最广泛使用的,但您可以使用任何喜欢的CI系统。
Clojure本身、所有的contrib项目和各种开源项目都使用Maven来驱动其构建,因此可以相对容易地将它们升级到Hudson/Jenkins。clojure-maven-plugin就是你需要的,以模拟这样的设置。
您也可以使用Leiningen与Hudson/Jenkins(或任何其他CI系统)只需根据需要调用lein
即可。有一种聪明的方法是通过Jenkins本身 here 进行设置。
最后,如果您需要ant,可以使用clojure-ant-tasks。
您希望使用ant/maven/gradle等构建框架完成所有工作,因为您想能够轻松地在本地以及CI系统中构建项目。一旦您可以使用众所周知的构建框架在本地构建,您只需在Jenkins中调用相同的任务/目标,此时非常容易,因为Jenkins与大多数构建框架(如ant/maven/gradle)集成得很好。
作为一个数据点,我使用:
重要的是,通过让Maven工作,您可以很容易地连接到标准的基于Java的CI工具生态系统。就Travis CI而言,它只是另一个Java项目 - 从构建过程的角度来看,Clojure实际上被视为额外的Java库。这是travis.yml
配置:
language: java
jdk:
- oraclejdk7
- openjdk7
- openjdk6
这里有一个使用这种方法的开源项目示例: