2011-10-18 12 views
6

Estoy tratando de integrar clojure en una construcción continua. ¿Alguna sugerencia para un sistema habilitado como Jenkins, que sea capaz de hacer el trabajo por mí a través de un plugin? He visto algunos tutoriales ad hoc, pero no estoy seguro de si hay un método claro aceptado. Noto que clojure en sí está construido usando CI, y dado que es un dialecto de Java, supongo que tal vez si no existen tales opciones, entonces tal vez podría ajustar una construcción clojure como una tarea maven/ant ....¿Existen opciones sólidas de integración continua de Clojure?

Respuesta

2

Desea hacer todo el trabajo en ant/maven/gradle, etc., porque quiere poder construir fácilmente su proyecto localmente, así como en un sistema de CI. Una vez que puede construir localmente con un marco de compilación bien conocido, simplemente llama a las mismas tareas/objetivos en Jenkins y es muy fácil en ese punto, ya que Jenkins se integra muy bien con la mayoría de los frameworks de compilación como ant/maven/gradle.

+0

Entonces ... ¿Leiningan es una opción para construir directamente? Está sugiriendo que debo envolver Leiningan en maven/ant/gradle – jayunit100

+1

Ant, Maven, Gradle y Leiningen son iguales, y este último puede ser (y es) utilizado independientemente de los demás todo el tiempo.Si cumple con sus requisitos es un asunto aparte (por ejemplo, leiningen no tiene una noción distinta de una versión como Maven, pero tampoco lo hace ant o gradle). En cualquier caso, las personas llaman a otras herramientas de construcción desde su vehículo principal todo el tiempo, por lo tanto, las tareas de maven para hormiga, el plugin de maven antrun, etc. Leiningen se construye sobre las tareas de los expertos, por lo que hay múltiples niveles de tortugas :-) – cemerick

9

Mientras que Jenkins/Hudson es el más utilizado para proyectos de Clojure, puede usar cualquier sistema de CI que desee.

Clojure, todos los proyectos contrib y varios proyectos de código abierto, todos usan Maven para impulsar sus compilaciones y, por lo tanto, pueden ser elevados a Hudson/Jenkins con relativa facilidad. clojure-maven-plugin es lo que está buscando para reflejar tal configuración.

También puede usar Leiningen con Hudson/Jenkins (o en realidad cualquier otro sistema de CI) simplemente desgravando a lein según sea necesario. Hay una forma algo ingeniosa de configurar esto a través de Jenkins en sí here.

Finalmente, si necesita una hormiga, puede usar clojure-ant-tasks.

+3

Otro voto para Jenkins; He tenido un gran éxito utilizándolo con Leiningen usando nada más que un comando básico de shell. El enlace de arriba es una forma de hacerlo, pero no hay nada de malo en simplemente instalar leiningen a través de apt en lugar de un trabajo de CI separado. – technomancy

+2

@Chas, el enlace a "la forma algo inteligente" está roto –

+0

¿Hay alguna razón por la que ya no recomiendes a los palletops? (He encontrado este enlace: http://cemerick.com/2010/11/02/continuous-deployment-of-clojure-web-applications/) – nha

1

Como un punto de datos, utilizo:

  • Maven para construir políglota Clojure + Java proyecta
  • GitHub de SMC
  • Travis CI para la integración continua con sede fuera del GitHub fuente.

Lo importante es que al hacer que la compilación funcione con Maven, puede conectarse fácilmente al ecosistema de herramientas de CI estándar basado en Java. En lo que respecta a Travis CI, es solo otro proyecto de Java - Clojure se trata efectivamente como una biblioteca Java adicional desde la perspectiva del proceso de compilación. Aquí está la travis.yml config:

language: java 
jdk: 
    - oraclejdk7 
    - openjdk7 
    - openjdk6 

aquí es un proyecto de código abierto ejemplo usando este enfoque:

0

Lambda CD es probablemente lo que usted desee. Le permite escribir construcciones y tuberías de entrega en clojure. Es relativamente nuevo y parece ser cada vez más popular. http://www.lambda.cd/

Cuestiones relacionadas