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
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.
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.
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
@Chas, el enlace a "la forma algo inteligente" está roto –
¿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
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:
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/
- 1. Integración continua: mejores prácticas
- 2. Subversion con integración continua
- 3. Integración continua y QA
- 4. JSTestDriver e integración continua
- 5. integración continua con mysql
- 6. integración continua python
- 7. Integración continua con ASP.Net MVC
- 8. Configuraciones de compilación de integración continua
- 9. Creaciones limpias en integración continua
- 10. UI Testing Framework + Integración continua?
- 11. Integración continua para proyectos Xcode?
- 12. Windows Azure e integración continua
- 13. ¿Qué cadenas de herramientas existen para la integración continua con C++?
- 14. ¿Qué es la integración continua?
- 15. ¿Cómo migrar de "Integración Arcana" a Integración Continua?
- 16. ¿Qué software de integración continua usa?
- 17. ¿Qué marco de integración continua para Perl?
- 18. Sistema de integración continua para Python Codebase
- 19. ¿Qué biblioteca de integración continua usar?
- 20. Sistema de integración continua para Delphi
- 21. Configuración de la integración continua con SVN
- 22. Integración continua de Git en Windows
- 23. Integración continua para Android a través de TeamCity. ¿Herramientas preferidas?
- 24. Hudson o Teamcity para una integración continua?
- 25. C#/NET - integración continua y FTP despliegue
- 26. Integración continua con Teamcity y Clearcase
- 27. Integración continua (Hudson/Jenkins) y programación R
- 28. Integración continua con .net y svn
- 29. Integración continua frente a compilaciones nocturnas
- 30. ¿Existen variables diferidas en Clojure?
Entonces ... ¿Leiningan es una opción para construir directamente? Está sugiriendo que debo envolver Leiningan en maven/ant/gradle – jayunit100
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